2023-12-17 03:29:08 -08:00
|
|
|
#pragma once
|
|
|
|
|
2023-12-18 02:13:20 -08:00
|
|
|
#include "Types.h"
|
2023-12-17 03:29:08 -08:00
|
|
|
#include "Type.h"
|
|
|
|
|
2023-12-17 15:56:13 -08:00
|
|
|
namespace ehs
|
2023-12-17 03:29:08 -08:00
|
|
|
{
|
|
|
|
class BaseObj
|
|
|
|
{
|
|
|
|
private:
|
2023-12-18 02:13:20 -08:00
|
|
|
Type* hierarchy;
|
|
|
|
UInt_64 hierarchySize;
|
2023-12-17 03:29:08 -08:00
|
|
|
|
|
|
|
public:
|
|
|
|
virtual ~BaseObj();
|
|
|
|
|
|
|
|
BaseObj();
|
|
|
|
|
2023-12-18 02:13:20 -08:00
|
|
|
BaseObj(BaseObj&& base) noexcept;
|
|
|
|
|
2023-12-17 03:29:08 -08:00
|
|
|
BaseObj(const BaseObj& base);
|
|
|
|
|
2023-12-18 02:13:20 -08:00
|
|
|
BaseObj& operator=(BaseObj&& base) noexcept;
|
2023-12-17 03:29:08 -08:00
|
|
|
|
|
|
|
BaseObj& operator=(const BaseObj& base);
|
|
|
|
|
|
|
|
bool operator==(const BaseObj& base) const;
|
|
|
|
|
|
|
|
bool operator!=(const BaseObj& base) const;
|
|
|
|
|
2023-12-18 02:13:20 -08:00
|
|
|
const Type* GetHierarchy() const;
|
2023-12-17 03:29:08 -08:00
|
|
|
|
2023-12-18 02:13:20 -08:00
|
|
|
UInt_64 GetHierarchySize() const;
|
2023-12-17 03:29:08 -08:00
|
|
|
|
2023-12-18 02:13:20 -08:00
|
|
|
bool HasType(UInt_64 typeHashId) const;
|
2023-12-17 03:29:08 -08:00
|
|
|
|
2023-12-18 02:13:20 -08:00
|
|
|
bool HasType(const Char_8* typeId) const;
|
2023-12-17 03:29:08 -08:00
|
|
|
|
2023-12-18 02:13:20 -08:00
|
|
|
Type GetType() const;
|
2023-12-17 03:29:08 -08:00
|
|
|
|
2023-12-18 02:13:20 -08:00
|
|
|
UInt_64 GetTypeIdSize() const;
|
2023-12-17 03:29:08 -08:00
|
|
|
|
|
|
|
const Char_8* GetTypeId() const;
|
|
|
|
|
|
|
|
UInt_64 GetTypeHashId() const;
|
|
|
|
|
|
|
|
virtual BaseObj* Clone() const;
|
|
|
|
|
2023-12-18 02:13:20 -08:00
|
|
|
protected:
|
|
|
|
void AddType(const Char_8* id);
|
2023-12-17 03:29:08 -08:00
|
|
|
};
|
|
|
|
}
|