Skip to content

Commit 8d4cd7e

Browse files
committed
release 1.5.0
1 parent 38b61d0 commit 8d4cd7e

93 files changed

Lines changed: 1664 additions & 379 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

DataConfig/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
/Resources/ClangTidy.lua*
2+
*.raddbg*
23

34
# Visual Studio 2015 user specific files
45
.vs/

DataConfig/Source/DataConfigCore/Private/DataConfig/Automation/DcAutomationUtils.cpp

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,10 @@ FDcResult TestReadDatumEqual(const FDcPropertyDatum& LhsDatum, const FDcProperty
7777
{
7878
return DcOk();
7979
}
80-
case EDcDataEntry::Nil:
80+
case EDcDataEntry::None:
8181
{
82-
DC_TRY(LhsReader.ReadNil());
83-
DC_TRY(RhsReader.ReadNil());
82+
DC_TRY(LhsReader.ReadNone());
83+
DC_TRY(RhsReader.ReadNone());
8484
break;
8585
}
8686
case EDcDataEntry::Bool:
@@ -232,6 +232,18 @@ FDcResult TestReadDatumEqual(const FDcPropertyDatum& LhsDatum, const FDcProperty
232232
DC_TRY(RhsReader.ReadSetEnd());
233233
break;
234234
}
235+
case EDcDataEntry::OptionalRoot:
236+
{
237+
DC_TRY(LhsReader.ReadOptionalRoot());
238+
DC_TRY(RhsReader.ReadOptionalRoot());
239+
break;
240+
}
241+
case EDcDataEntry::OptionalEnd:
242+
{
243+
DC_TRY(LhsReader.ReadOptionalEnd());
244+
DC_TRY(RhsReader.ReadOptionalEnd());
245+
break;
246+
}
235247
case EDcDataEntry::ObjectReference:
236248
{
237249
UObject* Lhs;

DataConfig/Source/DataConfigCore/Private/DataConfig/Deserialize/DcDeserializerSetup.cpp

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@
99
#include "DataConfig/Deserialize/Handlers/MsgPack/DcMsgPackTransientDeserializers.h"
1010
#include "UObject/UnrealType.h"
1111
#include "UObject/TextProperty.h"
12+
#include "Misc/EngineVersionComparison.h"
13+
#if !UE_VERSION_OLDER_THAN(5, 4, 0)
14+
#include "UObject/PropertyOptional.h"
15+
#endif // !UE_VERSION_OLDER_THAN(5, 4, 0)
1216

1317
void DcSetupJsonDeserializeHandlers(FDcDeserializer& Deserializer, EDcJsonDeserializeType Type)
1418
{
@@ -60,12 +64,16 @@ void DcSetupJsonDeserializeHandlers(FDcDeserializer& Deserializer, EDcJsonDeseri
6064
// Object
6165
Deserializer.AddDirectHandler(FObjectProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerObjectReferenceDeserialize));
6266
Deserializer.AddDirectHandler(FClassProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerClassReferenceDeserialize));
63-
#if ENGINE_MAJOR_VERSION == 5
67+
#if ENGINE_MAJOR_VERSION == 5 && ENGINE_MINOR_VERSION <= 3
6468
Deserializer.AddDirectHandler(FObjectPtrProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerObjectReferenceDeserialize));
6569
Deserializer.AddDirectHandler(FClassPtrProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerClassReferenceDeserialize));
66-
#endif //ENGINE_MAJOR_VERSION == 5
70+
#endif //ENGINE_MAJOR_VERSION == 5 && ENGINE_MINOR_VERSION <= 3
6771
Deserializer.AddDirectHandler(FWeakObjectProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerWeakObjectReferenceDeserialize));
6872

73+
#if !UE_VERSION_OLDER_THAN(5, 4, 0)
74+
Deserializer.AddDirectHandler(FOptionalProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerOptionalDeserialize));
75+
#endif // !UE_VERSION_OLDER_THAN(5, 4, 0)
76+
6977
if (Type == EDcJsonDeserializeType::Default)
7078
{
7179
Deserializer.AddDirectHandler(FSoftObjectProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerSoftObjectReferenceDeserialize));
@@ -99,9 +107,9 @@ void DcSetupPropertyPipeDeserializeHandlers(FDcDeserializer& Deserializer)
99107
Deserializer.AddDirectHandler(UClass::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerClassDeserialize));
100108

101109
Deserializer.AddDirectHandler(FObjectProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerClassDeserialize));
102-
#if ENGINE_MAJOR_VERSION == 5
110+
#if ENGINE_MAJOR_VERSION == 5 && ENGINE_MINOR_VERSION <= 3
103111
Deserializer.AddDirectHandler(FObjectPtrProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerClassDeserialize));
104-
#endif //ENGINE_MAJOR_VERSION == 5
112+
#endif //ENGINE_MAJOR_VERSION == 5 && ENGINE_MINOR_VERSION <= 3
105113

106114
Deserializer.AddDirectHandler(UScriptStruct::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerStructDeserialize));
107115
Deserializer.AddDirectHandler(FStructProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerStructDeserialize));
@@ -110,6 +118,10 @@ void DcSetupPropertyPipeDeserializeHandlers(FDcDeserializer& Deserializer)
110118
Deserializer.AddDirectHandler(FSetProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerSetDeserialize));
111119
Deserializer.AddDirectHandler(FMapProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerMapDeserialize));
112120

121+
#if !UE_VERSION_OLDER_THAN(5, 4, 0)
122+
Deserializer.AddDirectHandler(FOptionalProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerOptionalDeserialize));
123+
#endif // !UE_VERSION_OLDER_THAN(5, 4, 0)
124+
113125
DcPropertyUtils::VisitAllEffectivePropertyClass([&](FFieldClass* FieldClass) {
114126
if (!Deserializer.FieldClassDeserializerMap.Contains(FieldClass))
115127
Deserializer.AddDirectHandler(FieldClass, FDcDeserializeDelegate::CreateStatic(DcCommonHandlers::HandlerPipeScalarDeserialize));
@@ -136,6 +148,10 @@ void DcSetupMsgPackDeserializeHandlers(FDcDeserializer& Deserializer, EDcMsgPack
136148
Deserializer.AddDirectHandler(FArrayProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerArrayDeserialize));
137149
Deserializer.AddDirectHandler(FSetProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerArrayToSetDeserialize));
138150
Deserializer.AddDirectHandler(FMapProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(DcMsgPackHandlers::HandlerMapDeserialize));
151+
152+
#if !UE_VERSION_OLDER_THAN(5, 4, 0)
153+
Deserializer.AddDirectHandler(FOptionalProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerOptionalDeserialize));
154+
#endif // !UE_VERSION_OLDER_THAN(5, 4, 0)
139155

140156
// Struct
141157
Deserializer.AddDirectHandler(UScriptStruct::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerMapToStructDeserialize));
@@ -168,10 +184,10 @@ void DcSetupMsgPackDeserializeHandlers(FDcDeserializer& Deserializer, EDcMsgPack
168184
Deserializer.AddDirectHandler(FFieldPathProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerStringToFieldPathDeserialize));
169185
Deserializer.AddDirectHandler(FObjectProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerObjectReferenceDeserialize));
170186
Deserializer.AddDirectHandler(FClassProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerClassReferenceDeserialize));
171-
#if ENGINE_MAJOR_VERSION == 5
187+
#if ENGINE_MAJOR_VERSION == 5 && ENGINE_MINOR_VERSION <= 3
172188
Deserializer.AddDirectHandler(FObjectPtrProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerObjectReferenceDeserialize));
173189
Deserializer.AddDirectHandler(FClassPtrProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerClassReferenceDeserialize));
174-
#endif //ENGINE_MAJOR_VERSION == 5
190+
#endif //ENGINE_MAJOR_VERSION == 5 && ENGINE_MINOR_VERSION <= 3
175191

176192
Deserializer.AddDirectHandler(FWeakObjectProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerWeakObjectReferenceDeserialize));
177193

@@ -195,10 +211,10 @@ void DcSetupMsgPackDeserializeHandlers(FDcDeserializer& Deserializer, EDcMsgPack
195211
Deserializer.AddDirectHandler(FTextProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerTransientTextDeserialize));
196212
Deserializer.AddDirectHandler(FObjectProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerTransientObjectDeserialize));
197213
Deserializer.AddDirectHandler(FClassProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerTransientClassDeserialize));
198-
#if ENGINE_MAJOR_VERSION == 5
214+
#if ENGINE_MAJOR_VERSION == 5 && ENGINE_MINOR_VERSION <= 3
199215
Deserializer.AddDirectHandler(FObjectPtrProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerTransientObjectDeserialize));
200216
Deserializer.AddDirectHandler(FClassPtrProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerTransientClassDeserialize));
201-
#endif //ENGINE_MAJOR_VERSION == 5
217+
#endif //ENGINE_MAJOR_VERSION == 5 && ENGINE_MINOR_VERSION <= 3
202218
Deserializer.AddDirectHandler(FSoftObjectProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerTransientSoftObjectDeserialize));
203219
Deserializer.AddDirectHandler(FSoftClassProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerTransientSoftClassDeserialize));
204220
Deserializer.AddDirectHandler(FWeakObjectProperty::StaticClass(), FDcDeserializeDelegate::CreateStatic(HandlerTransientWeakObjectDeserialize));

DataConfig/Source/DataConfigCore/Private/DataConfig/Deserialize/Handlers/Common/DcCommonDeserializers.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,25 @@ FDcResult HandlerMapOrArrayOfKeyValueDeserialize(FDcDeserializeContext& Ctx)
317317
return DcOk();
318318
}
319319

320+
FDcResult HandlerOptionalDeserialize(FDcDeserializeContext& Ctx)
321+
{
322+
DC_TRY(Ctx.Writer->WriteOptionalRoot());
323+
324+
EDcDataEntry Next;
325+
DC_TRY(Ctx.Reader->PeekRead(&Next));
326+
if (Next == EDcDataEntry::None)
327+
{
328+
DC_TRY(Ctx.Reader->ReadNone());
329+
DC_TRY(Ctx.Writer->WriteNone());
330+
}
331+
else
332+
{
333+
DC_TRY(DcDeserializeUtils::RecursiveDeserialize(Ctx));
334+
}
335+
336+
DC_TRY(Ctx.Writer->WriteOptionalEnd());
337+
return DcOk();
338+
}
320339

321340
} // namespace DcCommonHandlers
322341

DataConfig/Source/DataConfigCore/Private/DataConfig/Deserialize/Handlers/MsgPack/DcMsgPackTransientDeserializers.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,14 @@ static FORCEINLINE_DEBUGGABLE FDcResult ReadPointerRaw(FDcReader* Reader, void*&
2626
return DcOk();
2727
}
2828

29-
static FORCEINLINE_DEBUGGABLE FDcResult ReadPointerOrNil(FDcReader* Reader, void*& OutPtr)
29+
static FORCEINLINE_DEBUGGABLE FDcResult ReadPointerOrNone(FDcReader* Reader, void*& OutPtr)
3030
{
3131
EDcDataEntry Next;
3232
DC_TRY(Reader->PeekRead(&Next));
3333

34-
if (Next == EDcDataEntry::Nil)
34+
if (Next == EDcDataEntry::None)
3535
{
36-
DC_TRY(Reader->ReadNil());
36+
DC_TRY(Reader->ReadNone());
3737
OutPtr = nullptr;
3838
}
3939
#if PLATFORM_64BITS
@@ -44,7 +44,7 @@ static FORCEINLINE_DEBUGGABLE FDcResult ReadPointerOrNil(FDcReader* Reader, void
4444
else
4545
{
4646
return DC_FAIL(DcDReadWrite, DataTypeMismatch2)
47-
<< EDcDataEntry::Nil << EDcDataEntry::UInt64 << Next;
47+
<< EDcDataEntry::None << EDcDataEntry::UInt64 << Next;
4848
}
4949
#else
5050
else if (Next == EDcDataEntry::UInt32)
@@ -54,7 +54,7 @@ static FORCEINLINE_DEBUGGABLE FDcResult ReadPointerOrNil(FDcReader* Reader, void
5454
else
5555
{
5656
return DC_FAIL(DcDReadWrite, DataTypeMismatch2)
57-
<< EDcDataEntry::Nil << EDcDataEntry::UInt32 << Next;
57+
<< EDcDataEntry::None << EDcDataEntry::UInt32 << Next;
5858
}
5959
#endif
6060

@@ -192,14 +192,14 @@ FDcResult HandlerTransientTextDeserialize(FDcDeserializeContext& Ctx)
192192

193193
FDcResult HandlerTransientObjectDeserialize(FDcDeserializeContext& Ctx)
194194
{
195-
FDcClassAccess Access{FDcClassAccess::EControl::ReferenceOrNil};
195+
FDcClassAccess Access{FDcClassAccess::EControl::ReferenceOrNone};
196196
DC_TRY(Ctx.Writer->WriteClassRootAccess(Access));
197197

198198
void* Ptr;
199-
DC_TRY(DcMsgPackHandlersDetails::ReadPointerOrNil(Ctx.Reader, Ptr));
199+
DC_TRY(DcMsgPackHandlersDetails::ReadPointerOrNone(Ctx.Reader, Ptr));
200200
if (Ptr == nullptr)
201201
{
202-
DC_TRY(Ctx.Writer->WriteNil());
202+
DC_TRY(Ctx.Writer->WriteNone());
203203
}
204204
else
205205
{
@@ -214,7 +214,7 @@ FDcResult HandlerTransientObjectDeserialize(FDcDeserializeContext& Ctx)
214214
FDcResult HandlerTransientClassDeserialize(FDcDeserializeContext& Ctx)
215215
{
216216
void* Ptr;
217-
DC_TRY(DcMsgPackHandlersDetails::ReadPointerOrNil(Ctx.Reader, Ptr));
217+
DC_TRY(DcMsgPackHandlersDetails::ReadPointerOrNone(Ctx.Reader, Ptr));
218218
DC_TRY(DcPropertyUtils::HeuristicVerifyPointer(Ptr));
219219
DC_TRY(Ctx.Writer->WriteClassReference((UClass*)Ptr));
220220

DataConfig/Source/DataConfigCore/Private/DataConfig/Deserialize/Handlers/Property/DcPropertyPipeDeserializers.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,16 @@ FDcResult HandlerClassDeserialize(FDcDeserializeContext& Ctx)
5252
>(Ctx);
5353
}
5454

55+
FDcResult HandlerOptionalDeserialize(FDcDeserializeContext& Ctx)
56+
{
57+
return DcHandlerPipeOptional<
58+
FDcDeserializeContext,
59+
FDcReader,
60+
FDcPropertyWriter,
61+
&DcDeserializeUtils::RecursiveDeserialize
62+
>(Ctx);
63+
}
64+
5565
} // namespace DcPropertyPipeHandlers
5666

5767

DataConfig/Source/DataConfigCore/Private/DataConfig/Diagnostic/DcDiagnostic.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ FStringFormatArg DcConvertArg(FDcDataVariant& Var)
5959
{
6060
return FStringFormatArg(Var.GetValue<bool>());
6161
}
62-
else if (Var.DataType == EDcDataEntry::Nil)
62+
else if (Var.DataType == EDcDataEntry::None)
6363
{
6464
return FStringFormatArg(TEXT("<null>"));
6565
}

DataConfig/Source/DataConfigCore/Private/DataConfig/Diagnostic/DcDiagnosticReadWrite.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ static FDcDiagnosticDetail _ReadWriteDetails[] = {
3434
{ ReaderCastExpect, TEXT("Reader cast failed. Expected '{0}, Actual '{1}'") },
3535
{ WriterCastExpect, TEXT("Writer cast failed. Expected '{0}, Actual '{1}'") },
3636
{ PeekNoContainerProperty, TEXT("Property Reader/Writer has no container property, Actual: '{0}'"), },
37-
{ WriteObjectReferenceDoNotAcceptNull, TEXT("FPropertyWriter::WriteObjectReference() don't accept nullptr. You should use WriteNil() instead."), },
37+
{ PropertyNotSupportedUEVersion, TEXT("Property not supported by this Unreal Engine version: '{0}'"), },
38+
{ WriteObjectReferenceDoNotAcceptNull, TEXT("FPropertyWriter::WriteObjectReference() don't accept nullptr. You should use WriteNone() instead."), },
3839

3940
// putback reader
4041
{ CantUsePutbackValue, TEXT("Cannot use putback value in '{0}'") },

DataConfig/Source/DataConfigCore/Private/DataConfig/Json/DcJsonReader.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -126,21 +126,21 @@ static FORCEINLINE EDcDataEntry TokenTypeToDataEntry(ETokenType TokenType)
126126
{
127127
static EDcDataEntry _Mapping[(int)ETokenType::_Count] = {
128128
EDcDataEntry::Ended,
129-
EDcDataEntry::Nil,
129+
EDcDataEntry::None,
130130
EDcDataEntry::MapRoot,
131131
EDcDataEntry::MapEnd,
132132
EDcDataEntry::ArrayRoot,
133133
EDcDataEntry::ArrayEnd,
134-
EDcDataEntry::Nil,
134+
EDcDataEntry::None,
135135
EDcDataEntry::String,
136136
EDcDataEntry::Double,
137137
EDcDataEntry::Bool,
138138
EDcDataEntry::Bool,
139-
EDcDataEntry::Nil,
139+
EDcDataEntry::None,
140140

141-
EDcDataEntry::Nil,
142-
EDcDataEntry::Nil,
143-
EDcDataEntry::Nil,
141+
EDcDataEntry::None,
142+
EDcDataEntry::None,
143+
EDcDataEntry::None,
144144
};
145145

146146
return _Mapping[(int)TokenType];
@@ -377,9 +377,9 @@ FDcResult TDcJsonReader<CharType>::PeekRead(EDcDataEntry* OutPtr)
377377
}
378378

379379
template<typename CharType>
380-
FDcResult TDcJsonReader<CharType>::ReadNil()
380+
FDcResult TDcJsonReader<CharType>::ReadNone()
381381
{
382-
DC_TRY(CheckConsumeToken(EDcDataEntry::Nil));
382+
DC_TRY(CheckConsumeToken(EDcDataEntry::None));
383383
if (Token.Type == ETokenType::Null)
384384
{
385385
DC_TRY(CheckNotObjectKey());
@@ -389,7 +389,7 @@ FDcResult TDcJsonReader<CharType>::ReadNil()
389389
else
390390
{
391391
return DC_FAIL(DcDJSON, ReadTypeMismatch)
392-
<< EDcDataEntry::Nil << FDcJsonReaderDetails<CharType>::TokenTypeToDataEntry(Token.Type)
392+
<< EDcDataEntry::None << FDcJsonReaderDetails<CharType>::TokenTypeToDataEntry(Token.Type)
393393
<< FormatHighlight(Token.Ref);
394394
}
395395
}

DataConfig/Source/DataConfigCore/Private/DataConfig/Json/DcJsonWriter.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ FORCEINLINE bool IsValidWriteScalar(EDcDataEntry Entry)
2020
{
2121
switch (Entry)
2222
{
23-
case EDcDataEntry::Nil:
23+
case EDcDataEntry::None:
2424
case EDcDataEntry::Bool:
2525
case EDcDataEntry::Name:
2626
case EDcDataEntry::String:
@@ -345,7 +345,7 @@ TDcJsonWriter<CharType>::TDcJsonWriter(ConfigType InConfig)
345345
}
346346

347347
template<typename CharType>
348-
FDcResult TDcJsonWriter<CharType>::WriteNil()
348+
FDcResult TDcJsonWriter<CharType>::WriteNone()
349349
{
350350
using Details = FDcJsonWriterDetails<CharType>;
351351

0 commit comments

Comments
 (0)