3 #include <core_api/lsglobaldefinitions.h>
38 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
83 LSPodDataArray(
size_t size)
86 dataArray =
new T[size];
91 virtual ~LSPodDataArray()
103 template<
class _Ty,
class _Alloc>
104 class LSPod<std::vector<_Ty, _Alloc> >
108 LSPod(
const std::vector<_Ty, _Alloc>& from);
111 LSPod(
const LSPod<std::vector<_Ty, _Alloc> >& from);
112 LSPod<std::vector<_Ty, _Alloc> >& operator=(
const LSPod<std::vector<_Ty, _Alloc> >& from);
118 std::vector<_Ty, _Alloc> get()
const;
122 LSPodDataArray<LSPod<_Ty>*>* data;
126 template<
class _Ty,
class _Alloc>
127 LSPod<std::vector<_Ty, _Alloc> >::LSPod(
const std::vector<_Ty, _Alloc>& from)
129 , data(new LSPodDataArray<LSPod<_Ty>*>(from.size()))
131 for (
size_t i = 0; i < size; ++i)
132 data->dataArray[i] =
new LSPod<_Ty>(from[i]);
136 template<
class _Ty,
class _Alloc>
137 LSPod<std::vector<_Ty, _Alloc> >::LSPod(
const LSPod<std::vector<_Ty, _Alloc> >& from)
139 , data(new LSPodDataArray<LSPod<_Ty>*>(from.size))
141 for (
size_t i = 0; i < size; ++i)
142 data->dataArray[i] =
new LSPod<_Ty>(*(from.data->dataArray[i]));
146 template<
class _Ty,
class _Alloc>
147 LSPod<std::vector<_Ty, _Alloc> >& LSPod<std::vector<_Ty, _Alloc> >::operator=(
const LSPod<std::vector<_Ty, _Alloc> >& from)
149 for (
size_t i = 0; i < size; ++i)
150 delete data->dataArray[i];
154 data =
new LSPodDataArray<LSPod<_Ty>*>(from.size);
155 for (
size_t i = 0; i < size; ++i)
156 data->dataArray[i] =
new LSPod<_Ty>(*(from.data->dataArray[i]));
162 template<
class _Ty,
class _Alloc>
163 LSPod<std::vector<_Ty, _Alloc> >::~LSPod()
165 for (
size_t i = 0; i < size; ++i)
166 delete data->dataArray[i];
171 template<
class _Ty,
class _Alloc>
172 std::vector<_Ty, _Alloc> LSPod<std::vector<_Ty, _Alloc> >::get()
const
174 std::vector<_Ty, _Alloc> v;
176 for (
size_t i = 0; i < size; ++i)
177 v.push_back(data->dataArray[i]->get());
184 template<
class _Ty,
class _Alloc>
185 class LSPod<std::list<_Ty, _Alloc> >
189 LSPod(
const std::list<_Ty, _Alloc>& from);
192 LSPod(
const LSPod<std::list<_Ty, _Alloc> >& from);
193 LSPod<std::list<_Ty, _Alloc> >& operator=(
const LSPod<std::list<_Ty, _Alloc> >& from);
199 std::list<_Ty, _Alloc> get()
const;
203 LSPodDataArray<LSPod<_Ty>*>* data;
207 template<
class _Ty,
class _Alloc>
208 LSPod<std::list<_Ty, _Alloc> >::LSPod(
const std::list<_Ty, _Alloc>& from)
210 , data(new LSPodDataArray<LSPod<_Ty>*>(from.size()))
213 typename std::list<_Ty, _Alloc>::const_iterator iter = from.begin();
214 for (; iter != from.end(); ++iter, ++i)
215 data->dataArray[i] =
new LSPod<_Ty>(*iter);
219 template<
class _Ty,
class _Alloc>
220 LSPod<std::list<_Ty, _Alloc> >::LSPod(
const LSPod<std::list<_Ty, _Alloc> >& from)
222 , data(new LSPodDataArray<LSPod<_Ty>*>(from.size))
224 for (
size_t i = 0; i < size; ++i)
225 data->dataArray[i] =
new LSPod<_Ty>(*(from.data->dataArray[i]));
229 template<
class _Ty,
class _Alloc>
230 LSPod<std::list<_Ty, _Alloc> >& LSPod<std::list<_Ty, _Alloc> >::operator=(
const LSPod<std::list<_Ty, _Alloc> >& from)
233 for (
size_t i = 0; i < size; ++i)
234 delete data->dataArray[i];
238 data =
new LSPodDataArray<LSPod<_Ty>*>(from.size);
239 for (
size_t i = 0; i < size; ++i)
240 data->dataArray[i] =
new LSPod<_Ty>(*(from.data->dataArray[i]));
246 template<
class _Ty,
class _Alloc>
247 LSPod<std::list<_Ty, _Alloc> >::~LSPod()
249 for (
size_t i = 0; i < size; ++i)
250 delete data->dataArray[i];
256 template<
class _Ty,
class _Alloc>
257 std::list<_Ty, _Alloc> LSPod<std::list<_Ty, _Alloc> >::get()
const
259 std::list<_Ty, _Alloc> l;
260 for (
size_t i = 0; i < size; ++i)
261 l.push_back(data->dataArray[i]->get());
268 template<
class _Kty,
class _Pr,
class _Alloc>
269 class LSPod<std::set<_Kty, _Pr, _Alloc> >
273 LSPod(
const std::set<_Kty, _Pr, _Alloc>& from);
276 LSPod(
const LSPod<std::set<_Kty, _Pr, _Alloc> >& from);
277 LSPod<std::set<_Kty, _Pr, _Alloc> >& operator=(
const LSPod<std::set<_Kty, _Pr, _Alloc> >& from);
283 std::set<_Kty, _Pr, _Alloc> get()
const;
287 LSPodDataArray<LSPod<_Kty>*>* data;
291 template<
class _Kty,
class _Pr,
class _Alloc>
292 LSPod<std::set<_Kty, _Pr, _Alloc> >::LSPod(
const std::set<_Kty, _Pr, _Alloc>& from)
294 , data(new LSPodDataArray<LSPod<_Kty>*>(from.size()))
297 typename std::set<_Kty, _Pr, _Alloc>::const_iterator iter = from.begin();
298 for (; iter != from.end(); ++iter, ++i)
299 data->dataArray[i] =
new LSPod<_Kty>(*iter);
303 template<
class _Kty,
class _Pr,
class _Alloc>
304 LSPod<std::set<_Kty, _Pr, _Alloc> >::LSPod(
const LSPod<std::set<_Kty, _Pr, _Alloc> >& from)
306 , data(new LSPodDataArray<LSPod<_Kty>*>(from.size))
308 for (
size_t i = 0; i < size; ++i)
309 data->dataArray[i] =
new LSPod<_Kty>(*(from.data->dataArray[i]));
313 template<
class _Kty,
class _Pr,
class _Alloc>
314 LSPod<std::set<_Kty, _Pr, _Alloc> >& LSPod<std::set<_Kty, _Pr, _Alloc> >::operator=(
const LSPod<std::set<_Kty, _Pr, _Alloc> >& from)
316 for (
size_t i = 0; i < size; ++i)
317 delete data->dataArray[i];
320 data =
new LSPodDataArray<LSPod<_Kty>*>(from.size);
322 for (
size_t i = 0; i < size; ++i)
323 data->dataArray[i] =
new LSPod<_Kty>(*(from.data->dataArray[i]));
329 template<
class _Kty,
class _Pr,
class _Alloc>
330 LSPod<std::set<_Kty, _Pr, _Alloc> >::~LSPod()
332 for (
size_t i = 0; i < size; ++i)
333 delete data->dataArray[i];
339 template<
class _Kty,
class _Pr,
class _Alloc>
340 std::set<_Kty, _Pr, _Alloc> LSPod<std::set<_Kty, _Pr, _Alloc> >::get()
const
342 std::set<_Kty, _Pr, _Alloc> s;
343 for (
size_t i = 0; i < size; ++i)
344 s.insert(data->dataArray[i]->get());
351 template<
class _Kty,
class _Ty,
class _Pr,
class _Alloc>
352 class LSPod<std::map<_Kty, _Ty, _Pr, _Alloc> >
356 LSPod(
const std::map<_Kty, _Ty, _Pr, _Alloc>& from);
359 LSPod(
const LSPod<std::map<_Kty, _Ty, _Pr, _Alloc> >& from);
360 LSPod<std::map<_Kty, _Ty, _Pr, _Alloc> >& operator=(
const LSPod<std::map<_Kty, _Ty, _Pr, _Alloc> >& from);
366 std::map<_Kty, _Ty, _Pr, _Alloc> get()
const;
370 LSPodDataArray<LSPod<_Kty>*>* keys;
371 LSPodDataArray<LSPod<_Ty>*>* values;
375 template<
class _Kty,
class _Ty,
class _Pr,
class _Alloc>
376 LSPod<std::map<_Kty, _Ty, _Pr, _Alloc> >::LSPod(
const std::map<_Kty, _Ty, _Pr, _Alloc>& from)
378 , keys(new LSPodDataArray<LSPod<_Kty>*>(from.size()))
379 , values(new LSPodDataArray<LSPod<_Ty>*>(from.size()))
382 typename std::map<_Kty, _Ty, _Pr, _Alloc>::const_iterator iter = from.begin();
383 for (; iter != from.end(); ++iter, ++i)
385 keys->dataArray[i] =
new LSPod<_Kty>(iter->first);
386 values->dataArray[i] =
new LSPod<_Ty>(iter->second);
391 template<
class _Kty,
class _Ty,
class _Pr,
class _Alloc>
392 LSPod<std::map<_Kty, _Ty, _Pr, _Alloc> >::LSPod(
const LSPod<std::map<_Kty, _Ty, _Pr, _Alloc> >& from)
394 , keys(new LSPodDataArray<LSPod<_Kty>*>(from.size))
395 , values(new LSPodDataArray<LSPod<_Ty>*>(from.size))
397 for (
size_t i = 0; i < size; ++i)
399 keys->dataArray[i] =
new LSPod<_Kty>(*(from.keys->dataArray[i]));
400 values->dataArray[i] =
new LSPod<_Ty>(*(from.values->dataArray[i]));
405 template<
class _Kty,
class _Ty,
class _Pr,
class _Alloc>
406 LSPod<std::map<_Kty, _Ty, _Pr, _Alloc> >& LSPod<std::map<_Kty, _Ty, _Pr, _Alloc> >::operator=(
const LSPod<std::map<_Kty, _Ty, _Pr, _Alloc> >& from)
408 for (
size_t i = 0; i < size; ++i)
410 delete keys->dataArray[i];
411 delete values->dataArray[i];
418 keys =
new LSPodDataArray<LSPod<_Kty>*>(from.size);
419 values =
new LSPodDataArray<LSPod<_Ty>*>(from.size);
421 for (
size_t i = 0; i < size; ++i)
423 keys->dataArray[i] =
new LSPod<_Kty>(*(from.keys->dataArray[i]));
424 values->dataArray[i] =
new LSPod<_Ty>(*(from.values->dataArray[i]));
431 template<
class _Kty,
class _Ty,
class _Pr,
class _Alloc>
432 LSPod<std::map<_Kty, _Ty, _Pr, _Alloc> >::~LSPod()
434 for (
size_t i = 0; i < size; ++i)
436 delete keys->dataArray[i];
437 delete values->dataArray[i];
445 template<
class _Kty,
class _Ty,
class _Pr,
class _Alloc>
446 std::map<_Kty, _Ty, _Pr, _Alloc> LSPod<std::map<_Kty, _Ty, _Pr, _Alloc> >::get()
const
448 std::map<_Kty, _Ty, _Pr, _Alloc> m;
449 for (
size_t i = 0; i < size; ++i)
450 m[keys->dataArray[i]->get()] = values->dataArray[i]->get();