template<
uint MAX_ALLOCS = 0xFFFF, class ... TYPES>
class Util::ArrayAllocatorSafe< MAX_ALLOCS, TYPES >
The ArrayAllocatorSafe provides a thread safe variadic list of types which is to be contained in the allocator and fetching each value by providing the index into the list of types, which means the members are nameless.
Note that this is not a container for multiple arrays, but a object allocator that uses multiple arrays to store their variables parallelly, and should be treated as such.
There are two versions of this type, an unsafe and a safe one. Both are implemented in the same way.
The thread safe allocator requires the Get-methods to be within an Enter/Leave lockstep phase.
- See also
- arrayallocator.h
- Copyright
- (C) 2019-2020 Individual contributors, see AUTHORS file
|
| ArrayAllocatorSafe () |
| constructor
|
|
| ArrayAllocatorSafe (ArrayAllocatorSafe< MAX_ALLOCS, TYPES... > &&rhs) |
| move constructor
|
|
| ArrayAllocatorSafe (const ArrayAllocatorSafe< MAX_ALLOCS, TYPES... > &rhs) |
| copy constructor
|
|
| ~ArrayAllocatorSafe () |
| destructor
|
|
void | operator= (const ArrayAllocatorSafe< MAX_ALLOCS, TYPES... > &rhs) |
| assign operator
|
|
void | operator= (ArrayAllocatorSafe< MAX_ALLOCS, TYPES... > &&rhs) |
| move operator
|
|
uint32_t | Alloc () |
| allocate a new resource
|
|
void | EraseIndex (const uint32_t id) |
| Erase element for each.
|
|
void | EraseIndexSwap (const uint32_t id) |
| Erase element for each.
|
|
template<int MEMBER> |
tuple_array_t< MEMBER, TYPES... > & | Get (const uint32_t index) |
| get single item from resource
|
|
template<int MEMBER> |
const tuple_array_t< MEMBER, TYPES... > & | ConstGet (const uint32_t index) const |
| Get const explicitly.
|
|
template<int MEMBER> |
const tuple_array_t< MEMBER, TYPES... > & | Get (const uint32_t index) const |
| same as 32 bit get, but const
|
|
template<int MEMBER> |
void | Set (const uint32_t index, const tuple_array_t< MEMBER, TYPES... > &type) |
| set single item
|
|
template<int MEMBER> |
const Util::Array< tuple_array_t< MEMBER, TYPES... > > & | GetArray () const |
| get array const reference
|
|
template<int MEMBER> |
Util::Array< tuple_array_t< MEMBER, TYPES... > > & | GetArray () |
| get array
|
|
void | Set (const uint32_t index, TYPES...) |
| set for each in tuple
|
|
const uint32_t | Size () const |
| get number of used indices
|
|
void | Reserve (uint32_t size) |
| grow capacity of arrays to size
|
|
void | Clear () |
| clear entire allocator and start from scratch.
|
|
void | UpdateSize () |
| Any reserve and direct array access might mess with the size.
|
|
void | TryAcquire (const uint32_t index) |
| Spinlock to acquire.
|
|
bool | Acquire (const uint32_t index) |
| Acquire element, asserts if false and returns true if this call acquired.
|
|
void | Release (const uint32_t index) |
| Release an object, the next thread that acquires may use this instance as it fits.
|
|