24 #include "lib/split-splice.hpp" 70 ASSERT (!start or !after or start != after);
71 using Iter =
typename list<Segment>::iterator;
73 auto getStart = [](Iter elm) ->
Time {
return elm->start(); };
74 auto getAfter = [](Iter elm) ->
Time {
return elm->after(); };
75 auto createSeg= [&](Iter pos,
Time start,
Time after) -> Iter {
return segments_.emplace (pos,
TimeSpan{start, after}, move(modelLink)); };
76 auto emptySeg = [&](Iter pos,
Time start,
Time after) -> Iter {
return segments_.emplace (pos,
TimeSpan{start, after}); };
77 auto cloneSeg = [&](Iter pos,
Time start,
Time after, Iter src) -> Iter {
return segments_.emplace (pos, *src,
TimeSpan{start, after}); };
78 auto discard = [&](Iter pos, Iter after) -> Iter {
return segments_.erase (pos,after); };
91 splicer.determineRelations();
92 auto [s,n,e] = splicer.performSplitSplice();
Segment const & splitSplice(OptTime start, OptTime after, engine::ExitNodes &&modelLink=ExitNodes{})
rework the existing Segmentation to include a new Segment as specified
Steam-Layer implementation namespace root.
Lumiera's internal time value datatype.
list< Segment > segments_
segments of the engine in ordered sequence.
Lumiera error handling (C++ interface).
For the purpose of building and rendering, the fixture (for each timeline) is partitioned such that e...
static const Time NEVER
border condition marker value. NEVER >= any time value
Part of the Fixture datastructure to manage time segments of constant structure.
Implementation of »SplitSplice« algorithm.
A time interval anchored at a specific point in time.
a family of time value like entities and their relationships.
virtual ~Segmentation()
this is an interface