00001 #ifndef _IT_BUS_ARRAY_T_H_
00002 #define _IT_BUS_ARRAY_T_H_
00003
00004
00005
00006
00007 #include <it_bus/sequence_complex_type.h>
00008 #include <it_bus/element_list_t.h>
00009
00010 namespace IT_Bus
00011 {
00034 template<typename T>
00035 class ArrayT : public SequenceComplexType
00036 {
00037
00038 public:
00039
00043 ArrayT()
00044 {
00045 }
00046
00052 operator const IT_Vector<T> &() const
00053 {
00054 return get_element_list();
00055 }
00056
00057
00063 operator IT_Vector<T> &()
00064 {
00065 return get_element_list();
00066 }
00067
00068
00079 typename IT_Vector<T>::ConstReference
00080 operator[](
00081 const size_t pos
00082 ) const
00083 {
00084 return get_element_list()[pos];
00085 }
00086
00087
00098 typename IT_Vector<T>::Reference
00099 operator[](
00100 const size_t pos
00101 )
00102 {
00103 return get_element_list()[pos];
00104 }
00105
00106
00112 typename IT_Vector<T>::Iterator
00113 begin()
00114 {
00115 return get_element_list().begin();
00116 }
00117
00118
00124 typename IT_Vector<T>::ConstIterator
00125 begin() const
00126 {
00127 return get_element_list().begin();
00128 }
00129
00130
00137 typename IT_Vector<T>::Iterator
00138 end()
00139 {
00140 return get_element_list().end();
00141 }
00142
00143
00150 typename IT_Vector<T>::ConstIterator
00151 end() const
00152 {
00153 return get_element_list().end();
00154 }
00155
00156
00163 typename IT_Vector<T>::ReverseIterator
00164 rbegin()
00165 {
00166 return get_element_list().rbegin();
00167 }
00168
00169
00176 typename IT_Vector<T>::ConstReverseIterator
00177 rbegin() const
00178 {
00179 return get_element_list().rbegin();
00180 }
00181
00182
00189 typename IT_Vector<T>::ReverseIterator
00190 rend()
00191 {
00192 return get_element_list().rend();
00193 }
00194
00195
00202 typename IT_Vector<T>::ConstReverseIterator
00203 rend() const
00204 {
00205 return get_element_list().rend();
00206 }
00207
00208
00215 typename IT_Vector<T>::SizeType
00216 size() const
00217 {
00218 return get_element_list().get_size();
00219 }
00220
00221
00228 typename IT_Vector<T>::SizeType
00229 get_size() const
00230 {
00231 return get_element_list().get_size();
00232 }
00233
00234
00242 void
00243 set_size(
00244 typename IT_Vector<T>::SizeType sz
00245 )
00246 {
00247 get_element_list().set_size(sz);
00248 }
00249
00250
00251 typename IT_Vector<T>::SizeType
00252 capacity() const
00253 {
00254 return get_element_list().capacity();
00255 }
00256
00257
00264 IT_Bool
00265 empty() const
00266 {
00267 return get_element_list().empty();
00268 }
00269
00270
00277 typename IT_Vector<T>::Reference
00278 front()
00279 {
00280 return get_element_list().front();
00281 }
00282
00283
00290 typename IT_Vector<T>::ConstReference
00291 front() const
00292 {
00293 return get_element_list().front();
00294 }
00295
00296
00303 typename IT_Vector<T>::Reference
00304 back()
00305 {
00306 return get_element_list().back();
00307 }
00308
00309
00316 typename IT_Vector<T>::ConstReference
00317 back() const
00318 {
00319 return get_element_list().back();
00320 }
00321
00322
00329 void
00330 push_back(
00331 const T& item,
00332 IT_ExceptionHandler& = IT_EXCEPTION_HANDLER
00333 )
00334 {
00335 get_element_list().push_back(item);
00336 }
00337
00338
00346 typename IT_Vector<T>::Iterator
00347 insert(
00348 typename IT_Vector<T>::Iterator pos,
00349 const T& item,
00350 IT_ExceptionHandler& eh = IT_EXCEPTION_HANDLER
00351 )
00352 {
00353 return get_element_list().insert(pos, item, eh);
00354 }
00355
00356
00366 void
00367 insert(
00368 typename IT_Vector<T>::Iterator pos,
00369 typename IT_Vector<T>::SizeType n,
00370 const T& init_val = T(),
00371 IT_ExceptionHandler& eh = IT_EXCEPTION_HANDLER
00372 )
00373 {
00374 get_element_list().insert(pos, n, init_val, eh);
00375 }
00376
00377
00387 void
00388 insert(
00389 typename IT_Vector<T>::Iterator pos,
00390 const T* first,
00391 const T* last,
00392 IT_ExceptionHandler& eh = IT_EXCEPTION_HANDLER
00393 )
00394 {
00395 get_element_list().insert(pos, first, last, eh);
00396 }
00397
00398
00402 void
00403 pop_back()
00404 {
00405 get_element_list().pop_back();
00406 }
00407
00408
00415 typename IT_Vector<T>::Iterator
00416 erase(
00417 typename IT_Vector<T>::Iterator pos,
00418 IT_ExceptionHandler& eh = IT_EXCEPTION_HANDLER
00419 )
00420 {
00421 return get_element_list().erase(pos, eh);
00422 }
00423
00424
00432 typename IT_Vector<T>::Iterator
00433 erase(
00434 typename IT_Vector<T>::Iterator first,
00435 typename IT_Vector<T>::Iterator last,
00436 IT_ExceptionHandler& eh = IT_EXCEPTION_HANDLER
00437 )
00438 {
00439 return get_element_list().erase(first, last, eh);
00440 }
00441
00442
00443 virtual IT_Bus::AnyType &
00444 copy(const IT_Bus::AnyType & rhs) = 0;
00445
00446 protected:
00447 virtual const ElementListT<T> &
00448 get_element_list() const = 0;
00449
00450 virtual ElementListT<T> &
00451 get_element_list() = 0;
00452
00453 };
00454 }
00455
00456 #endif