EHS/include/ehs/BaseObj.h

52 lines
883 B
C
Raw Normal View History

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
};
}