'libs/evoral' - For each of the NNNN_lower_bound() functions (3 in total) add a non-const iterator to supplement the existing const_iterator
This commit is contained in:
parent
af51ef383d
commit
bc34d6f731
@ -179,7 +179,7 @@ public:
|
|||||||
OverlapPitchResolution overlap_pitch_resolution() const { return _overlap_pitch_resolution; }
|
OverlapPitchResolution overlap_pitch_resolution() const { return _overlap_pitch_resolution; }
|
||||||
void set_overlap_pitch_resolution(OverlapPitchResolution opr);
|
void set_overlap_pitch_resolution(OverlapPitchResolution opr);
|
||||||
|
|
||||||
void set_notes (const Sequence<Time>::Notes& n);
|
void set_notes (const typename Sequence<Time>::Notes& n);
|
||||||
|
|
||||||
typedef boost::shared_ptr< Event<Time> > SysExPtr;
|
typedef boost::shared_ptr< Event<Time> > SysExPtr;
|
||||||
typedef boost::shared_ptr<const Event<Time> > constSysExPtr;
|
typedef boost::shared_ptr<const Event<Time> > constSysExPtr;
|
||||||
@ -269,10 +269,16 @@ public:
|
|||||||
|
|
||||||
const const_iterator& end() const { return _end_iter; }
|
const const_iterator& end() const { return _end_iter; }
|
||||||
|
|
||||||
|
// CONST iterator implementations (x3)
|
||||||
typename Notes::const_iterator note_lower_bound (Time t) const;
|
typename Notes::const_iterator note_lower_bound (Time t) const;
|
||||||
typename PatchChanges::const_iterator patch_change_lower_bound (Time t) const;
|
typename PatchChanges::const_iterator patch_change_lower_bound (Time t) const;
|
||||||
typename SysExes::const_iterator sysex_lower_bound (Time t) const;
|
typename SysExes::const_iterator sysex_lower_bound (Time t) const;
|
||||||
|
|
||||||
|
// NON-CONST iterator implementations (x3)
|
||||||
|
typename Notes::iterator note_lower_bound (Time t);
|
||||||
|
typename PatchChanges::iterator patch_change_lower_bound (Time t);
|
||||||
|
typename SysExes::iterator sysex_lower_bound (Time t);
|
||||||
|
|
||||||
bool control_to_midi_event(boost::shared_ptr< Event<Time> >& ev,
|
bool control_to_midi_event(boost::shared_ptr< Event<Time> >& ev,
|
||||||
const ControlIterator& iter) const;
|
const ControlIterator& iter) const;
|
||||||
|
|
||||||
|
@ -1201,11 +1201,13 @@ Sequence<Time>::overlaps_unlocked (const NotePtr& note, const NotePtr& without)
|
|||||||
|
|
||||||
template<typename Time>
|
template<typename Time>
|
||||||
void
|
void
|
||||||
Sequence<Time>::set_notes (const Sequence<Time>::Notes& n)
|
Sequence<Time>::set_notes (const typename Sequence<Time>::Notes& n)
|
||||||
{
|
{
|
||||||
_notes = n;
|
_notes = n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CONST iterator implementations (x3)
|
||||||
|
|
||||||
/** Return the earliest note with time >= t */
|
/** Return the earliest note with time >= t */
|
||||||
template<typename Time>
|
template<typename Time>
|
||||||
typename Sequence<Time>::Notes::const_iterator
|
typename Sequence<Time>::Notes::const_iterator
|
||||||
@ -1239,6 +1241,41 @@ Sequence<Time>::sysex_lower_bound (Time t) const
|
|||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NON-CONST iterator implementations (x3)
|
||||||
|
|
||||||
|
/** Return the earliest note with time >= t */
|
||||||
|
template<typename Time>
|
||||||
|
typename Sequence<Time>::Notes::iterator
|
||||||
|
Sequence<Time>::note_lower_bound (Time t)
|
||||||
|
{
|
||||||
|
NotePtr search_note(new Note<Time>(0, t, 0, 0, 0));
|
||||||
|
typename Sequence<Time>::Notes::iterator i = _notes.lower_bound(search_note);
|
||||||
|
assert(i == _notes.end() || (*i)->time() >= t);
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Return the earliest patch change with time >= t */
|
||||||
|
template<typename Time>
|
||||||
|
typename Sequence<Time>::PatchChanges::iterator
|
||||||
|
Sequence<Time>::patch_change_lower_bound (Time t)
|
||||||
|
{
|
||||||
|
PatchChangePtr search (new PatchChange<Time> (t, 0, 0, 0));
|
||||||
|
typename Sequence<Time>::PatchChanges::iterator i = _patch_changes.lower_bound (search);
|
||||||
|
assert (i == _patch_changes.end() || musical_time_greater_or_equal_to ((*i)->time(), t));
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Return the earliest sysex with time >= t */
|
||||||
|
template<typename Time>
|
||||||
|
typename Sequence<Time>::SysExes::iterator
|
||||||
|
Sequence<Time>::sysex_lower_bound (Time t)
|
||||||
|
{
|
||||||
|
SysExPtr search (new Event<Time> (0, t));
|
||||||
|
typename Sequence<Time>::SysExes::iterator i = _sysexes.lower_bound (search);
|
||||||
|
assert (i == _sysexes.end() || (*i)->time() >= t);
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
template<typename Time>
|
template<typename Time>
|
||||||
void
|
void
|
||||||
Sequence<Time>::get_notes (Notes& n, NoteOperator op, uint8_t val, int chan_mask) const
|
Sequence<Time>::get_notes (Notes& n, NoteOperator op, uint8_t val, int chan_mask) const
|
||||||
@ -1393,4 +1430,3 @@ Sequence<Time>::dump (ostream& str) const
|
|||||||
template class Sequence<Evoral::MusicalTime>;
|
template class Sequence<Evoral::MusicalTime>;
|
||||||
|
|
||||||
} // namespace Evoral
|
} // namespace Evoral
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user