00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef NL_PTR_SET_H
00027 #define NL_PTR_SET_H
00028
00029 #include "nel/misc/types_nl.h"
00030 #include <set>
00031
00032
00033 namespace NL3D
00034 {
00035
00036
00037
00046 template<class T> class CPtrSet
00047 {
00048 public:
00049 std::set<T*> Set;
00050
00051 public:
00052
00054
00055 CPtrSet() {}
00056 ~CPtrSet() {clear();}
00057
00058
00060
00064 T *insert(T *newObject)
00065 {
00066 Set.insert(newObject);
00067 return newObject;
00068 }
00072 void erase(T *objectToRemove, const char *errorString= "Object do not exist in the set")
00073 {
00074 if(!objectToRemove)
00075 return;
00076 if(Set.erase(objectToRemove)!=1)
00077 nlerror(errorString);
00078 else
00079 delete objectToRemove;
00080 }
00083 void clear()
00084 {
00085 typename std::set<T*>::iterator it;
00086 for(it= Set.begin();it!=Set.end();it++)
00087 {
00088 delete *it;
00089 }
00090
00091 Set.clear();
00092 }
00093
00094
00095
00096 };
00097
00098
00099 }
00100
00101
00102 #endif // NL_PTR_SET_H
00103
00104