Class CollectionHelper
Provides helper methods for collections.
Namespace: Unity.Collections
Assembly: Unity.Collections.dll
Syntax
public static class CollectionHelper
Fields
CacheLineSize
The size in bytes of the current platform's L1 cache lines.
Declaration
public const int CacheLineSize = 64
Field Value
Type | Description |
---|---|
int | The size in bytes of the current platform's L1 cache lines. |
Methods
Align(int, int)
Returns an allocation size in bytes that factors in alignment.
Declaration
public static int Align(int size, int alignmentPowerOfTwo)
Parameters
Type | Name | Description |
---|---|---|
int | size | The size to align. |
int | alignmentPowerOfTwo | A non-zero, positive power of two. |
Returns
Type | Description |
---|---|
int | The smallest integer that is greater than or equal to |
Examples
// 55 aligned to 16 is 64.
int size = CollectionHelper.Align(55, 16);
Exceptions
Type | Condition |
---|---|
ArgumentException | Thrown if |
Align(ulong, ulong)
Returns an allocation size in bytes that factors in alignment.
Declaration
public static ulong Align(ulong size, ulong alignmentPowerOfTwo)
Parameters
Type | Name | Description |
---|---|---|
ulong | size | The size to align. |
ulong | alignmentPowerOfTwo | A non-zero, positive power of two. |
Returns
Type | Description |
---|---|
ulong | The smallest integer that is greater than or equal to |
Examples
// 55 aligned to 16 is 64.
ulong size = CollectionHelper.Align(55, 16);
Exceptions
Type | Condition |
---|---|
ArgumentException | Thrown if |
CreateNativeArray<T>(int, AllocatorHandle, NativeArrayOptions)
Create a NativeArray, using a provided AllocatorHandle.
Declaration
public static NativeArray<T> CreateNativeArray<T>(int length, AllocatorManager.AllocatorHandle allocator, NativeArrayOptions options = NativeArrayOptions.ClearMemory) where T : struct
Parameters
Type | Name | Description |
---|---|---|
int | length | The number of elements to allocate. |
AllocatorManager.AllocatorHandle | allocator | The AllocatorHandle to use. |
NativeArrayOptions | options | Options for allocation, such as whether to clear the memory. |
Returns
Type | Description |
---|---|
NativeArray<T> | Returns the NativeArray that was created. |
Type Parameters
Name | Description |
---|---|
T |
CreateNativeArray<T>(NativeArray<T>, AllocatorHandle)
Create a NativeArray from another NativeArray, using a provided AllocatorHandle.
Declaration
public static NativeArray<T> CreateNativeArray<T>(NativeArray<T> array, AllocatorManager.AllocatorHandle allocator) where T : struct
Parameters
Type | Name | Description |
---|---|---|
NativeArray<T> | array | The NativeArray to make a copy of. |
AllocatorManager.AllocatorHandle | allocator | The AllocatorHandle to use. |
Returns
Type | Description |
---|---|
NativeArray<T> | Returns the NativeArray that was created. |
Type Parameters
Name | Description |
---|---|
T |
CreateNativeArray<T>(T[], AllocatorHandle)
Create a NativeArray from a managed array, using a provided AllocatorHandle.
Declaration
public static NativeArray<T> CreateNativeArray<T>(T[] array, AllocatorManager.AllocatorHandle allocator) where T : struct
Parameters
Type | Name | Description |
---|---|---|
T[] | array | The managed array to make a copy of. |
AllocatorManager.AllocatorHandle | allocator | The AllocatorHandle to use. |
Returns
Type | Description |
---|---|
NativeArray<T> | Returns the NativeArray that was created. |
Type Parameters
Name | Description |
---|---|
T |
CreateNativeArray<T, U>(int, ref U, NativeArrayOptions)
Create a NativeArray, using a provided allocator that implements IAllocator.
Declaration
public static NativeArray<T> CreateNativeArray<T, U>(int length, ref U allocator, NativeArrayOptions options = NativeArrayOptions.ClearMemory) where T : struct where U : unmanaged, AllocatorManager.IAllocator
Parameters
Type | Name | Description |
---|---|---|
int | length | The number of elements to allocate. |
U | allocator | The allocator to use. |
NativeArrayOptions | options | Options for allocation, such as whether to clear the memory. |
Returns
Type | Description |
---|---|
NativeArray<T> | Returns the NativeArray that was created. |
Type Parameters
Name | Description |
---|---|
T | |
U |
CreateNativeArray<T, U>(T[], ref U)
Create a NativeArray from a managed array, using a provided Allocator.
Declaration
public static NativeArray<T> CreateNativeArray<T, U>(T[] array, ref U allocator) where T : struct where U : unmanaged, AllocatorManager.IAllocator
Parameters
Type | Name | Description |
---|---|---|
T[] | array | The managed array to make a copy of. |
U | allocator | The Allocator to use. |
Returns
Type | Description |
---|---|
NativeArray<T> | Returns the NativeArray that was created. |
Type Parameters
Name | Description |
---|---|
T | |
U |
CreateNativeMultiHashMap<TKey, TValue, U>(int, ref U)
Create a NativeMultiHashMap from a managed array, using a provided Allocator.
Declaration
public static NativeMultiHashMap<TKey, TValue> CreateNativeMultiHashMap<TKey, TValue, U>(int length, ref U allocator) where TKey : struct, IEquatable<TKey> where TValue : struct where U : unmanaged, AllocatorManager.IAllocator
Parameters
Type | Name | Description |
---|---|---|
int | length | The desired capacity of the NativeMultiHashMap. |
U | allocator | The Allocator to use. |
Returns
Type | Description |
---|---|
NativeMultiHashMap<TKey, TValue> | Returns the NativeMultiHashMap that was created. |
Type Parameters
Name | Description |
---|---|
TKey | |
TValue | |
U |
Hash(void*, int)
Returns a (non-cryptographic) hash of a memory block.
Declaration
public static uint Hash(void* ptr, int bytes)
Parameters
Type | Name | Description |
---|---|---|
void* | ptr | A buffer. |
int | bytes | The number of bytes to hash. |
Returns
Type | Description |
---|---|
uint | A hash of the bytes. |
Remarks
The hash function used is djb2.
IsAligned(ulong, int)
Returns true if an offset has a given alignment.
Declaration
public static bool IsAligned(ulong offset, int alignmentPowerOfTwo)
Parameters
Type | Name | Description |
---|---|---|
ulong | offset | An offset |
int | alignmentPowerOfTwo | A non-zero, positive power of two. |
Returns
Type | Description |
---|---|
bool | True if the offset is a multiple of |
Exceptions
Type | Condition |
---|---|
ArgumentException | Thrown if |
IsAligned(void*, int)
Returns true if the address represented by the pointer has a given alignment.
Declaration
public static bool IsAligned(void* p, int alignmentPowerOfTwo)
Parameters
Type | Name | Description |
---|---|---|
void* | p | The pointer. |
int | alignmentPowerOfTwo | A non-zero, positive power of two. |
Returns
Type | Description |
---|---|
bool | True if the address is a multiple of |
Exceptions
Type | Condition |
---|---|
ArgumentException | Thrown if |
IsPowerOfTwo(int)
Returns true if a positive value is a non-zero power of two.
Declaration
public static bool IsPowerOfTwo(int value)
Parameters
Type | Name | Description |
---|---|---|
int | value | A positive value. |
Returns
Type | Description |
---|---|
bool | True if the value is a non-zero, positive power of two. |
Remarks
Result is invalid if value < 0
.
Log2Ceil(int)
Returns the binary logarithm of the value
, but the result is rounded up to the nearest integer.
Declaration
public static int Log2Ceil(int value)
Parameters
Type | Name | Description |
---|---|---|
int | value | The value. |
Returns
Type | Description |
---|---|
int | The binary logarithm of the |
Log2Floor(int)
Returns the binary logarithm of the value
, but the result is rounded down to the nearest integer.
Declaration
public static int Log2Floor(int value)
Parameters
Type | Name | Description |
---|---|---|
int | value | The value. |
Returns
Type | Description |
---|---|
int | The binary logarithm of the |