|
| | TBlockedDenseGrid3 () |
| |
| | TBlockedDenseGrid3 (int32 DimI, int32 DimJ, int32 DimK, ElemType InitialValue) |
| |
| void | Resize (int32 DimI, int32 DimJ, int32 DimK) |
| |
| void | Reset () |
| |
| void | Reset (int32 DimI, int32 DimJ, int32 DimK, ElemType InitialValue) |
| |
| bool | IsValidIndex (FVector3i CellIJK) const |
| |
| ElemType | GetValueThreadSafe (int32 I, int32 J, int32 K) |
| |
| ElemType | GetValueThreadSafe (const FVector3i &CellIJK) |
| |
| void | SetValueThreadSafe (int32 I, int32 J, int32 K, ElemType NewValue) |
| |
| void | SetValueThreadSafe (const FVector3i &CellIJK, ElemType NewValue) |
| |
| template<typename ProcessFunc > |
| void | ProcessValueThreadSafe (int32 I, int32 J, int32 K, ProcessFunc Func) |
| |
| template<typename ProcessFunc > |
| void | ProcessValueThreadSafe (const FVector3i &CellIJK, ProcessFunc Func) |
| |
| FVector3i | ToIndex (int64 LinearIndex) const |
| |
| int64 | ToLinear (int32 X, int32 Y, int32 Z) const |
| |
| int64 | ToLinear (const FVector3i &IJK) const |
| |
| | TBasicBlockedDenseGrid3 () |
| |
| | TBasicBlockedDenseGrid3 (int32 DimI, int32 DimJ, int32 DimK, ElemType InitialValue) |
| |
| void | Resize (int32 DimI, int32 DimJ, int32 DimK) |
| |
| void | Reset () |
| |
| void | Reset (int32 DimI, int32 DimJ, int32 DimK, ElemType InitialValue) |
| |
| ElemType | GetValue (int32 I, int32 J, int32 K) const |
| |
| ElemType | GetValue (const FVector3i &CellIJK) const |
| |
| void | SetValue (int32 I, int32 J, int32 K, ElemType NewValue) |
| |
| void | SetValue (const FVector3i &CellIJK, ElemType NewValue) |
| |
| void | ProcessValue (int32 I, int32 J, int32 K, ProcessFunc Func) |
| |
| void | ProcessValue (const FVector3i &CellIJK, ProcessFunc Func) |
| |
| bool | PreAllocateFromSourceGrid (const TBasicBlockedDenseGrid3< OtherElemType, BlockSize > &SourceGrid) |
| |
| int32 | GetNumBlocks () const |
| |
| | TBlockedGrid3Layout () |
| |
| | TBlockedGrid3Layout (int32 DimI, int32 DimJ, int32 DimK) |
| |
| | TBlockedGrid3Layout (FVector3i Dims) |
| |
| void | Resize (int32 DimI, int32 DimJ, int32 DimK) |
| |
| const FVector3i & | GetDimensions () const |
| |
| const FVector3i & | GetBlockDimensions () const |
| |
| FAxisAlignedBox3i | Bounds () const |
| |
| FAxisAlignedBox3i | BoundsInclusive () const |
| |
| int64 | Size () const |
| |
| bool | IsValidIJK (const FVector3i &IJK) const |
| |
| bool | IsValidBlockIJK (const FVector3i &BlockIJK) |
| |
| int32 | IJKtoBlockIndex (const FVector3i &IJK) const |
| |
| void | GetBlockAndLocalIndex (const FVector3i &IJK, int32 &BlockIndexOut, int32 &LocalIndexOut) const |
| |
| void | GetBlockAndLocalIndex (int32 I, int32 J, int32 K, int32 &BlockIndexOut, int32 &LocalIndexOut) const |
| |
| FVector3i | BlockIndexToBlockIJK (const int32 BlockIndex) const |
| |
| int32 | BlockIJKToBlockIndex (const FVector3i &BlockIJK) const |
| |
|
| FCriticalSection * | GetBlockLock (int32 Index) |
| |
| template<typename FuncType > |
| void | WriteValueThreadSafe (int32 I, int32 J, int32 K, FuncType Func) |
| |
| ElemType | ReadValueThreadSafe (int32 I, int32 J, int32 K) |
| |
| FBlock3 & | GetBlock (int32 Index) |
| |
| const FBlock3 & | GetBlock (int32 Index) const |
| |
| bool | IsBlockAllocated (const FBlock3 &Block) const |
| |
| bool | IsBlockAllocated (const int32 BlockIndex) const |
| |
| BlockData3Type & | TouchBlockData (const int32 BlockIndex) |
| |
| void | WriteValue (const int32 &BlockIndex, const int32 &LocalIndex, FuncType Func) |
| |
| void | WriteValue (int32 I, int32 J, int32 K, FuncType Func) |
| |
| void | WriteValueWithLock (const int32 &BlockIndex, const int32 &LocalIndex, FuncType Func, FCriticalSection *CriticalSection) |
| |
| ElemType | ReadValue (const int32 &BlockIndex, const int32 &LocalIndex) const |
| |
| ElemType | ReadValue (int32 I, int32 J, int32 K) const |
| |
| ElemType | ReadValueWithLock (const int32 &BlockIndex, const int32 &LocalIndex, FCriticalSection *CriticalSection) |
| |
| bool | AllocateTopologyUnionImpl (const OtherGridType &OtherGrid) |
| |
template<
typename ElemType>
class UE::Geometry::TBlockedDenseGrid3< ElemType >
TBlockedDenseGrid adds thread-safe access functions to the 3D blocked uniform grid, TBasicBlockedDenseGrid3. Blocked grid is extended by adding internally owned locks for each data block.
The grid is allocated in BlockSize^3 blocks on-demand (BlockSize is a compile-time constant) allowing very large grids to be used without having to pre-allocate all the memory, eg for sparse/narrow-band use cases.
For multi-threaded applications where memory is a premium, consider using TBlockedGrid3 (above) as it gives better control over the individual blocks and allows the caller to manage the lifetime of any locks used.