Struct UnsafePtrList
An unmanaged, resizable list, without any thread safety check features.
Namespace: Unity.Collections.LowLevel.Unsafe
Syntax
public struct UnsafePtrList : INativeList<IntPtr>, IEnumerable<IntPtr>, IEnumerable, IDisposable
Constructors
UnsafePtrList(Int32, Allocator, NativeArrayOptions)
Constructs a new list using the specified type of memory allocation.
Declaration
public UnsafePtrList(int initialCapacity, Allocator allocator, NativeArrayOptions options = NativeArrayOptions.UninitializedMemory)
Parameters
Type | Name | Description |
---|---|---|
Int32 | initialCapacity | The initial capacity of the list. If the list grows larger than its capacity, the internal array is copied to a new, larger array. |
Allocator | allocator | A member of the Unity.Collections.Allocator enumeration. |
NativeArrayOptions | options | Memory should be cleared on allocation or left uninitialized. |
Remarks
The list initially has a capacity of one. To avoid reallocating memory for the list, specify sufficient capacity up front.
UnsafePtrList(Int32, AllocatorManager.AllocatorHandle, NativeArrayOptions)
Constructs a new list using the specified type of memory allocation.
Declaration
public UnsafePtrList(int initialCapacity, AllocatorManager.AllocatorHandle allocator, NativeArrayOptions options = NativeArrayOptions.UninitializedMemory)
Parameters
Type | Name | Description |
---|---|---|
Int32 | initialCapacity | The initial capacity of the list. If the list grows larger than its capacity, the internal array is copied to a new, larger array. |
AllocatorManager.AllocatorHandle | allocator | A member of the Unity.Collections.Allocator enumeration. |
NativeArrayOptions | options | Memory should be cleared on allocation or left uninitialized. |
Remarks
The list initially has a capacity of one. To avoid reallocating memory for the list, specify sufficient capacity up front.
UnsafePtrList(Void**, Int32)
Constructs list as view into memory.
Declaration
public UnsafePtrList(void **ptr, int length)
Parameters
Type | Name | Description |
---|---|---|
Void** | ptr | |
Int32 | length |
Fields
Allocator
Declaration
public readonly AllocatorManager.AllocatorHandle Allocator
Field Value
Type | Description |
---|---|
AllocatorManager.AllocatorHandle |
capacity
Declaration
public readonly int capacity
Field Value
Type | Description |
---|---|
Int32 |
length
Declaration
public readonly int length
Field Value
Type | Description |
---|---|
Int32 |
Ptr
Declaration
[NativeDisableUnsafePtrRestriction]
public readonly void **Ptr
Field Value
Type | Description |
---|---|
Void** |
Properties
Capacity
Declaration
public int Capacity { get; set; }
Property Value
Type | Description |
---|---|
Int32 |
Implements
IsCreated
Reports whether memory for the container is allocated.
Declaration
public bool IsCreated { get; }
Property Value
Type | Description |
---|---|
Boolean | True if this container object's internal storage has been allocated. |
Remarks
Note that the container storage is not created if you use the default constructor. You must specify at least an allocation type to construct a usable container.
IsEmpty
Reports whether container is empty.
Declaration
public bool IsEmpty { get; }
Property Value
Type | Description |
---|---|
Boolean | True if this container empty. |
Item[Int32]
Declaration
public IntPtr this[int index] { get; set; }
Parameters
Type | Name | Description |
---|---|---|
Int32 | index |
Property Value
Type | Description |
---|---|
IntPtr |
Implements
Length
Declaration
public int Length { get; set; }
Property Value
Type | Description |
---|---|
Int32 |
Implements
Methods
Add(Void*)
Adds an element to the list.
Declaration
public void Add(void *value)
Parameters
Type | Name | Description |
---|---|---|
Void* | value | The struct to be added at the end of the list. |
AddNoResize(Void*)
Adds an element to the list.
Declaration
public void AddNoResize(void *value)
Parameters
Type | Name | Description |
---|---|---|
Void* | value | The value to be added at the end of the list. |
Remarks
If the list has reached its current capacity, internal array won't be resized, and exception will be thrown.
AddRange(UnsafePtrList)
Adds the elements of a UnsafePtrList to this list.
Declaration
public void AddRange(UnsafePtrList list)
Parameters
Type | Name | Description |
---|---|---|
UnsafePtrList | list | Other container to copy elements from. |
AddRangeNoResize(Void**, Int32)
Adds elements from a buffer to this list.
Declaration
public void AddRangeNoResize(void **ptr, int length)
Parameters
Type | Name | Description |
---|---|---|
Void** | ptr | A pointer to the buffer. |
Int32 | length | The number of elements to add to the list. |
Remarks
If the list has reached its current capacity, internal array won't be resized, and exception will be thrown.
AddRangeNoResize(UnsafePtrList)
Adds elements from a list to this list.
Declaration
public void AddRangeNoResize(UnsafePtrList list)
Parameters
Type | Name | Description |
---|---|---|
UnsafePtrList | list | Other container to copy elements from. |
Remarks
If the list has reached its current capacity, internal array won't be resized, and exception will be thrown.
AsParallelReader()
Returns parallel reader instance.
Declaration
public UnsafePtrList.ParallelReader AsParallelReader()
Returns
Type | Description |
---|---|
UnsafePtrList.ParallelReader | Parallel reader instance. |
AsParallelWriter()
Returns parallel writer instance.
Declaration
public UnsafePtrList.ParallelWriter AsParallelWriter()
Returns
Type | Description |
---|---|
UnsafePtrList.ParallelWriter | Parallel writer instance. |
Clear()
Clears the list.
Declaration
public void Clear()
Remarks
List Capacity remains unchanged.
Contains(Void*)
Determines whether an element is in the list.
Declaration
public bool Contains(void *value)
Parameters
Type | Name | Description |
---|---|---|
Void* | value |
Returns
Type | Description |
---|---|
Boolean | True, if element is found. |
Create(Int32, Allocator, NativeArrayOptions)
Creates a new list with the specified initial capacity and type of memory allocation.
Declaration
public static UnsafePtrList*Create(int initialCapacity, Allocator allocator, NativeArrayOptions options = NativeArrayOptions.UninitializedMemory)
Parameters
Type | Name | Description |
---|---|---|
Int32 | initialCapacity | The initial capacity of the list. If the list grows larger than its capacity, the internal array is copied to a new, larger array. |
Allocator | allocator | A member of the Unity.Collections.Allocator enumeration. |
NativeArrayOptions | options | Memory should be cleared on allocation or left uninitialized. |
Returns
Type | Description |
---|---|
UnsafePtrList* | New initialized container. |
Create(Void**, Int32)
Declaration
public static UnsafePtrList*Create(void **ptr, int length)
Parameters
Type | Name | Description |
---|---|---|
Void** | ptr | |
Int32 | length |
Returns
Type | Description |
---|---|
UnsafePtrList* | New initialized container. |
Destroy(UnsafePtrList*)
Destroys list.
Declaration
public static void Destroy(UnsafePtrList*listData)
Parameters
Type | Name | Description |
---|---|---|
UnsafePtrList* | listData | Container to destroy. |
Dispose()
Disposes of this container and deallocates its memory immediately.
Declaration
public void Dispose()
Dispose(JobHandle)
Safely disposes of this container and deallocates its memory when the jobs that use it have completed.
Declaration
public JobHandle Dispose(JobHandle inputDeps)
Parameters
Type | Name | Description |
---|---|---|
JobHandle | inputDeps | The job handle or handles for any scheduled jobs that use this container. |
Returns
Type | Description |
---|---|
JobHandle | A new job handle containing the prior handles as well as the handle for the job that deletes the container. |
Remarks
You can call this function dispose of the container immediately after scheduling the job. Pass
the JobHandle returned by
the Job.Schedule
method using the jobHandle
parameter so the job scheduler can dispose the container after all jobs
using it have run.
ElementAt(Int32)
Declaration
public IntPtr ElementAt(int index)
Parameters
Type | Name | Description |
---|---|---|
Int32 | index |
Returns
Type | Description |
---|---|
IntPtr |
Implements
IndexOf(Void*)
Searches for the specified element in list.
Declaration
public int IndexOf(void *value)
Parameters
Type | Name | Description |
---|---|---|
Void* | value |
Returns
Type | Description |
---|---|
Int32 | The zero-based index of the first occurrence element if found, otherwise returns -1. |
RemoveAt(Int32)
Truncates the list by removing the item at the specified index, and shifting all remaining items to replace removed item. The list is shortened by one.
Declaration
public void RemoveAt(int index)
Parameters
Type | Name | Description |
---|---|---|
Int32 | index | The index of the item to delete. |
Remarks
This method of removing item is useful only in case when list is ordered and user wants to preserve order
in list after removal In majority of cases is not important and user should use more performant RemoveAtSwapBack
.
RemoveAtSwapBack(Int32)
Truncates the list by replacing the item at the specified index with the last item in the list. The list is shortened by one.
Declaration
public void RemoveAtSwapBack(int index)
Parameters
Type | Name | Description |
---|---|---|
Int32 | index | The index of the item to delete. |
RemoveRangeSwapBackWithBeginEnd(Int32, Int32)
Truncates the list by replacing the item at the specified index range with the items from the end the list. The list is shortened by number of elements in range.
Declaration
public void RemoveRangeSwapBackWithBeginEnd(int begin, int end)
Parameters
Type | Name | Description |
---|---|---|
Int32 | begin | The first index of the item to remove. |
Int32 | end | The index past-the-last item to remove. |
RemoveRangeWithBeginEnd(Int32, Int32)
Truncates the list by removing the items at the specified index range, and shifting all remaining items to replace removed items. The list is shortened by number of elements in range.
Declaration
public void RemoveRangeWithBeginEnd(int begin, int end)
Parameters
Type | Name | Description |
---|---|---|
Int32 | begin | The first index of the item to remove. |
Int32 | end | The index past-the-last item to remove. |
Remarks
This method of removing item(s) is useful only in case when list is ordered and user wants to preserve order
in list after removal In majority of cases is not important and user should use more performant RemoveRangeSwapBackWithBeginEnd
.
Resize(Int32, NativeArrayOptions)
Changes the list length, resizing if necessary.
Declaration
public void Resize(int length, NativeArrayOptions options = NativeArrayOptions.UninitializedMemory)
Parameters
Type | Name | Description |
---|---|---|
Int32 | length | The new length of the list. |
NativeArrayOptions | options | Memory should be cleared on allocation or left uninitialized. |
SetCapacity(Int32)
Set the number of items that can fit in the list.
Declaration
public void SetCapacity(int capacity)
Parameters
Type | Name | Description |
---|---|---|
Int32 | capacity | The number of items that the list can hold before it resizes its internal storage. |
TrimExcess()
Sets the capacity to the actual number of elements in the container.
Declaration
public void TrimExcess()