DeleteLater.h

00001 #ifndef ERIS_DELETE_LATER_H
00002 #define ERIS_DELETE_LATER_H
00003 
00004 namespace Eris
00005 {
00006 
00007 class BaseDeleteLater
00008 {
00009 public:
00010         virtual ~BaseDeleteLater() = 0;
00011 };
00012 
00013 
00014 template <class T>
00015 class DerivedDeleteLater : public BaseDeleteLater
00016 {
00017 public:
00018         DerivedDeleteLater(T* ins) : m_instance(ins) { }
00019     virtual ~DerivedDeleteLater()
00020     {
00021         delete m_instance;
00022     }
00023     
00024 private:
00025         T* m_instance;
00026 };
00027 
00028 void pushDeleteLater(BaseDeleteLater* bl);
00029 
00030 void execDeleteLaters();
00031 
00032 template <class T>
00033 void deleteLater(T* ins)
00034 {
00035         pushDeleteLater(new DerivedDeleteLater<T>(ins));
00036 }
00037 
00038 } // of namespace
00039 
00040 #endif // ERIS_DELETE_LATER_H

Generated on Sun Dec 16 13:02:24 2007 for Eris by  doxygen 1.5.2