Skip to content

Useful classes

All Template Classes#

https://docs.unrealengine.com/en-US/API/Runtime/Core/Templates/index.html

Algorithms#

ParallelFor

Threading Primitives: - https://de45xmedrsdbp.cloudfront.net/Resources/files/Multithreading-1112727176.pdf - https://conoscerelinux.org/wp-content/uploads/2019/11/Mischitelli-Slides-Nov2019.pdf

Look at the Algo namespace

Algo::Accumulate - equiv of fold

Algo::Transform/TransformIf - equiv of map

Invoke()

KeyFrameAlgorithms::Scale

KeyFrameAlgorithms::Translate

Structs#

TNumericLimits<>

TScopedCallback - Helper obj for batching callback requests

TScopedPointer

TValueOrError

TAttribute - Used in Slate to allow a value to be set directly or through a function

TOptional - Make a POD optional

TInlineValue

TFrameValue - This struct allows you to cache a value for a frame, and automatically invalidates

TGuardValue - exception safe guard around saving/restoring a value

TFuture

TTypeCompatibleBytes

TFunction & TFunctionRef are ways to store/pass lambdas. TFunctionRef is fast but doesn’t take ownership so you have to make sure the lambda being passed is still in scope when TFunctionRef gets called

Useful Debugging Stack trace debugging tooling#

Stack trace/Call Stack/Stack Capturing + Symbol Debug ties :

  • FStackTracker

  • FGenericPlatformStackWalk

  • ProgramCounterToHumanReadableString

  • SymbolInfoToHumanReadableString

  • ProgramCounterToSymbolInfo

  • CaptureStackBackTrace

  • StackWalkAndDump

  • FProgramCounterSymbolInfo

  • FStackWalkModuleInfo

Useful Containers#

TStaticHashTable

TSet

TMap

TArray

FBinaryHeap

TArrayView: Statically sized view of an array. Allows functions to take either fixed C array or a TArray with arbittrary allocator when function doesn’t add or remove elements. Treat TArrayView as a ref

 * int32 SumAll(TArrayView<const int32> array)
 * {
 *     return Algo::Accumulate(array);
 * }
 *
 * could be called as:
 *     SumAll(MyTArray);
 *     SumAll(MyCArray);
 *     SumAll({1, 2, 3});
 *     SumAll(MakeArrayView(Ptr, Num));

THeap: Can make a Tarray heapified by calling Heapify()

TBitArray

TQueue

TStaticArray: Statically sized array

TStaticBitArray: Statically sized Bit Array

TChunkedArray: Array using multiple allocations to avoid allocation failure due to fragmentation

TCircularBuffer - Circular buffer, sized in power of 2

TCircularQueue: Lock-free FIFO queue using circularArray. Be careful if you use this, read the code

TLinkedList/TDoubleLinkedList

TIntrusiveLinkedList

TSparseArray: Dynamically sized array where elemnt indices arent necessarily contiguous. Memory allocated for all elements but allows for O(1) element removal

Container Functions:#

GetSlack()()

  • Can query existing remaining free capacity of container

Empty(int32 n)

  • Will set capacity of container to n; will also free up existing slack memory

Reset(int32 n)

  • Same as Empty() but won’t release memory if newly requested capacity is smaller than existing capacity

AddUninitialized/InsertUninitialized()

  • Only adds objects, doesn’t call constructor

AddZeroed/InsertZeroed()

  • Same as AddUninitialized() but zeroes out memory

Last update: April 30, 2020