18 #ifndef ValueTimeLine_h
19 #define ValueTimeLine_h
60 void add(
double begin,
double end, T value) {
66 myValues[begin] = std::make_pair(
true, value);
67 myValues[end] = std::make_pair(
false, value);
71 typename TimedValueMap::iterator endIt =
myValues.find(end);
74 myValues[begin] = std::make_pair(
true, value);
82 myValues[begin] = std::make_pair(
true, value);
96 typename TimedValueMap::const_iterator it =
myValues.upper_bound(time);
99 return it->second.second;
113 typename TimedValueMap::const_iterator afterIt =
myValues.upper_bound(time);
118 return afterIt->second.first;
132 typename TimedValueMap::const_iterator afterLow =
myValues.upper_bound(low);
133 typename TimedValueMap::const_iterator afterHigh =
myValues.upper_bound(high);
135 if (afterLow == afterHigh) {
136 return afterLow->first;
146 void fillGaps(T value,
bool extendOverBoundaries =
false) {
147 for (
typename TimedValueMap::iterator it =
myValues.begin(); it !=
myValues.end(); ++it) {
148 if (!it->second.first) {
149 it->second.second = value;
152 if (extendOverBoundaries && !
myValues.empty()) {
153 typename TimedValueMap::iterator it = --
myValues.end();
154 if (!it->second.first) {
157 value =
myValues.begin()->second.second;
159 myValues[-1] = std::make_pair(
false, value);