add channel count difference operator.

This commit is contained in:
Robin Gareus 2016-04-03 18:27:32 +02:00
parent 4071e77314
commit fe1985c3e3

View file

@ -147,6 +147,19 @@ public:
return ret;
}
/** underflow safe subtraction */
ChanCount operator-(const ChanCount& other) const {
ChanCount ret;
for (DataType::iterator t = DataType::begin(); t != DataType::end(); ++t) {
if (get(*t) < other.get(*t)) {
ret.set(*t, 0);
} else {
ret.set(*t, get(*t) - other.get(*t));
}
}
return ret;
}
ChanCount operator*(const unsigned int factor) const {
ChanCount ret;
for (DataType::iterator t = DataType::begin(); t != DataType::end(); ++t) {
@ -155,6 +168,18 @@ public:
return ret;
}
/** underflow safe subtraction */
ChanCount& operator-=(const ChanCount& other) {
for (DataType::iterator t = DataType::begin(); t != DataType::end(); ++t) {
if (_counts[*t] < other._counts[*t]) {
_counts[*t] = 0;
} else {
_counts[*t] -= other._counts[*t];
}
}
return *this;
}
ChanCount& operator+=(const ChanCount& other) {
for (DataType::iterator t = DataType::begin(); t != DataType::end(); ++t) {
_counts[*t] += other._counts[*t];