KarmaEngine
Game Engine for practical learning and research purposes
Loading...
Searching...
No Matches
GFrameworkMacros.h
Go to the documentation of this file.
1
10
11#pragma once
12
13enum EInternal {EC_InternalUseOnlyConstructor};
14typedef void (*ClassConstructorType) (const Karma::FObjectInitializer&);
15
21#define DEFINE_DEFAULT_CONSTRUCTOR_CALL(TClass) \
22 static void __DefaultConstructor(const FObjectInitializer& X) { new((EInternal*)X.GetObj())TClass; }
23
24#define DEFINE_DEFAULT_OBJECT_INITIALIZER_CONSTRUCTOR_CALL(TClass) \
25 static void __DefaultConstructor(const FObjectInitializer& X) { new((EInternal*)X.GetObj())TClass(X); }
26
27/*-----------------------------------------------------------------------------
28 Class declaration macros.
29-----------------------------------------------------------------------------*/
30
45#define DECLARE_KARMA_CLASS(TClass, TSuperClass) \
46public: \
47 inline virtual void ShivaUObject() override\
48 {\
49 this->~TClass();\
50 } \
51 DEFINE_DEFAULT_CONSTRUCTOR_CALL(TClass) \
52 \
53 typedef TSuperClass Super;\
54 \
55 static UClass* StaticClass() \
56 { \
57 UClass* returnClass_##TClass = nullptr; \
58 if(strcmp(#TClass, #TSuperClass) != 0) \
59 { \
60 GetPrivateStaticClassBody( \
61 "GeneralPackage", \
62 #TClass, \
63 returnClass_##TClass, \
64 sizeof(TClass), \
65 alignof(TClass), \
66 (ClassConstructorType)InternalConstructor<TClass>, \
67 &TClass::Super::StaticClass \
68 ); \
69 } \
70 else \
71 { \
72 GetPrivateStaticClassBody( \
73 "GeneralPackage", \
74 "UObject", \
75 returnClass_##TClass, \
76 sizeof(UObject), \
77 alignof(UObject), \
78 (ClassConstructorType)InternalConstructor<TClass>, \
79 &TClass::Super::NullClass \
80 ); \
81 } \
82 return returnClass_##TClass; \
83 } \
84 inline static UClass* NullClass() \
85 { \
86 return nullptr; \
87 }
Internal class to finalize UObject creation (initialize properties) after the real C++ constructor is...
Definition UObjectGlobals.h:937