11 #ifndef _DYNAMIC_ARRAY_H_
12 #define _DYNAMIC_ARRAY_H_
38 "Memory for dynamic array.");
58 CDynamicArray(int32_t p_dim1_size, int32_t p_dim2_size=1, int32_t p_dim3_size=1)
65 "Memory for dynamic array.");
68 "Element with largest index.");
71 "shrink/grow step size.");
85 CDynamicArray(T* p_array, int32_t p_dim1_size,
bool p_free_array,
bool p_copy_array)
91 "Memory for dynamic array.");
113 bool p_free_array,
bool p_copy_array)
114 :
CSGObject(),
m_array(p_array, p_dim1_size*p_dim2_size, p_free_array, p_copy_array),
name(
"Array")
119 "Memory for dynamic array.");
125 "resize_granularity",
143 int32_t p_dim3_size,
bool p_free_array,
bool p_copy_array)
144 :
CSGObject(),
m_array(p_array, p_dim1_size*p_dim2_size*p_dim3_size, p_free_array, p_copy_array),
name(
"Array")
149 "Memory for dynamic array.");
155 "resize_granularity",
170 CDynamicArray(
const T* p_array, int32_t p_dim1_size=1, int32_t p_dim2_size=1, int32_t p_dim3_size=1)
176 "Memory for dynamic array.");
182 "resize_granularity",
199 return m_array.set_granularity(g);
208 return m_array.get_array_size();
259 return m_array.get_num_elements();
269 inline const T&
get_element(int32_t idx1, int32_t idx2=0, int32_t idx3=0)
const
281 inline const T&
element(int32_t idx1, int32_t idx2=0, int32_t idx3=0)
const
293 inline T&
element(int32_t idx1, int32_t idx2=0, int32_t idx3=0)
306 inline T&
element(T* p_array, int32_t idx1, int32_t idx2=0, int32_t idx3=0)
324 inline T&
element(T* p_array, int32_t idx1, int32_t idx2, int32_t idx3, int32_t p_dim1_size, int32_t p_dim2_size)
328 ASSERT(idx1>=0 && idx1<p_dim1_size);
329 ASSERT(idx2>=0 && idx2<p_dim2_size);
331 return p_array[idx1+p_dim1_size*(idx2+p_dim2_size*idx3)];
340 return m_array.get_last_element();
352 return m_array.get_element_safe(index);
363 inline bool set_element(T e, int32_t idx1, int32_t idx2=0, int32_t idx3=0)
376 return m_array.insert_element(e, index);
386 return m_array.append_element(e);
423 return m_array.find_element(e);
434 return m_array.delete_element(idx);
444 inline bool resize_array(int32_t ndim1, int32_t ndim2=1, int32_t ndim3=1)
449 return m_array.resize_array(ndim1*ndim2*ndim3);
455 m_array.set_const(const_element);
476 inline void set_array(T* p_array, int32_t p_num_elements,
479 m_array.set_array(p_array, p_num_elements, array_size);
490 bool p_free_array,
bool copy_array)
495 m_array.set_array(p_array, dim1, dim1, p_free_array, copy_array);
507 int32_t dim2,
bool p_free_array,
bool copy_array)
513 m_array.set_array(p_array, dim1*dim2, dim1*dim2, p_free_array, copy_array);
526 int32_t dim2, int32_t dim3,
bool p_free_array,
bool copy_array)
531 m_array.set_array(p_array, dim1*dim2*dim3, dim1*dim2*dim3, p_free_array, copy_array);
541 m_array.set_array(p_array, p_size, p_size);
620 SG_PRINT(
"element(%d,:,%d) = [ ",i, k);
636 return "DynamicArray";