kstaticdeleter.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _KSTATIC_DELETER_H_
00024 #define _KSTATIC_DELETER_H_
00025
00026 #include <kglobal.h>
00027
00039 class KDECORE_EXPORT KStaticDeleterBase {
00040 public:
00041 virtual ~KStaticDeleterBase() { }
00047 virtual void destructObject();
00048 };
00049
00074 template<class type> class KStaticDeleter : public KStaticDeleterBase {
00075 public:
00076 KStaticDeleter() { deleteit = 0; globalReference = 0; array = false; }
00085 KDE_DEPRECATED type *setObject( type *obj, bool isArray = false) {
00086 deleteit = obj;
00087 globalReference = 0;
00088 array = isArray;
00089 if (obj)
00090 KGlobal::registerStaticDeleter(this);
00091 else
00092 KGlobal::unregisterStaticDeleter(this);
00093 return obj;
00094 }
00104 type *setObject( type* & globalRef, type *obj, bool isArray = false) {
00105 globalReference = &globalRef;
00106 deleteit = obj;
00107 array = isArray;
00108 if (obj)
00109 KGlobal::registerStaticDeleter(this);
00110 else
00111 KGlobal::unregisterStaticDeleter(this);
00112 globalRef = obj;
00113 return obj;
00114 }
00115
00120 virtual void destructObject() {
00121 if (globalReference)
00122 *globalReference = 0;
00123 if (array)
00124 delete [] deleteit;
00125 else
00126 delete deleteit;
00127 deleteit = 0;
00128 }
00129 virtual ~KStaticDeleter() {
00130 KGlobal::unregisterStaticDeleter(this);
00131 destructObject();
00132 }
00133 private:
00134 type *deleteit;
00135 type **globalReference;
00136 bool array;
00137 };
00138
00139 #endif
This file is part of the documentation for kdecore Library Version 3.4.0.