YAPOG  0.0.1
Yet Another Pokemon Online Game
List.hxx
Go to the documentation of this file.
1 #ifndef YAPOG_LIST_HXX
2 # define YAPOG_LIST_HXX
3 
4 # include <algorithm>
5 
6 namespace yap
7 {
8  namespace collection
9  {
10  template <typename T>
11  inline List<T>::List ()
12  : data_ ()
13  {
14  }
15 
16  template <typename T>
17  inline List<T>::List (const List<T>& copy)
18  : data_ (copy.data_)
19  {
20  }
21 
22  template <typename T>
23  inline List<T>& List<T>::operator= (const List<T>& copy)
24  {
25  if (&copy == this)
26  return *this;
27 
28  data_ = copy.data_;
29 
30  return *this;
31  }
32 
33  template <typename T>
34  inline typename List<T>::ItType List<T>::begin ()
35  {
36  return data_.begin ();
37  }
38 
39  template <typename T>
40  inline typename List<T>::ConstItType List<T>::begin () const
41  {
42  return data_.begin ();
43  }
44 
45  template <typename T>
46  inline typename List<T>::ItType List<T>::Begin ()
47  {
48  return begin ();
49  }
50 
51  template <typename T>
52  inline typename List<T>::ConstItType List<T>::Begin () const
53  {
54  return begin ();
55  }
56 
57  template <typename T>
58  inline typename List<T>::ItType List<T>::end ()
59  {
60  return data_.end ();
61  }
62 
63  template <typename T>
64  inline typename List<T>::ConstItType List<T>::end () const
65  {
66  return data_.end ();
67  }
68 
69  template <typename T>
70  inline typename List<T>::ItType List<T>::End ()
71  {
72  return end ();
73  }
74 
75  template <typename T>
76  inline typename List<T>::ConstItType List<T>::End () const
77  {
78  return end ();
79  }
80 
81  template <typename T>
82  inline void List<T>::Add (const T& data)
83  {
84  data_.push_back (data);
85  }
86 
87  template <typename T>
88  inline void List<T>::Add (const List<T>& data)
89  {
90  data_.insert (End (), data.Begin (), data.End ());
91  }
92 
93  template <typename T>
94  inline void List<T>::AddFront (const T& data)
95  {
96  data_.push_front (data);
97  }
98 
99  template <typename T>
100  inline void List<T>::AddFront (const List<T>& data)
101  {
102  data_.insert (Begin (), data.Begin (), data.End ());
103  }
104 
105  template <typename T>
106  inline bool List<T>::Contains (const T& data) const
107  {
108  return std::find (Begin (), End (), data) != End ();
109  }
110 
111  template <typename T>
112  inline bool List<T>::Contains (const List<T>& data) const
113  {
114  for (const T& t : *this)
115  if (Contains (t))
116  return true;
117 
118  return false;
119  }
120 
121  template <typename T>
122  inline void List<T>::Remove (const T& data)
123  {
124  data_.remove (data);
125  }
126 
127  template <typename T>
128  inline void List<T>::RemoveFront ()
129  {
130  if (IsEmpty ())
131  return;
132 
133  data_.pop_front ();
134  }
135 
136  template <typename T>
137  inline void List<T>::RemoveBack ()
138  {
139  if (IsEmpty ())
140  return;
141 
142  data_.pop_back ();
143  }
144 
145  template <typename T>
146  inline void List<T>::Clear ()
147  {
148  data_.clear ();
149  }
150 
151  template <typename T>
152  inline bool List<T>::IsEmpty () const
153  {
154  return data_.empty ();
155  }
156 
157  template <typename T>
158  inline typename List<T>::SizeType List<T>::Count () const
159  {
160  return data_.size ();
161  }
162 
163  template <typename T>
164  template <typename C>
165  inline void List<T>::Sort ()
166  {
167  data_.sort (C ());
168  }
169  } // namespace collection
170 } // namespace yap
171 
172 #endif // YAPOG_LIST_HXX