#pragma once #include "../EHS.h" #include "../Str.h" namespace lwe { class BaseSemaphore { private: Str_8 name; UInt_32 initial; public: BaseSemaphore(); BaseSemaphore(Str_8 name, const UInt_32 initial); BaseSemaphore(const UInt_32 initial); BaseSemaphore(BaseSemaphore&& sem) noexcept; BaseSemaphore(const BaseSemaphore& sem); BaseSemaphore& operator=(BaseSemaphore&& sem) noexcept; BaseSemaphore& operator=(const BaseSemaphore& sem); virtual void Initialize() = 0; virtual void Release() = 0; virtual void Signal(const UInt_32 inc) = 0; virtual bool Wait(const UInt_32 timeout) = 0; Str_8 GetName() const; UInt_32 GetInitial() const; virtual bool IsValid() const = 0; }; }