TDME2  1.9.200
ObjectDeleter.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <algorithm>
4 #include <vector>
5 
6 #include <tdme/tdme.h>
8 
9 using std::find;
10 using std::vector;
11 
12 namespace tdme {
13 namespace utilities {
14 
15 /**
16  * Object deleter
17  * @author Andreas Drewke
18  */
19 template<typename T>
20 class ObjectDeleter final
21 {
22 private:
23  vector<T*> objects;
24 
25 public:
26  // forbid class copy
28 
29  /**
30  * Public constructor
31  */
33  }
34 
35  /**
36  * Public destructor
37  */
39  for (auto object: objects) delete object;
40  objects.clear();
41  }
42 
43  /**
44  * Adds object
45  * @param object object
46  */
47  T* add(T* object) {
48  if (find(objects.begin(), objects.end(), object) != objects.end()) return object;
49  objects.push_back(object);
50  return object;
51  }
52 
53 };
54 
55 };
56 };
T * add(T *object)
Adds object.
Definition: ObjectDeleter.h:47
~ObjectDeleter()
Public destructor.
Definition: ObjectDeleter.h:38
Definition: fwd-tdme.h:4
#define FORBID_CLASS_COPY(CLASS)
Definition: tdme.h:6