Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef _DYNAMIC_ARRAY_H_
00012 #define _DYNAMIC_ARRAY_H_
00013
00014 #include "base/SGObject.h"
00015 #include "base/DynArray.h"
00016 #include "base/Parameter.h"
00017
00018 namespace shogun
00019 {
00028 template <class T> class CDynamicArray :public CSGObject
00029 {
00030 DynArray<T> m_array;
00031
00032 public:
00037 CDynamicArray(int32_t p_resize_granularity=128)
00038 : CSGObject()
00039 {
00040 set_generic<T>();
00041
00042 m_parameters->add_vector(&m_array.array,
00043 &m_array.num_elements, "array",
00044 "Memory for dynamic array.");
00045 m_parameters->add(&m_array.last_element_idx,
00046 "last_element_idx",
00047 "Element with largest index.");
00048 m_parameters->add(&m_array.resize_granularity,
00049 "resize_granularity",
00050 "shrink/grow step size.");
00051 }
00052
00053 virtual ~CDynamicArray() {}
00054
00060 inline int32_t set_granularity(int32_t g)
00061 { return m_array.set_granularity(g); }
00062
00067 inline int32_t get_array_size(void)
00068 { return m_array.get_array_size(); }
00069
00074 inline int32_t get_num_elements(void) const
00075 { return m_array.get_num_elements(); }
00076
00084 inline T get_element(int32_t index) const
00085 { return m_array.get_element(index); }
00086
00094 inline T get_element_safe(int32_t index) const
00095 { return m_array.get_element_safe(index); }
00096
00103 inline bool set_element(T element, int32_t index)
00104 { return m_array.set_element(element, index); }
00105
00112 inline bool insert_element(T element, int32_t index)
00113 { return m_array.insert_element(element, index); }
00114
00120 inline bool append_element(T element)
00121 { return m_array.append_element(element); }
00122
00128 inline void push_back(T element)
00129 { m_array.push_back(element); }
00130
00134 inline void pop_back(void)
00135 { m_array.pop_back(); }
00136
00142 inline T back(void)
00143 { return m_array.back(); }
00144
00151 inline int32_t find_element(T element)
00152 { return m_array.find_element(element); }
00153
00160 inline bool delete_element(int32_t idx)
00161 { return m_array.delete_element(idx); }
00162
00168 inline bool resize_array(int32_t n)
00169 { return m_array.resize_array(n); }
00170
00178 inline T* get_array(void)
00179 { return m_array.get_array(); }
00180
00187 inline void set_array(T* p_array, int32_t p_num_elements,
00188 int32_t array_size)
00189 { m_array.set_array(p_array, p_num_elements, array_size); }
00190
00192 inline void clear_array(void)
00193 { m_array.clear_array(); }
00194
00204 inline T operator[](int32_t index) const
00205 { return m_array[index]; }
00206
00212 inline CDynamicArray<T>& operator=(CDynamicArray<T>& orig)
00213 {
00214 m_array = orig.m_array;
00215 return *this;
00216 }
00217
00219 inline virtual const char* get_name() const
00220 { return "DynamicArray"; }
00221 };
00222 }
00223 #endif