// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Containers/Array.h" #include "Templates/TypeCompatibleBytes.h" namespace Metasound { template class TParamPackFixedArray { public: TParamPackFixedArray(const TArray& Other) { *this = Other; } TParamPackFixedArray& operator=(const TArray& Other) { int32 NumToCopy = FMath::Min(Other.Num(), NumInlineElements); for (int32 i = 0; i < NumToCopy; ++i) { GetData()[i] = Other[i]; } NumValidElements = NumToCopy; return *this; } void CopyToArray(TArray& Dest) const { Dest.Empty(); for (int32 i = 0; i < NumValidElements; ++i) { Dest.Add(GetData()[i]); } } FORCEINLINE const ElementType* GetData() const { return (ElementType*)InlineData; } FORCEINLINE ElementType* GetData() { return (ElementType*)InlineData; } public: int32 NumValidElements = 0; using FByteBucketType = TTypeCompatibleBytes; FByteBucketType InlineData[NumInlineElements]; }; }