QGlobalReader.hh Go to the documentation of this file. 00001 #ifndef _Q_GLOBAL_READER_HH_
00002 #define _Q_GLOBAL_READER_HH_
00003
00028 #include "QCuore.hh"
00029 #include "QNamed.hh"
00030 #include "QError.hh "
00031 #include "QMessage.hh"
00032 #include <string>
00033 #include "QGlobalRWFactory.hh "
00034
00035 class TObject;
00036 namespace Cuore {class QObject ;}
00037 using namespace Cuore;
00038
00039
00040 class QGlobalReader : public QNamed
00041 {
00042 public :
00044 QGlobalReader (const std::string& name) : QNamed(name) {}
00045
00047 virtual ~QGlobalReader () {}
00048
00050 virtual const QObject * GetQObject (const std::string& name) const ;
00051
00053 virtual const TObject* GetTObject (const std::string& name) const ;
00054
00056 virtual double GetDouble (const std::string& name) const ;
00057
00059 virtual int GetInt (const std::string& name) const ;
00060
00062 virtual float GetFloat (const std::string& name) const ;
00063
00065 virtual bool GetBool (const std::string& name) const ;
00066
00068 virtual std::string GetString (const std::string& name) const ;
00069
00070 protected :
00071
00073 virtual QError Open (const std::string& filename, const std::string& opt = "" ) = 0;
00074
00076 virtual QError Close () = 0;
00077
00078 friend class QGlobalReaderDispatcher ;
00079
00080 };
00081
00087 class QGlobalReaderFactory {
00088 public :
00089 QGlobalReaderFactory (const std::string& name, const std::string& ext) {fName = name; fExt = ext;}
00090 const std::string& GetName() const { return fName;}
00091 const std::string& GetExt() const { return fExt;}
00092 virtual ~QGlobalReaderFactory () {};
00093 private :
00094 virtual QGlobalReader * Create() = 0;
00095 std::string fName;
00096 std::string fExt;
00097 friend class QGlobalRWFactory ;
00098 };
00099
00100
00101 #define CREATE_GOLBAL_READER_IMPL(clazz,ext) \
00102 class clazz ## Factory: public QGlobalReaderFactory{\
00103 public:\
00104 clazz ## Factory() : QGlobalReaderFactory(#clazz,ext) {}\
00105 QGlobalReader *Create(){ return new clazz; }\
00106 };
00107
00108 #define REGISTER_GLOBAL_READER(clazz, ext) \
00109 CREATE_GOLBAL_READER_IMPL(clazz, ext);\
00110 extern "C" void registerInFactory ## clazz() {\
00111 QGlobalReaderFactory* pt = new clazz ## Factory;\
00112 QGlobalRWFactory::GetInstance().RegisterGlobalReader(pt);\
00113 }
00114
00115 #endif
In questo sito non sono utilizzati cookie per la profilazione degli utenti. Utilizza cookie di sessione, necessari per il corretto funzionamento dello stesso e per gestire l'autenticazione ai servizi on-line, alla intranet e alle aree riservate...
leggi tutto Più info OK