diff --git a/src/sfizz/CCMap.h b/src/sfizz/CCMap.h index a71ba2f4..09e8830c 100644 --- a/src/sfizz/CCMap.h +++ b/src/sfizz/CCMap.h @@ -44,7 +44,7 @@ public: */ const ValueType& getWithDefault(int index) const noexcept { - auto it = absl::c_lower_bound(container, index, CompareCC{}); + auto it = absl::c_lower_bound(container, index, CCValuePairComparator{}); if (it == container.end() || it->cc != index) { return defaultValue; } else { @@ -60,7 +60,7 @@ public: */ ValueType& operator[](const int& index) noexcept { - auto it = absl::c_lower_bound(container, index, CompareCC{}); + auto it = absl::c_lower_bound(container, index, CCValuePairComparator{}); if (it == container.end() || it->cc != index) { auto inserted = container.insert(it, { index, defaultValue }); return inserted->value; @@ -85,7 +85,7 @@ public: */ bool contains(int index) const noexcept { - return absl::c_binary_search(container, index, CompareCC{}); + return absl::c_binary_search(container, index, CCValuePairComparator{}); } typename std::vector>::const_iterator begin() const { return container.cbegin(); } typename std::vector>::const_iterator end() const { return container.cend(); } diff --git a/src/sfizz/SfzHelpers.h b/src/sfizz/SfzHelpers.h index eb05e6bc..4a69ba95 100644 --- a/src/sfizz/SfzHelpers.h +++ b/src/sfizz/SfzHelpers.h @@ -24,8 +24,8 @@ struct CCValuePair { ValueType value; }; -template -struct CompareCC { +template +struct CCValuePairComparator { bool operator()(const CCValuePair& valuePair, const int& cc) { return (valuePair.cc < cc); @@ -42,6 +42,24 @@ struct CompareCC { } }; +template +struct CCValuePairComparator { + bool operator()(const CCValuePair& valuePair, const ValueType& value) + { + return (valuePair.value < value); + } + + bool operator()(const ValueType& value, const CCValuePair& valuePair) + { + return (value < valuePair.value); + } + + bool operator()(const CCValuePair& lhs, const CCValuePair& rhs) + { + return (lhs.value < rhs.value); + } +}; + /** * @brief Converts cents to a pitch ratio *