#pragma once

#include "ehs/Str.h"

namespace ehs
{
	class EHS_LIB_IO BaseOpen
	{
	protected:
		Str_8 filePath;

	public:
		BaseOpen();

		BaseOpen(Str_8 filePath);

		BaseOpen(BaseOpen&& bo) noexcept;

		BaseOpen(const BaseOpen& bo);

		BaseOpen& operator=(BaseOpen&& bo) noexcept;

		BaseOpen& operator=(const BaseOpen& bo);

		virtual void Initialize() = 0;

		virtual void Release() = 0;

		virtual void* Retrieve(Str_8 symbol) = 0;

		Str_8 GetFilePath() const;

		virtual bool IsInitialize() const = 0;
	};
}