The GroupIndex Template Library
Main Page | Class Hierarchy | Class List | File List | Class Members

trivial_container.h

00001 #include <list>
00002 
00003 namespace groupindex
00004 {
00005 
00033 template <class T>
00034 class trivial_container : public T
00035 {
00036 
00037 public: 
00038         
00039         class iterator;
00040 
00041     inline void insert(const iterator& pos, const T& t)
00042     {
00043         *this = t;
00044     }
00045 
00046         inline trivial_container<T>() : T() {}
00047 
00048         inline trivial_container<T>(const T& t) : T(t) {}
00049 
00051     class iterator
00052         {
00053         private:
00054                 T* t;
00055         public:
00056 
00057                 iterator() {}
00058 
00059                 inline iterator(const trivial_container<T>& s)
00060                 {
00061                         this->t = (T*)&s;
00062                 }
00063 
00064                 inline iterator(trivial_container<T>* s)
00065                 {
00066                         this->t = s;
00067                 }
00068 
00069                 inline iterator& operator++()
00070                 {
00071                         t = NULL;
00072                         return *this;
00073                 }
00074 
00075                 inline iterator& operator++(int)
00076                 {
00077                         t = NULL;
00078                         return *this;
00079                 }
00080 
00081                 inline bool operator!=(const iterator& it)
00082                 {
00083                         return t!=it.t;
00084 
00085                 }
00086 
00087                 inline T& operator*()
00088                 {
00089                         return *t;
00090                 }
00091 
00092         };
00093 
00094         inline iterator begin() const
00095     {
00096             return iterator(*this);
00097     };
00098 
00099         inline iterator end() const
00100     {
00101             return iterator((trivial_container<T>*)NULL);
00102     };
00103 
00104 
00105 };
00106 
00110 template<class T>
00111 class ac_list : public ::std::list<T>
00112 {
00113 
00114 public:    
00115 
00116     ac_list() {}
00117 
00118     ac_list(T& t) 
00119     {
00120         insert(begin(),t);
00121     }
00122 
00123     ac_list<T>& operator=(const T& t)
00124     {
00125         insert(begin(),t);
00126     }
00127 
00128     operator T&()
00129     {
00130         return *begin();
00131     }
00132     
00133 };
00134 
00135 }
The GroupIndex-Template-Library
Universität Bonn, Institut für Informatik III, 2001