forked from NaiJi/project-kyoku
chore: Inverse if-else tree in Timeline
This commit is contained in:
parent
5af1b94e22
commit
1401e51918
|
@ -15,7 +15,9 @@ template <class TNote,
|
|||
class Timeline
|
||||
{
|
||||
public:
|
||||
explicit Timeline() : _current_offset(0) {}
|
||||
explicit Timeline() : _current_offset(0)
|
||||
{
|
||||
}
|
||||
|
||||
typedef typename std::set<TNote *>::const_iterator Iterator;
|
||||
|
||||
|
@ -24,30 +26,30 @@ class Timeline
|
|||
_current_offset = offset;
|
||||
expire(_top_note);
|
||||
|
||||
if (!_timeline.empty())
|
||||
if (_timeline.empty())
|
||||
return;
|
||||
|
||||
Iterator head_iterator = _timeline.begin();
|
||||
|
||||
while (!isExpired(head_iterator))
|
||||
{
|
||||
Iterator head_iterator = _timeline.begin();
|
||||
|
||||
while (!isExpired(head_iterator))
|
||||
if ((*head_iterator)->getPerfectOffset() >= offset)
|
||||
{
|
||||
if ((*head_iterator)->getPerfectOffset() >= offset)
|
||||
{
|
||||
Iterator pre_head = head_iterator;
|
||||
--pre_head;
|
||||
Iterator pre_head = head_iterator;
|
||||
--pre_head;
|
||||
|
||||
_top_note =
|
||||
!isExpired(pre_head) && (*pre_head)->isActive(offset)
|
||||
? pre_head
|
||||
: head_iterator;
|
||||
break;
|
||||
}
|
||||
|
||||
++head_iterator;
|
||||
_top_note =
|
||||
!isExpired(pre_head) && (*pre_head)->isActive(offset)
|
||||
? pre_head
|
||||
: head_iterator;
|
||||
break;
|
||||
}
|
||||
|
||||
if (isExpired(_top_note))
|
||||
_top_note = _timeline.begin();
|
||||
++head_iterator;
|
||||
}
|
||||
|
||||
if (isExpired(_top_note))
|
||||
_top_note = _timeline.begin();
|
||||
}
|
||||
|
||||
void setNotes(const std::set<TNote *, NotePtrComparator> ¬es)
|
||||
|
@ -128,11 +130,20 @@ class Timeline
|
|||
iterator = _timeline.end();
|
||||
}
|
||||
|
||||
inline Iterator getTopNote() const noexcept { return _top_note; }
|
||||
inline Iterator getTopNote() const noexcept
|
||||
{
|
||||
return _top_note;
|
||||
}
|
||||
|
||||
inline Iterator begin() const noexcept { return _timeline.begin(); }
|
||||
inline Iterator begin() const noexcept
|
||||
{
|
||||
return _timeline.begin();
|
||||
}
|
||||
|
||||
inline Iterator end() const noexcept { return _timeline.end(); }
|
||||
inline Iterator end() const noexcept
|
||||
{
|
||||
return _timeline.end();
|
||||
}
|
||||
|
||||
private:
|
||||
std::set<TNote *, NotePtrComparator> _timeline;
|
||||
|
|
Loading…
Reference in New Issue