14namespace AllocationPolicies
25 template<
typename ElementType>
63template <u
int32 NumInlineElements,
typename SecondaryAllocator = FElementAllocationPolicy>
67 using SizeType =
typename SecondaryAllocator::SizeType;
69 template<
typename ElementType>
78 if (ElementType* Result = SecondaryData.GetAllocation())
82 return GetInlineElements();
106 ElementType* GetInlineElements()
const {
return (ElementType*)InlineData; }
118template <
typename QuantizedElementType,
typename AllocationPolicy = AllocationPolicies::FElementAllocationPolicy>
130 typedef typename AllocationPolicy::SizeType
SizeType;
211 uint8* Data =
nullptr;
219template <
typename QuantizedElementType,
typename AllocationPolicy>
222, ArrayMaxCapacity(AllocatorInstance.GetInitialCapacity())
226template <
typename QuantizedElementType,
typename AllocationPolicy>
242template <
typename QuantizedElementType,
typename AllocationPolicy>
245 AllocatorInstance.ResizeAllocation(
Context, ArrayNum, 0);
246 ArrayMaxCapacity = AllocatorInstance.GetInitialCapacity();
250template <
typename QuantizedElementType,
typename AllocationPolicy>
253 AllocatorInstance.Initialize();
290 return StorageAlignment;
293namespace AllocationPolicies
298template<
typename ElementType>
301 if (NumElements == 0)
311 constexpr SIZE_T ElementSize =
sizeof(ElementType);
312 constexpr SIZE_T ElementAlignment =
alignof(ElementType);
314 Data = (ElementType*)Realloc(
Context, Data, NumElements*ElementSize, ElementAlignment);
320template<u
int32 NumInlineElements,
typename SecondaryAllocator>
321template<
typename ElementType>
325 if (NumElements <= NumInlineElements)
328 if (SecondaryData.GetAllocation())
333 SecondaryData.ResizeAllocation(
Context, 0, 0);
338 if (!SecondaryData.GetAllocation())
341 SecondaryData.ResizeAllocation(
Context, 0, NumElements);
354template<u
int32 NumInlineElements,
typename SecondaryAllocator>
355template<
typename ElementType>
359 return NumElements <= NumInlineElements ? NumInlineElements : SecondaryData.CalculateNewCapacity(NumElements);
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
FORCEINLINE void CopyAssignItems(ElementType *Dest, const ElementType *Source, SizeType Count)
Definition MemoryOps.h:137
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
auto GetData(const TStringConversion< Converter, DefaultConversionSize > &Conversion) -> decltype(Conversion.Get())
Definition StringConv.h:802
uint32 Size
Definition VulkanMemory.cpp:4034
Definition NetSerializerArrayStorage.h:27
bool HasAllocation() const
Definition NetSerializerArrayStorage.h:41
SizeType CalculateNewCapacity(SizeType NumElements) const
Definition NetSerializerArrayStorage.h:39
void ResizeAllocation(FNetSerializationContext &Context, SizeType PreviousNumElements, SizeType NumElements)
Definition NetSerializerArrayStorage.h:299
SizeType GetInitialCapacity() const
Definition NetSerializerArrayStorage.h:43
ForElementType()
Definition NetSerializerArrayStorage.h:29
~ForElementType()
Definition NetSerializerArrayStorage.h:31
void Initialize()
Definition NetSerializerArrayStorage.h:35
ElementType * GetAllocation() const
Definition NetSerializerArrayStorage.h:33
Definition NetSerializerArrayStorage.h:21
uint32 SizeType
Definition NetSerializerArrayStorage.h:23
Definition NetSerializerArrayStorage.h:71
bool HasAllocation() const
Definition NetSerializerArrayStorage.h:91
ForElementType()
Definition NetSerializerArrayStorage.h:74
SizeType CalculateNewCapacity(SizeType NumElements) const
Definition NetSerializerArrayStorage.h:356
void Initialize()
Definition NetSerializerArrayStorage.h:85
ElementType * GetAllocation() const
Definition NetSerializerArrayStorage.h:76
SizeType GetInitialCapacity() const
Definition NetSerializerArrayStorage.h:93
void ResizeAllocation(FNetSerializationContext &Context, SizeType PreviousNumElements, SizeType NumElements)
Definition NetSerializerArrayStorage.h:322
Definition NetSerializerArrayStorage.h:65
typename SecondaryAllocator::SizeType SizeType
Definition NetSerializerArrayStorage.h:67
Definition NetSerializationContext.h:31
Definition NetSerializerArrayStorage.h:178
const uint8 * GetData() const
Definition NetSerializerArrayStorage.h:273
SizeType GetAlignment() const
Definition NetSerializerArrayStorage.h:288
IRISCORE_API void Clone(FNetSerializationContext &Context, const FNetSerializerAlignedStorage &Source)
Definition NetSerializerArrayStorage.cpp:78
IRISCORE_API void AdjustSize(FNetSerializationContext &Context, SizeType InNum, SizeType InAlignment)
Definition NetSerializerArrayStorage.cpp:26
AllocationPolicies::FElementAllocationPolicy::SizeType SizeType
Definition NetSerializerArrayStorage.h:181
SizeType Num() const
Definition NetSerializerArrayStorage.h:283
Definition NetSerializerArrayStorage.h:120
void Clone(FNetSerializationContext &Context, const ArrayType &Source)
Definition NetSerializerArrayStorage.h:251
SizeType Num() const
Definition NetSerializerArrayStorage.h:162
FNetSerializerArrayStorage()
Definition NetSerializerArrayStorage.h:220
QuantizedElementType ElementType
Definition NetSerializerArrayStorage.h:127
const ElementType * GetData() const
Definition NetSerializerArrayStorage.h:160
FNetSerializerArrayStorage< QuantizedElementType, AllocationPolicy > ArrayType
Definition NetSerializerArrayStorage.h:126
ElementType * GetData()
Definition NetSerializerArrayStorage.h:161
void AdjustSize(FNetSerializationContext &Context, SizeType InNum)
Definition NetSerializerArrayStorage.h:227
AllocationPolicy::SizeType SizeType
Definition NetSerializerArrayStorage.h:130
void Free(FNetSerializationContext &Context)
Definition NetSerializerArrayStorage.h:243
AllocationPolicy::template ForElementType< ElementType > ElementAllocatorType
Definition NetSerializerArrayStorage.h:129
Definition NetworkVersion.cpp:28
static UE_FORCEINLINE_HINT void * Memzero(void *Dest, SIZE_T Count)
Definition UnrealMemory.h:131
Definition IsPODType.h:12
Definition IsTriviallyCopyAssignable.h:13
Definition TypeCompatibleBytes.h:24