#include "gtl_math_max.h" namespace gtl { namespace math { max::max(gtl::analog_data *data) : analog_value(data) { _name = "max"; } void max::before_copying_data(std::vector::iterator begin, std::vector::iterator end) { std::set::iterator>::iterator iter_remove_begin = _maxs.lower_bound(begin); std::set::iterator>::iterator iter_remove_end = _maxs.lower_bound(end); _maxs.erase(iter_remove_begin, iter_remove_end); } void max::after_copying_data(std::vector::iterator begin, std::vector::iterator end) { _maxs.insert(std::max_element(begin, end)); } void max::set_time(qreal value) { analog_value::set_time(value); _maxs.clear(); } void max::data_changed() { analog_value::data_changed(); if(_maxs.size()) { qreal max = **_maxs.begin(); for(std::set::iterator>::iterator it = _maxs.begin(); it != _maxs.end(); ++it) { if(**it > max) max = **it; } _value = max; emit value_changed(); } } } }