00001 00025 #ifndef __TOOLS_H__ 00026 #define __TOOLS_H__ 00027 00031 template<class T> 00032 class Lib { 00033 public: 00034 Lib () {} 00035 AuditingStrategy* create (int i) const { 00036 return dynamic_cast<T*> (dyncreate (mClassNames[i])); 00037 } 00038 int classes () const {return mClassNames.size;} 00039 void registerCls (const String& classname) {mClassNames.add(classname);} 00040 static AuditingStrategyLib& instance () {return sInstance;} 00041 protected: 00042 static AuditingStrategyLib sInstance; 00043 Array<String> mClassNames; 00044 }; 00045 00046 #endif 00047 00048