/home/docs/checkouts/readthedocs.org/user_builds/ratpac/checkouts/latest/src/util/include/RAT/ListHelp.hh Source File

Ratpac-two: /home/docs/checkouts/readthedocs.org/user_builds/ratpac/checkouts/latest/src/util/include/RAT/ListHelp.hh Source File
Ratpac-two
ListHelp.hh
1 #ifndef __RAT_Delete__
2 #define __RAT_Delete__
3 
4 #include <functional>
5 #include <vector>
6 
7 namespace RAT {
8 
9 template <typename T>
10 void deepdelete_vector(std::vector<T *> &vect) {
11  typename std::vector<T *>::iterator i;
12  for (i = vect.begin(); i != vect.end(); i++) delete (*i);
13  vect.resize(0);
14 }
15 
16 template <typename T>
17 void deepcopy_vector(std::vector<T *> &dest, const std::vector<T *> &src) {
18  deepdelete_vector(dest);
19  dest.resize(src.size());
20  for (unsigned i = 0; i < src.size(); i++) {
21  if (src[i])
22  dest[i] = dynamic_cast<T *>(src[i]->Clone()); // Use Clone() for proper polymorphism
23  else
24  dest[i] = 0;
25  }
26 }
27 
28 template <typename T>
29 void endcopy_vector(std::vector<T *> &dest, const std::vector<T *> &src) {
30  deepdelete_vector(dest);
31  dest.resize(2);
32  if (src.size() >= 2) { //
33  dest[0] = dynamic_cast<T *>(src.front()->Clone()); // Use Clone() for proper polymorphism
34  dest[1] = dynamic_cast<T *>(src.back()->Clone());
35  }
36 }
37 
38 } // namespace RAT
39 
40 #endif
Definition: CCCrossSecMessenger.hh:29