262 static void StaticAssertTypeConstants();
340template <
typename FieldType>
370 using FieldType::Equals;
372 template <
typename OtherFieldType>
375 return FieldType::GetValueData() ==
Other.OtherFieldType::GetValueData() && FieldsEnd ==
Other.FieldsEnd;
378 template <
typename OtherFieldType>
384 template <
typename OtherFieldType>
411 if (FieldType::TryGetView(View))
444 template <
typename OtherFieldType>
451 template <
typename OtherType>
455 const void* FieldsEnd =
nullptr;
494 inline operator const ByteArray&()
const {
return Bytes; }
518 return *
reinterpret_cast<const uint32*
>(&
Id);
522 template <
typename CharType>
576template <
typename IntType>
580 Params.IsSigned = IntType(-1) < IntType(0);
581 Params.MagnitudeBits = 8 *
sizeof(IntType) - Params.IsSigned;
856 static_assert(std::is_trivially_destructible_v<FCbFieldView>,
857 "This optimization requires FCbFieldView to be trivially destructible!");
867 template <
typename IntType>
868 inline IntType AsInteger(IntType
Default)
870 return IntType(AsInteger(
uint64(
Default), UE::CompactBinary::Private::MakeIntegerParams<IntType>()));
883 const void* Value =
nullptr;
915 template <
typename OtherFieldType>
960 inline explicit operator bool()
const {
return Num() > 0; }
1111template <
typename ViewType>
1128 ViewType::operator=(ViewType(ValueBuffer.
GetData(), Type));
1146 template <
typename OtherViewType>
1193 template <
typename OtherType>
1207template <
typename Type,
typename ViewType>
1214 return Clone(ViewType(Data));
1272template <
typename ViewType>
1346template <
typename ViewType>
1356template <
typename ViewType>
1359 return CreateIterator();
1467#if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_5
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define check(expr)
Definition AssertionMacros.h:314
ECbFieldError
Definition CompactBinary.h:462
FGuid ToGuid(const FCbObjectId &Id)
Definition CompactBinary.cpp:109
FCbObjectId FromGuid(const FGuid &Id)
Definition CompactBinary.cpp:121
ECbFieldType
Definition CompactBinary.h:102
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
constexpr bool EnumHasAnyFlags(Enum Flags, Enum Contains)
Definition EnumClassFlags.h:35
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
TMemoryView< const void > FMemoryView
Definition MemoryFwd.h:11
constexpr TMemoryView< void > MakeMemoryView(void *Data, uint64 Size)
Definition MemoryView.h:257
const bool
Definition NetworkReplayStreaming.h:178
TStringView< UTF8CHAR > FUtf8StringView
Definition StringFwd.h:48
UE_REWRITE constexpr T ImplicitConv(typename TIdentity< T >::Type Obj)
Definition UnrealTemplate.h:743
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint32 Size
Definition VulkanMemory.cpp:4034
Definition Archive.h:1208
Definition CompactBinary.h:942
void IterateAttachments(FCbFieldVisitor Visitor) const
Definition CompactBinary.h:988
FCbFieldView AsFieldView() const
Definition CompactBinary.h:954
CORE_API FIoHash GetHash() const
Definition CompactBinary.cpp:667
CORE_API void CopyTo(FMutableMemoryView Buffer) const
Definition CompactBinary.cpp:687
CORE_API uint64 Num() const
Definition CompactBinary.cpp:654
static FCbArrayView FromFieldNoCheck(const FCbFieldView &Field)
Definition CompactBinary.h:957
CORE_API FCbArrayView()
Definition CompactBinary.cpp:649
CORE_API void AppendHash(FIoHashBuilder &Builder) const
Definition CompactBinary.cpp:674
CORE_API uint64 GetSize() const
Definition CompactBinary.cpp:662
bool TryGetView(FMemoryView &OutView) const
Definition CompactBinary.h:996
CORE_API FCbFieldViewIterator CreateViewIterator() const
Definition CompactBinary.cpp:625
Definition CompactBinary.h:1371
FCbField AsField() &&
Definition CompactBinary.h:1377
CORE_API FCompositeBuffer GetBuffer() const
Definition CompactBinary.cpp:949
FCbField AsField() const &
Definition CompactBinary.h:1376
Definition CompactBinary.h:1288
static FCbFieldIterator MakeRangeView(const FCbFieldViewIterator &It, FSharedBuffer OuterBuffer=FSharedBuffer())
Definition CompactBinary.h:1322
static FCbFieldIterator MakeRange(FSharedBuffer Buffer, ECbFieldType Type=ECbFieldType::HasFieldType)
Definition CompactBinary.h:1311
static FCbFieldIterator MakeSingle(FCbField Field)
Definition CompactBinary.h:1300
constexpr FCbFieldIterator()=default
void MakeRangeOwned()
Definition CompactBinary.h:1331
static FCbFieldIterator CloneRange(const FCbFieldIterator &It)
Definition CompactBinary.h:1294
static CORE_API FCbFieldIterator CloneRange(const FCbFieldViewIterator &It)
Definition CompactBinary.cpp:917
Definition CompactBinary.h:240
static constexpr ECbFieldType GetType(ECbFieldType Type)
Definition CompactBinary.h:266
static constexpr bool IsTimeSpan(ECbFieldType Type)
Definition CompactBinary.h:295
static constexpr bool IsArray(ECbFieldType Type)
Definition CompactBinary.h:277
static constexpr bool IsObjectId(ECbFieldType Type)
Definition CompactBinary.h:297
static constexpr bool IsNone(ECbFieldType Type)
Definition CompactBinary.h:273
static constexpr bool IsUuid(ECbFieldType Type)
Definition CompactBinary.h:292
static constexpr bool IsBool(ECbFieldType Type)
Definition CompactBinary.h:285
static constexpr ECbFieldType GetSerializedType(ECbFieldType Type)
Definition CompactBinary.h:268
static constexpr bool IsBinaryAttachment(ECbFieldType Type)
Definition CompactBinary.h:288
static constexpr bool IsHash(ECbFieldType Type)
Definition CompactBinary.h:291
static constexpr bool IsObject(ECbFieldType Type)
Definition CompactBinary.h:276
static constexpr bool HasFields(ECbFieldType Type)
Definition CompactBinary.h:302
static constexpr bool IsAttachment(ECbFieldType Type)
Definition CompactBinary.h:289
static constexpr bool MayContainAttachments(ECbFieldType Type)
Definition CompactBinary.h:313
static constexpr bool IsObjectAttachment(ECbFieldType Type)
Definition CompactBinary.h:287
static constexpr bool IsCustomByName(ECbFieldType Type)
Definition CompactBinary.h:300
static constexpr bool IsDateTime(ECbFieldType Type)
Definition CompactBinary.h:294
static constexpr bool IsFloat(ECbFieldType Type)
Definition CompactBinary.h:284
static constexpr bool HasFieldName(ECbFieldType Type)
Definition CompactBinary.h:271
static constexpr bool HasFieldType(ECbFieldType Type)
Definition CompactBinary.h:270
static constexpr bool HasUniformFields(ECbFieldType Type)
Definition CompactBinary.h:307
static constexpr bool IsInteger(ECbFieldType Type)
Definition CompactBinary.h:282
static constexpr bool IsBinary(ECbFieldType Type)
Definition CompactBinary.h:279
static constexpr bool IsCustomById(ECbFieldType Type)
Definition CompactBinary.h:299
static constexpr bool IsString(ECbFieldType Type)
Definition CompactBinary.h:280
static constexpr bool IsNull(ECbFieldType Type)
Definition CompactBinary.h:274
Definition CompactBinary.h:892
static FCbFieldViewIterator MakeRange(FMemoryView View, ECbFieldType Type=ECbFieldType::HasFieldType)
Definition CompactBinary.h:906
constexpr FCbFieldViewIterator()=default
static FCbFieldViewIterator MakeSingle(const FCbFieldView &Field)
Definition CompactBinary.h:895
FCbFieldViewIterator(const TCbFieldIterator< OtherFieldType > &It)
Definition CompactBinary.h:916
Definition CompactBinary.h:610
CORE_API FCbFieldView operator[](FUtf8StringView Name) const
Definition CompactBinary.cpp:613
constexpr bool IsArray() const
Definition CompactBinary.h:731
constexpr FUtf8StringView GetName() const
Definition CompactBinary.h:636
uint64 AsUInt64(uint64 Default=0)
Definition CompactBinary.h:671
CORE_API FDateTime AsDateTime()
Definition CompactBinary.cpp:385
constexpr bool HasName() const
Definition CompactBinary.h:726
constexpr bool HasError() const
Definition CompactBinary.h:769
int64 AsInt64(int64 Default=0)
Definition CompactBinary.h:663
CORE_API FIoHash AsBinaryAttachment(const FIoHash &Default=FIoHash())
Definition CompactBinary.cpp:310
uint8 AsUInt8(uint8 Default=0)
Definition CompactBinary.h:665
constexpr bool IsInteger() const
Definition CompactBinary.h:737
uint32 AsUInt32(uint32 Default=0)
Definition CompactBinary.h:669
CORE_API FIoHash AsHash(const FIoHash &Default=FIoHash())
Definition CompactBinary.cpp:338
constexpr bool IsObjectId() const
Definition CompactBinary.h:752
CORE_API void AppendHash(FIoHashBuilder &Builder) const
Definition CompactBinary.cpp:548
CORE_API FMemoryView AsBinaryView(FMemoryView Default=FMemoryView())
Definition CompactBinary.cpp:186
CORE_API int64 AsDateTimeTicks(int64 Default=0)
Definition CompactBinary.cpp:371
CORE_API FUtf8StringView AsString(FUtf8StringView Default=FUtf8StringView())
Definition CompactBinary.cpp:200
constexpr bool IsFloat() const
Definition CompactBinary.h:739
constexpr FCbIteratorSentinel end() const
Definition CompactBinary.h:826
CORE_API FCbObjectView AsObjectView()
Definition CompactBinary.cpp:158
int32 AsInt32(int32 Default=0)
Definition CompactBinary.h:661
uint16 AsUInt16(uint16 Default=0)
Definition CompactBinary.h:667
CORE_API int64 AsTimeSpanTicks(int64 Default=0)
Definition CompactBinary.cpp:395
CORE_API FIoHash AsObjectAttachment(const FIoHash &Default=FIoHash())
Definition CompactBinary.cpp:296
CORE_API FCbArrayView AsArrayView()
Definition CompactBinary.cpp:172
CORE_API float AsFloat(float Default=0.0f)
Definition CompactBinary.cpp:226
void Assign(const void *InData, const ECbFieldType InType)
Definition CompactBinary.h:854
CORE_API void IterateAttachments(FCbFieldVisitor Visitor) const
Definition CompactBinary.cpp:580
int16 AsInt16(int16 Default=0)
Definition CompactBinary.h:659
FMemoryView GetValueView() const
Definition CompactBinary.h:836
CORE_API FCbCustomByName AsCustomByName(FCbCustomByName Default=FCbCustomByName())
Definition CompactBinary.cpp:448
constexpr bool HasValue() const
Definition CompactBinary.h:766
CORE_API FIoHash GetHash() const
Definition CompactBinary.cpp:541
constexpr FCbFieldView RemoveName() const
Definition CompactBinary.h:627
int8 AsInt8(int8 Default=0)
Definition CompactBinary.h:657
constexpr bool IsUuid() const
Definition CompactBinary.h:747
constexpr ECbFieldType GetTypeWithFlags() const
Definition CompactBinary.h:842
CORE_API double AsDouble(double Default=0.0)
Definition CompactBinary.cpp:256
CORE_API FIoHash AsAttachment(const FIoHash &Default=FIoHash())
Definition CompactBinary.cpp:324
constexpr bool IsCustomByName() const
Definition CompactBinary.h:755
CORE_API FTimespan AsTimeSpan()
Definition CompactBinary.cpp:409
FCbValue GetValue() const
Definition CompactBinaryValue.h:78
constexpr bool IsHash() const
Definition CompactBinary.h:746
CORE_API FMemoryView AsCustom(uint64 Id, FMemoryView Default=FMemoryView())
Definition CompactBinary.cpp:462
constexpr bool IsTimeSpan() const
Definition CompactBinary.h:750
CORE_API FMemoryView GetView() const
Definition CompactBinary.cpp:598
constexpr bool IsDateTime() const
Definition CompactBinary.h:749
CORE_API bool AsBool(bool bDefault=false)
Definition CompactBinary.cpp:288
constexpr bool IsObject() const
Definition CompactBinary.h:730
CORE_API void CopyTo(FMutableMemoryView Buffer) const
Definition CompactBinary.cpp:561
constexpr bool IsAttachment() const
Definition CompactBinary.h:744
constexpr bool IsObjectAttachment() const
Definition CompactBinary.h:742
constexpr bool IsString() const
Definition CompactBinary.h:734
CORE_API FCbCustomById AsCustomById(FCbCustomById Default=FCbCustomById())
Definition CompactBinary.cpp:434
const void * GetValueEnd() const
Definition CompactBinary.h:848
CORE_API FCbFieldViewIterator CreateViewIterator() const
Definition CompactBinary.cpp:625
constexpr bool IsNull() const
Definition CompactBinary.h:728
constexpr bool IsCustomById() const
Definition CompactBinary.h:754
CORE_API FCbObjectId AsObjectId(const FCbObjectId &Default=FCbObjectId())
Definition CompactBinary.cpp:419
bool TryGetView(FMemoryView &OutView) const
Definition CompactBinary.h:808
constexpr ECbFieldError GetError() const
Definition CompactBinary.h:772
FCbFieldViewIterator begin() const
Definition CompactBinary.h:925
constexpr bool IsBool() const
Definition CompactBinary.h:740
CORE_API FMemoryView GetViewNoType() const
Definition CompactBinary.cpp:606
CORE_API uint64 GetValueSize() const
Definition CompactBinary.cpp:495
CORE_API FGuid AsUuid()
Definition CompactBinary.cpp:352
CORE_API uint64 GetSize() const
Definition CompactBinary.cpp:490
constexpr bool IsBinaryAttachment() const
Definition CompactBinary.h:743
constexpr const void * GetValueData() const
Definition CompactBinary.h:845
constexpr FCbFieldView()=default
constexpr bool IsBinary() const
Definition CompactBinary.h:733
constexpr ECbFieldType GetType() const
Definition CompactBinary.h:839
Definition CompactBinary.h:1252
FCbArray AsArray() &
Definition CompactBinary.h:1441
CORE_API FCompositeBuffer GetBuffer() const
Definition CompactBinary.cpp:934
FCbObject AsObject() &
Definition CompactBinary.h:1429
FSharedBuffer AsBinary(const FSharedBuffer &Default=FSharedBuffer()) &
Definition CompactBinary.h:1453
Definition CompactBinary.h:329
Definition CompactBinary.h:479
const ByteArray & GetBytes() const
Definition CompactBinary.h:493
bool operator<(const FCbObjectId &B) const
Definition CompactBinary.h:511
bool operator!=(const FCbObjectId &B) const
Definition CompactBinary.h:506
uint8[12] ByteArray
Definition CompactBinary.h:481
constexpr FMemoryView GetView() const
Definition CompactBinary.h:497
static CORE_API FCbObjectId NewObjectId()
Definition CompactBinary.cpp:81
friend uint32 GetTypeHash(const FCbObjectId &Id)
Definition CompactBinary.h:516
friend TStringBuilderBase< CharType > & operator<<(TStringBuilderBase< CharType > &Builder, const FCbObjectId &Id)
Definition CompactBinary.h:523
bool operator==(const FCbObjectId &B) const
Definition CompactBinary.h:501
Definition CompactBinary.h:1025
CORE_API FCbFieldView FindView(FUtf8StringView Name) const
Definition CompactBinary.cpp:713
CORE_API FCbObjectView()
Definition CompactBinary.cpp:708
CORE_API uint64 GetSize() const
Definition CompactBinary.cpp:742
FCbFieldView AsFieldView() const
Definition CompactBinary.h:1051
CORE_API FIoHash GetHash() const
Definition CompactBinary.cpp:747
CORE_API FCbFieldView FindViewIgnoreCase(FUtf8StringView Name) const
Definition CompactBinary.cpp:725
CORE_API void CopyTo(FMutableMemoryView Buffer) const
Definition CompactBinary.cpp:767
CORE_API void AppendHash(FIoHashBuilder &Builder) const
Definition CompactBinary.cpp:754
FCbFieldView operator[](FUtf8StringView Name) const
Definition CompactBinary.h:1048
void IterateAttachments(FCbFieldVisitor Visitor) const
Definition CompactBinary.h:1085
static FCbObjectView FromFieldNoCheck(const FCbFieldView &Field)
Definition CompactBinary.h:1054
CORE_API FCbFieldViewIterator CreateViewIterator() const
Definition CompactBinary.cpp:625
bool TryGetView(FMemoryView &OutView) const
Definition CompactBinary.h:1093
Definition CompactBinary.h:1392
FCbField FindIgnoreCase(FUtf8StringView Name) const
Definition CompactBinary.h:1407
CORE_API FCompositeBuffer GetBuffer() const
Definition CompactBinary.cpp:963
FCbField operator[](FUtf8StringView Name) const
Definition CompactBinary.h:1417
FCbField AsField() &&
Definition CompactBinary.h:1421
FCbField Find(FUtf8StringView Name) const
Definition CompactBinary.h:1397
FCbField AsField() const &
Definition CompactBinary.h:1420
Definition CompactBinaryValue.h:23
Definition CompositeBuffer.h:27
Definition SharedBuffer.h:341
FMemoryView GetView() const
Definition SharedBuffer.h:391
bool IsOwned() const
Definition SharedBuffer.h:405
static CORE_API FSharedBuffer MakeView(FMemoryView View)
Definition SharedBuffer.cpp:197
const void * GetData() const
Definition SharedBuffer.h:385
Definition SharedBuffer.h:218
static CORE_API FUniqueBuffer Alloc(uint64 Size)
Definition SharedBuffer.cpp:103
Definition CompactBinary.h:1209
static Type Clone(const ViewType &Value)
Definition CompactBinary.h:1218
static Type MakeView(const ViewType &Value, FSharedBuffer OuterBuffer=FSharedBuffer())
Definition CompactBinary.h:1232
static Type MakeView(const void *const Data, FSharedBuffer OuterBuffer=FSharedBuffer())
Definition CompactBinary.h:1226
static Type Clone(const void *const Data)
Definition CompactBinary.h:1212
Definition CompactBinary.h:1113
constexpr FCbIteratorSentinel end() const
Definition CompactBinary.h:1190
friend class TCbBuffer
Definition CompactBinary.h:1194
FCbFieldIterator begin() const
Definition CompactBinary.h:1357
TCbBuffer(FSharedBuffer ValueBuffer, ECbFieldType Type=ECbFieldType::HasFieldType)
Definition CompactBinary.h:1124
FSharedBuffer GetOuterBuffer() &&
Definition CompactBinary.h:1180
const ViewType & AsView() const
Definition CompactBinary.h:1171
const FSharedBuffer & GetOuterBuffer() const &
Definition CompactBinary.h:1179
FCbField operator[](FUtf8StringView Name) const
Definition CompactBinary.h:1273
void MakeOwned()
Definition CompactBinary.h:1159
bool IsOwned() const
Definition CompactBinary.h:1156
void Reset()
Definition CompactBinary.h:1153
TCbBuffer(const ViewType &Value, TCbBuffer< OtherViewType > OuterBuffer)
Definition CompactBinary.h:1147
TCbBuffer(const ViewType &Value, FSharedBuffer OuterBuffer)
Definition CompactBinary.h:1135
FCbFieldIterator CreateIterator() const
Definition CompactBinary.h:1347
Definition CompactBinary.h:342
TCbFieldIterator operator++(int)
Definition CompactBinary.h:349
static const void * GetFieldsEnd(const TCbFieldIterator< OtherFieldType > &It)
Definition CompactBinary.h:445
CORE_API uint64 GetRangeSize() const
Definition CompactBinary.cpp:802
constexpr TCbFieldIterator(FieldType &&InField, const void *InFieldsEnd)
Definition CompactBinary.h:437
CORE_API void CopyRangeTo(FMutableMemoryView Buffer) const
Definition CompactBinary.cpp:846
constexpr FCbIteratorSentinel end() const
Definition CompactBinary.h:421
bool TryGetRangeView(FMemoryView &OutView) const
Definition CompactBinary.h:408
constexpr bool operator==(const TCbFieldIterator< OtherFieldType > &Other) const
Definition CompactBinary.h:379
void Reset()
Definition CompactBinary.h:360
constexpr FieldType & operator*()
Definition CompactBinary.h:356
constexpr TCbFieldIterator begin() const
Definition CompactBinary.h:420
constexpr TCbFieldIterator(FieldType InField)
Definition CompactBinary.h:425
constexpr bool operator!=(const FCbIteratorSentinel &) const
Definition CompactBinary.h:391
constexpr bool operator==(const FCbIteratorSentinel &) const
Definition CompactBinary.h:390
constexpr FieldType * operator->()
Definition CompactBinary.h:357
constexpr bool operator!=(const TCbFieldIterator< OtherFieldType > &Other) const
Definition CompactBinary.h:385
constexpr bool Equals(const TCbFieldIterator< OtherFieldType > &Other) const
Definition CompactBinary.h:373
friend class TCbFieldIterator
Definition CompactBinary.h:452
CORE_API TCbFieldIterator & operator++()
Definition CompactBinary.cpp:789
CORE_API void AppendRangeHash(FIoHashBuilder &Builder) const
Definition CompactBinary.cpp:829
CORE_API void IterateRangeAttachments(FCbFieldVisitor Visitor) const
Definition CompactBinary.cpp:886
constexpr TCbFieldIterator()=default
CORE_API FIoHash GetRangeHash() const
Definition CompactBinary.cpp:821
Definition AssetRegistryState.h:50
constexpr DataType * GetData() const
Definition MemoryView.h:68
DataType * GetDataEnd() const
Definition MemoryView.h:71
constexpr bool IsEmpty() const
Definition MemoryView.h:77
bool Contains(const TMemoryView< OtherDataType > &InView) const
Definition MemoryView.h:160
Definition StringBuilder.h:79
Definition FieldSystemNoiseAlgo.cpp:6
Definition CompactBinary.cpp:24
void BytesToHexLower(TConstArrayView< uint8 > Bytes, ANSICHAR *OutHex)
Definition BytesToHex.cpp:42
Definition CompactBinary.h:545
uint64 Id
Definition CompactBinary.h:547
FMemoryView Data
Definition CompactBinary.h:549
Definition CompactBinary.h:554
FMemoryView Data
Definition CompactBinary.h:558
FUtf8StringView Name
Definition CompactBinary.h:556
static UE_FORCEINLINE_HINT int32 Memcmp(const void *Buf1, const void *Buf2, SIZE_T Count)
Definition UnrealMemory.h:114
static UE_FORCEINLINE_HINT void * Memcpy(void *Dest, const void *Src, SIZE_T Count)
Definition UnrealMemory.h:160
Definition CompactBinary.h:568
uint32 MagnitudeBits
Definition CompactBinary.h:572
uint32 IsSigned
Definition CompactBinary.h:570