#pragma once

#include "ehs/EHS.h"

namespace ehs
{
	class EHS_LIB_IO BaseMutex
	{
	protected:
		bool initialized;
		bool locked;

	public:
		virtual ~BaseMutex();

		BaseMutex();

		BaseMutex(const BaseMutex& mutex);

		BaseMutex& operator=(const BaseMutex& mutex);

		virtual void Initialize();

		virtual void UnInitialize();

		bool IsInitialized() const;

		virtual void Lock();

		virtual void Unlock();

		bool IsLocked() const;
	};
}