Allow NumericId to be copyable

This commit is contained in:
Jean Pierre Cimalando 2020-07-26 21:23:10 +02:00
parent 8b9affad0d
commit ce43bb39ff
2 changed files with 20 additions and 9 deletions

View file

@ -18,24 +18,35 @@ struct NumericId {
constexpr NumericId() = default;
explicit constexpr NumericId(int number)
: number(number)
: number_(number)
{
}
constexpr bool valid() const noexcept
{
return number != -1;
return number_ != -1;
}
constexpr int number() const noexcept
{
return number_;
}
explicit operator bool() const noexcept
{
return valid();
}
constexpr bool operator==(NumericId other) const noexcept
{
return number == other.number;
return number_ == other.number_;
}
constexpr bool operator!=(NumericId other) const noexcept
{
return number != other.number;
return number_ != other.number_;
}
const int number = -1;
private:
int number_ = -1;
};

View file

@ -1188,10 +1188,10 @@ const sfz::Region* sfz::Synth::getRegionById(NumericId<Region> id) const noexcep
return nullptr;
// search a sequence of ordered identifiers with potential gaps
size_t index = static_cast<size_t>(id.number);
size_t index = static_cast<size_t>(id.number());
index = std::min(index, size - 1);
while (index > 0 && regions[index]->getId().number > id.number)
while (index > 0 && regions[index]->getId().number() > id.number())
--index;
return (regions[index]->getId() == id) ? regions[index].get() : nullptr;
@ -1205,10 +1205,10 @@ const sfz::Voice* sfz::Synth::getVoiceById(NumericId<Voice> id) const noexcept
return nullptr;
// search a sequence of ordered identifiers with potential gaps
size_t index = static_cast<size_t>(id.number);
size_t index = static_cast<size_t>(id.number());
index = std::min(index, size - 1);
while (index > 0 && voices[index]->getId().number > id.number)
while (index > 0 && voices[index]->getId().number() > id.number())
--index;
return (voices[index]->getId() == id) ? voices[index].get() : nullptr;