29 for (
size_t ii = 0, nn = group.NChannels(); ii < nn; ++ii)
30 if (group.GetChannel(ii).get() ==
this) {
55 return std::accumulate(range.first, range.second,
56 std::numeric_limits<double>::max(),
57 [](
double acc,
const auto &pInterval){
58 return std::min(acc, pInterval->Start()); });
66 return std::accumulate(range.first, range.second,
67 std::numeric_limits<double>::lowest(),
68 [](
double acc,
const auto &pInterval){
69 return std::max(acc, pInterval->End()); });
Abstract class ChannelGroup with two discrete iterable dimensions, channels and intervals; subclasses...
double GetEndTime() const
Get the maximum of End() values of intervals, or 0 when none.
double GetStartTime() const
Get the minimum of Start() values of intervals, or 0 when none.
IteratorRange< IntervalIterator< IntervalType > > Intervals()
Get range of intervals with mutative access.
virtual ~ChannelGroupInterval()
ChannelGroup & GetChannelGroup()
Channel object's lifetime is assumed to be nested in its Track's.
virtual ChannelGroup & DoGetChannelGroup() const =0
Subclass must override.
size_t GetChannelIndex() const
virtual ~ChannelInterval()
~WideChannelGroupInterval() override