MCPcopy Create free account
hub / github.com/Tencent/UnLua / FClassDesc

Method FClassDesc

Plugins/UnLua/Source/UnLua/Private/ReflectionUtils/ClassDesc.cpp:27–49  ·  view source on GitHub ↗

* Class descriptor constructor */

Source from the content-addressed store, hash-verified

25 * Class descriptor constructor
26 */
27FClassDesc::FClassDesc(UStruct* InStruct, const FString& InName)
28 : Struct(InStruct), ClassName(InName), UserdataPadding(0), Size(0), FunctionCollection(nullptr)
29{
30 RawStructPtr = InStruct;
31 bIsScriptStruct = InStruct->IsA(UScriptStruct::StaticClass());
32 bIsClass = InStruct->IsA(UClass::StaticClass());
33 bIsInterface = bIsClass && static_cast<UClass*>(InStruct)->HasAnyClassFlags(CLASS_Interface) && InStruct != UInterface::StaticClass();
34 bIsNative = InStruct->IsNative();
35
36 if (bIsClass)
37 {
38 Size = Struct->GetStructureSize();
39 FunctionCollection = GDefaultParamCollection.Find(*ClassName);
40 }
41 else if (bIsScriptStruct)
42 {
43 UScriptStruct* ScriptStruct = AsScriptStruct();
44 UScriptStruct::ICppStructOps* CppStructOps = ScriptStruct->GetCppStructOps();
45 int32 Alignment = CppStructOps ? CppStructOps->GetAlignment() : ScriptStruct->GetMinAlignment();
46 Size = CppStructOps ? CppStructOps->GetSize() : ScriptStruct->GetStructureSize();
47 UserdataPadding = CalcUserdataPadding(Alignment); // calculate padding size for userdata
48 }
49}
50
51/**
52 * Register a field of this class

Callers

nothing calls this directly

Calls 5

IsNativeMethod · 0.80
CalcUserdataPaddingFunction · 0.50
FindMethod · 0.45
GetAlignmentMethod · 0.45
GetSizeMethod · 0.45

Tested by

no test coverage detected