SHOGUN
4.2.0
|
Template Dynamic array class that creates an array that can be used like a list or an array.
It grows and shrinks dynamically, while elements can be accessed via index. It is performance tuned for simple types like float etc. and for hi-level objects only stores pointers, which are not automagically SG_REF'd/deleted.
Definition at line 32 of file DynArray.h.
Public Member Functions | |
DynArray (int32_t p_resize_granularity=128, bool tracable=true) | |
DynArray (T *p_array, int32_t p_array_size, bool p_free_array, bool p_copy_array, bool tracable=true) | |
DynArray (const T *p_array, int32_t p_array_size, bool tracable=true) | |
virtual | ~DynArray () |
int32_t | set_granularity (int32_t g) |
int32_t | get_array_size () const |
int32_t | get_num_elements () const |
T | get_element (int32_t index) const |
T | get_last_element () const |
T * | get_element_ptr (int32_t index) |
T | get_element_safe (int32_t index) const |
bool | set_element (T element, int32_t index) |
bool | insert_element (T element, int32_t index) |
bool | append_element (T element) |
void | push_back (T element) |
void | pop_back () |
T | back () const |
int32_t | find_element (T element) const |
bool | delete_element (int32_t idx) |
bool | resize_array (int32_t n, bool exact_resize=false) |
T * | get_array () const |
void | set_array (T *p_array, int32_t p_num_elements, int32_t p_array_size, bool p_free_array, bool p_copy_array) |
void | set_array (const T *p_array, int32_t p_num_elements, int32_t p_array_size) |
void | clear_array (T value) |
void | reset (T value) |
void | shuffle () |
void | shuffle (CRandom *rand) |
void | set_const (const T &const_element) |
T | operator[] (int32_t index) const |
DynArray< T > & | operator= (DynArray< T > &orig) |
virtual const char * | get_name () const |
Protected Attributes | |
int32_t | resize_granularity |
T * | array |
int32_t | num_elements |
int32_t | current_num_elements |
bool | use_sg_mallocs |
bool | free_array |
Friends | |
template<class U > | |
class | CDynamicArray |
class | CDynamicObjectArray |
class | CCommUlongStringKernel |
DynArray | ( | int32_t | p_resize_granularity = 128 , |
bool | tracable = true |
||
) |
constructor
p_resize_granularity | resize granularity |
tracable |
Definition at line 44 of file DynArray.h.
DynArray | ( | T * | p_array, |
int32_t | p_array_size, | ||
bool | p_free_array, | ||
bool | p_copy_array, | ||
bool | tracable = true |
||
) |
constructor
p_array | another array |
p_array_size | array's size |
p_free_array | if array must be freed |
p_copy_array | if array must be copied |
tracable |
Definition at line 67 of file DynArray.h.
DynArray | ( | const T * | p_array, |
int32_t | p_array_size, | ||
bool | tracable = true |
||
) |
constructor
p_array | another array |
p_array_size | array's size |
tracable |
Definition at line 83 of file DynArray.h.
|
virtual |
destructor
Definition at line 94 of file DynArray.h.
bool append_element | ( | T | element | ) |
append array element to the end of array
element | element to append |
Definition at line 244 of file DynArray.h.
T back | ( | ) | const |
STD VECTOR compatible. Return array element at the end of array.
Definition at line 278 of file DynArray.h.
void clear_array | ( | T | value | ) |
clear the array (with e.g. zeros)
Definition at line 431 of file DynArray.h.
bool delete_element | ( | int32_t | idx | ) |
delete array element at idx (does not call SG_FREE() or the like)
idx | index |
Definition at line 315 of file DynArray.h.
int32_t find_element | ( | T | element | ) | const |
find first occurence of array element and return its index or -1 if not available
element | element to search for |
Definition at line 292 of file DynArray.h.
T* get_array | ( | ) | const |
get the array call get_array just before messing with it DO NOT call any [],resize/delete functions after get_array(), the pointer may become invalid !
Definition at line 372 of file DynArray.h.
int32_t get_array_size | ( | ) | const |
get array size (including granularity buffer)
Definition at line 121 of file DynArray.h.
T get_element | ( | int32_t | index | ) | const |
get array element at index
(does NOT do bounds checking)
index | index |
Definition at line 142 of file DynArray.h.
T* get_element_ptr | ( | int32_t | index | ) |
get array element at index as pointer
(does NOT do bounds checking)
index | index |
Definition at line 163 of file DynArray.h.
T get_element_safe | ( | int32_t | index | ) | const |
get array element at index
(does bounds checking)
index | index |
Definition at line 175 of file DynArray.h.
T get_last_element | ( | ) | const |
gets last array element
Definition at line 151 of file DynArray.h.
|
virtual |
Definition at line 511 of file DynArray.h.
int32_t get_num_elements | ( | ) | const |
bool insert_element | ( | T | element, |
int32_t | index | ||
) |
insert array element at index
element | element to insert |
index | index |
Definition at line 223 of file DynArray.h.
operator overload for array assignment. Left array is resized if needed.
orig | original array |
Definition at line 488 of file DynArray.h.
T operator[] | ( | int32_t | index | ) | const |
operator overload for array read only access use set_element() for write access (will also make the array dynamically grow)
DOES NOT DO ANY BOUNDS CHECKING
index | index |
Definition at line 477 of file DynArray.h.
void pop_back | ( | ) |
STD VECTOR compatible. Delete array element at the end of array.
Definition at line 265 of file DynArray.h.
void push_back | ( | T | element | ) |
STD VECTOR compatible. Append array element to the end of array.
element | element to append |
Definition at line 254 of file DynArray.h.
void reset | ( | T | value | ) |
resets the array (as if it was just created), keeps granularity
Definition at line 441 of file DynArray.h.
bool resize_array | ( | int32_t | n, |
bool | exact_resize = false |
||
) |
resize the array
n | new size |
exact_resize | resize exactly to size n |
Definition at line 340 of file DynArray.h.
void set_array | ( | T * | p_array, |
int32_t | p_num_elements, | ||
int32_t | p_array_size, | ||
bool | p_free_array, | ||
bool | p_copy_array | ||
) |
set the array pointer and free previously allocated memory
p_array | new array |
p_num_elements | last element index + 1 |
p_array_size | number of elements in array |
p_free_array | if array must be freed |
p_copy_array | if array must be copied |
Definition at line 385 of file DynArray.h.
void set_array | ( | const T * | p_array, |
int32_t | p_num_elements, | ||
int32_t | p_array_size | ||
) |
set the array pointer and free previously allocated memory
p_array | new array |
p_num_elements | last element index + 1 |
p_array_size | number of elements in array |
Definition at line 413 of file DynArray.h.
void set_const | ( | const T & | const_element | ) |
set array with a constant
Definition at line 462 of file DynArray.h.
bool set_element | ( | T | element, |
int32_t | index | ||
) |
set array element at index
element | element to set |
index | index |
Definition at line 191 of file DynArray.h.
int32_t set_granularity | ( | int32_t | g | ) |
set the resize granularity
g | new granularity |
Definition at line 110 of file DynArray.h.
void shuffle | ( | ) |
randomizes the array (not thread safe!)
Definition at line 448 of file DynArray.h.
void shuffle | ( | CRandom * | rand | ) |
randomizes the array with external random state
Definition at line 455 of file DynArray.h.
|
friend |
Definition at line 36 of file DynArray.h.
|
friend |
Definition at line 34 of file DynArray.h.
|
friend |
Definition at line 35 of file DynArray.h.
|
protected |
memory for dynamic array
Definition at line 518 of file DynArray.h.
|
protected |
the number of currently used elements
Definition at line 524 of file DynArray.h.
|
protected |
if array must be freed
Definition at line 530 of file DynArray.h.
|
protected |
the number of potentially used elements in array
Definition at line 521 of file DynArray.h.
|
protected |
shrink/grow step size
Definition at line 515 of file DynArray.h.
|
protected |
whether SG_MALLOC or just malloc etc shall be used
Definition at line 527 of file DynArray.h.