#ifndef EAX_FX_SLOT_INDEX_INCLUDED #define EAX_FX_SLOT_INDEX_INCLUDED #include #include "eax_api.h" using EaxFxSlotIndexValue = std::size_t; class EaxFxSlotIndex { public: EaxFxSlotIndex() noexcept = default; EaxFxSlotIndex( EaxFxSlotIndexValue index); EaxFxSlotIndex( const EaxFxSlotIndex& rhs) noexcept; void operator=( EaxFxSlotIndexValue index); void operator=( const GUID& guid); void operator=( const EaxFxSlotIndex& rhs) noexcept; bool has_value() const noexcept; EaxFxSlotIndexValue get() const; void reset() noexcept; void set( EaxFxSlotIndexValue index); void set( const GUID& guid); operator EaxFxSlotIndexValue() const; private: [[noreturn]] static void fail( const char* message); bool has_value_{}; EaxFxSlotIndexValue value_{}; }; // EaxFxSlotIndex bool operator==( const EaxFxSlotIndex& lhs, const EaxFxSlotIndex& rhs) noexcept; bool operator!=( const EaxFxSlotIndex& lhs, const EaxFxSlotIndex& rhs) noexcept; #endif // !EAX_FX_SLOT_INDEX_INCLUDED