#include <list>
#include <utility>
+#include <lib/base/object.h>
class eAutoInit;
virtual void closeNow()=0;
protected:
int rl;
- char *description;
+ const char *description;
public:
- eAutoInit(int rl, char *description): rl(rl), description(description)
+ eAutoInit(int rl, const char *description): rl(rl), description(description)
{
}
virtual ~eAutoInit();
{
return t;
}
- eAutoInitP1(const T2 &arg, int runl, char *description): eAutoInit(runl, description), arg(arg)
+ eAutoInitP1(const T2 &arg, int runl, const char *description): eAutoInit(runl, description), arg(arg)
{
eInit::add(rl, this);
}
{
return t;
}
- eAutoInitP0(int runl, char *description): eAutoInit(runl, description)
+ eAutoInitP0(int runl, const char *description): eAutoInit(runl, description)
{
eInit::add(rl, this);
}
}
};
+template<class T1> class
+eAutoInitPtr: protected eAutoInit
+{
+ ePtr<T1> t;
+ void initNow()
+ {
+ t = new T1();
+ }
+ void closeNow()
+ {
+ t = 0;
+ }
+public:
+ operator T1*()
+ {
+ return t;
+ }
+ T1 *operator->()
+ {
+ return t;
+ }
+ eAutoInitPtr(int runl, const char *description): eAutoInit(runl, description)
+ {
+ eInit::add(rl, this);
+ }
+ ~eAutoInitPtr()
+ {
+ eInit::remove(rl, this);
+ }
+};
+
#endif