Dibbler - a portable DHCPv6  1.0.2RC1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Container.h
Go to the documentation of this file.
1 /*
2  * Dibbler - a portable DHCPv6
3  *
4  * authors: Tomasz Mrugalski <thomson@klub.com.pl>
5  * Marek Senderski <msend@o2.pl>
6  *
7  * Released under GNU GPL v2 licence
8  *
9  */
10 
11 #ifndef CONTAINER_H
12 #define CONTAINER_H
13 
14 #include <list>
15 #include <stdlib.h>
16 
17 #define TContainer< SPtr<x> > TContainer< SPtr< x > >
18 
19 template <class TYP>
20 class TContainer{
21 public:
22  TContainer();
23  ~TContainer() {
24  lista.clear();
25  }
26 
27  TContainer(const TContainer& old);
28 
29  void append(const TYP &foo) {
30  lista.push_back(foo);
31  }
32 
33  size_t count() const {
34  return lista.size();
35  }
36 
37  bool empty() const {
38  return lista.empty();
39  }
40 
41  void first();
42 
43  void delFirst() {
44  lista.pop_front();
45  first();
46  }
47 
48  void del() {
49  it--;
50  lista.erase(it);
51  first();
52  }
53 
54  void clear();
55 
56  TYP get() {
57  if (it != lista.end()) {
58  return *it++;
59  } else {
60  return TYP();
61  }
62  }
63 
64  TYP getLast() {
65  if (lista.empty()) {
66  return TYP();
67  } else {
68  return lista.back();
69  }
70  }
71 
72  TYP getFirst() {
73  if (lista.empty()) {
74  return TYP();
75  } else {
76  return lista.front();
77  }
78  }
79 
80  void delLast() {
81  lista.pop_back();
82  first();
83  }
84 
88  const std::list<TYP>& getSTL() const {
89  return (lista);
90  }
91 
92  std::list<TYP>& getSTL() {
93  return (lista);
94  }
95 private:
96  std::list<TYP> lista;
97  typename std::list<TYP>::iterator it;
98 };
99 
100 template <class TYP>
102 }
103 
104 template <class TYP>
106  lista.clear();
107 }
108 
109 template <class TYP>
111  it=lista.begin();
112  return;
113 }
114 
115 template <class TYP>
117  for (typename std::list<TYP>::const_iterator elem = old.lista.begin(); elem != old.lista.end(); ++elem) {
118  lista.push_back(*elem);
119  }
120 }
121 
122 
123 #endif
124