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