it_bus/array_t.h

00001 #ifndef _IT_BUS_ARRAY_T_H_
00002 #define _IT_BUS_ARRAY_T_H_
00003 
00004 // @Copyright 2003 IONA Technologies, Plc. All Rights Reserved.
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& /*eh*/ = 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  

Generated on Thu Sep 7 11:38:50 2006 for Artix by  doxygen 1.4.7