Allow NumericId to be copyable
This commit is contained in:
parent
8b9affad0d
commit
ce43bb39ff
2 changed files with 20 additions and 9 deletions
|
|
@ -18,24 +18,35 @@ struct NumericId {
|
||||||
constexpr NumericId() = default;
|
constexpr NumericId() = default;
|
||||||
|
|
||||||
explicit constexpr NumericId(int number)
|
explicit constexpr NumericId(int number)
|
||||||
: number(number)
|
: number_(number)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
constexpr bool valid() const noexcept
|
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
|
constexpr bool operator==(NumericId other) const noexcept
|
||||||
{
|
{
|
||||||
return number == other.number;
|
return number_ == other.number_;
|
||||||
}
|
}
|
||||||
|
|
||||||
constexpr bool operator!=(NumericId other) const noexcept
|
constexpr bool operator!=(NumericId other) const noexcept
|
||||||
{
|
{
|
||||||
return number != other.number;
|
return number_ != other.number_;
|
||||||
}
|
}
|
||||||
|
|
||||||
const int number = -1;
|
private:
|
||||||
|
int number_ = -1;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1188,10 +1188,10 @@ const sfz::Region* sfz::Synth::getRegionById(NumericId<Region> id) const noexcep
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
// search a sequence of ordered identifiers with potential gaps
|
// 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);
|
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;
|
--index;
|
||||||
|
|
||||||
return (regions[index]->getId() == id) ? regions[index].get() : nullptr;
|
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;
|
return nullptr;
|
||||||
|
|
||||||
// search a sequence of ordered identifiers with potential gaps
|
// 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);
|
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;
|
--index;
|
||||||
|
|
||||||
return (voices[index]->getId() == id) ? voices[index].get() : nullptr;
|
return (voices[index]->getId() == id) ? voices[index].get() : nullptr;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue