38#define CE_REFLECTABLE_CLASS \
40 CE_DISABLE_WARNING_PUSH \
41 CE_DISABLE_WARNING_MISSING_OVERRIDE \
42 [[nodiscard]] virtual ::CeresEngine::ClassInfo getClassInfo() noexcept; \
43 [[nodiscard]] virtual ::CeresEngine::ClassInfo getClassInfo() const noexcept; \
44 CE_DISABLE_WARNING_POP \
47#define CE_REFLECTABLE_STRUCT \
49 CE_DISABLE_WARNING_PUSH \
50 CE_DISABLE_WARNING_MISSING_OVERRIDE \
51 [[nodiscard]] virtual ::CeresEngine::ClassInfo getClassInfo() const noexcept; \
52 [[nodiscard]] virtual ::CeresEngine::ClassInfo getClassInfo() noexcept; \
53 CE_DISABLE_WARNING_POP \
An interface that must be implemented by types that wish to expose richer reflection data.
Definition IReflectable.hpp:29
virtual ClassInfo getClassInfo() noexcept=0
virtual ~IReflectable() noexcept=default
Definition Application.hpp:19
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25
A structure that contains type information for a class.
Definition IReflectable.hpp:15
TypeID typeID
The class type ID.
Definition IReflectable.hpp:18
const void * instance
A pointer to the instance.
Definition IReflectable.hpp:21
constexpr ClassInfo(const TypeID typeID, const void *instance)
Definition IReflectable.hpp:24
constexpr ClassInfo()=default