5#if WITH_VERSE_VM || defined(__INTELLISENSE__)
41#define DECLARE_PRIMITIVE_TYPE(Name) \
42 struct V##Name##Type : VType \
44 DECLARE_DERIVED_VCPPCLASSINFO(COREUOBJECT_API, VType); \
45 COREUOBJECT_API static TGlobalTrivialEmergentTypePtr<&StaticCppClassInfo> GlobalTrivialEmergentType; \
47 COREUOBJECT_API static TGlobalHeapPtr<V##Name##Type> Singleton; \
49 static constexpr bool SerializeIdentity = false; \
50 static void SerializeLayout(FAllocationContext Context, V##Name##Type*& This, FStructuredArchiveVisitor& Visitor); \
51 void SerializeImpl(FAllocationContext Context, FStructuredArchiveVisitor& Visitor); \
53 static void Initialize(FAllocationContext Context); \
55 COREUOBJECT_API TSharedPtr<FJsonValue> ToJSONImpl(FRunningContext Context, EValueJSONFormat Format, TMap<const void*, EVisitState>& VisitedObjects, const VerseVMToJsonCallback& Callback, uint32 RecursionDepth, FJsonObject* Defs); \
56 COREUOBJECT_API VValue FromJSONImpl(FRunningContext Context, const FJsonValue& JsonValue, EValueJSONFormat Format); \
59 V##Name##Type(FAllocationContext Context); \
62#define DECLARE_STRUCTURAL_TYPE(Name, Fields) \
63 struct V##Name##Type : VType \
65 DECLARE_DERIVED_VCPPCLASSINFO(COREUOBJECT_API, VType); \
66 COREUOBJECT_API static TGlobalTrivialEmergentTypePtr<&StaticCppClassInfo> GlobalTrivialEmergentType; \
68 TWriteBarrier<VValue> Fields(DECLARE_STRUCTURAL_TYPE_FIELD); \
70 static V##Name##Type& New(FAllocationContext Context, Fields(DECLARE_STRUCTURAL_TYPE_PARAM)) \
72 return *new (Context.AllocateFastCell(sizeof(V##Name##Type))) V##Name##Type(Context, Fields(NAME_STRUCTURAL_TYPE_PARAM)); \
75 static constexpr bool SerializeIdentity = false; \
76 static void SerializeLayout(FAllocationContext Context, V##Name##Type*& This, FStructuredArchiveVisitor& Visitor); \
77 void SerializeImpl(FAllocationContext Context, FStructuredArchiveVisitor& Visitor); \
79 COREUOBJECT_API TSharedPtr<FJsonValue> ToJSONImpl(FRunningContext Context, EValueJSONFormat Format, TMap<const void*, EVisitState>& VisitedObjects, const VerseVMToJsonCallback& Callback, uint32 RecursionDepth, FJsonObject* Defs); \
80 COREUOBJECT_API VValue FromJSONImpl(FRunningContext Context, const FJsonValue& JsonValue, EValueJSONFormat Format); \
83 V##Name##Type(FAllocationContext& Context, Fields(DECLARE_STRUCTURAL_TYPE_PARAM), VEmergentType* EmergentType) \
84 : VType(Context, EmergentType) \
85 , Fields(INIT_STRUCTURAL_TYPE_FIELD) \
90 V##Name##Type(FAllocationContext& Context, Fields(DECLARE_STRUCTURAL_TYPE_PARAM)) \
91 : V##Name##Type(Context, Fields(NAME_STRUCTURAL_TYPE_PARAM), &GlobalTrivialEmergentType.Get(Context)) \
95#define DECLARE_STRUCTURAL_TYPE_FIELD(Name) Name
96#define DECLARE_STRUCTURAL_TYPE_PARAM(Name) VValue In##Name
97#define NAME_STRUCTURAL_TYPE_PARAM(Name) In##Name
98#define INIT_STRUCTURAL_TYPE_FIELD(Name) Name(Context, In##Name)
109#define TYPE_FIELDS(Field) Field(PositiveType)
113#define TYPE_FIELDS(Field) Field(ElementType)
117#define TYPE_FIELDS(Field) Field(ElementType)
121#define TYPE_FIELDS(Field) Field(KeyType), Field(ValueType)
125#define TYPE_FIELDS(Field) Field(ValueType)
131#define TYPE_FIELDS(Field) Field(ValueType)
135#define TYPE_FIELDS(Field) Field(SuperType)
139#define TYPE_FIELDS(Field) Field(SuperType)
146#undef DECLARE_PRIMITIVE_TYPE
147#undef DECLARE_STRUCTURAL_TYPE
148#undef DECLARE_STRUCTURAL_TYPE_FIELD
149#undef DECLARE_STRUCTURAL_TYPE_PARAM
150#undef NAME_STRUCTURAL_TYPE_PARAM
151#undef INIT_STRUCTURAL_TYPE_FIELD
171 VMapType(FAllocationContext&
Context, VValue KeyType, VValue ValueType)
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
T * New(FMemStackBase &Mem, int32 Count=1, int32 Align=DEFAULT_ALIGNMENT)
Definition MemStack.h:259
Definition JsonObject.h:23
Definition JsonValue.h:22
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
FORCEINLINE T * Get(const FObjectPtr &ObjectPtr)
Definition ObjectPtr.h:426
bool SerializeImpl(const UScriptStruct *InSourceEventType, const void *InSourceEventData, FLiveLinkSerializedFrameData &OutSerializedData)
Definition LiveLinkCompression.cpp:126