|
|
- #ifndef EAX_FX_SLOT_INDEX_INCLUDED
- #define EAX_FX_SLOT_INDEX_INCLUDED
-
-
- #include <cstddef>
-
- #include "aloptional.h"
- #include "eax_api.h"
-
-
- using EaxFxSlotIndexValue = std::size_t;
-
- class EaxFxSlotIndex : public al::optional<EaxFxSlotIndexValue>
- {
- public:
- using al::optional<EaxFxSlotIndexValue>::optional;
-
- EaxFxSlotIndex& operator=(const EaxFxSlotIndexValue &value) { set(value); return *this; }
- EaxFxSlotIndex& operator=(const GUID &guid) { set(guid); return *this; }
-
- void set(EaxFxSlotIndexValue index);
- void set(const GUID& guid);
-
- private:
- [[noreturn]]
- static void fail(const char *message);
- }; // EaxFxSlotIndex
-
- inline bool operator==(const EaxFxSlotIndex& lhs, const EaxFxSlotIndex& rhs) noexcept
- {
- if(lhs.has_value() != rhs.has_value())
- return false;
- if(lhs.has_value())
- return *lhs == *rhs;
- return true;
- }
-
- inline bool operator!=(const EaxFxSlotIndex& lhs, const EaxFxSlotIndex& rhs) noexcept
- { return !(lhs == rhs); }
-
- #endif // !EAX_FX_SLOT_INDEX_INCLUDED
|