1 #ifndef _Q_GLOBAL_WRITER_HH_
2 #define _Q_GLOBAL_WRITER_HH_
49 template<
class Q>
QError Set(
const std::string& name,
const Q& obj,
const std::string& descr =
"")
55 virtual QError SetQObject(
const std::string& name,
const std::string& className,
const Diana::QObject* obj,
const std::string& descr) = 0;
58 virtual QError Open(
const std::string& filename,
const std::string& opt =
"") = 0;
85 #define CREATE_GOLBAL_WRITER_IMPL(clazz, ext) \
86 class clazz ## Factory: public QGlobalWriterFactory{\
88 clazz ## Factory() : QGlobalWriterFactory(#clazz,ext) {}\
89 QGlobalWriter *Create(){ return new clazz; }\
92 #define REGISTER_GLOBAL_WRITER(clazz, ext) \
93 CREATE_GOLBAL_WRITER_IMPL(clazz, ext);\
94 extern "C" void registerInFactory ## clazz() {\
95 QGlobalWriterFactory* pt = new clazz ## Factory;\
96 QGlobalRWFactory::GetInstance().RegisterGlobalWriter(pt);\
std::string Demangle(const C &obj, int firstChar=0)
error class with error type and description
This class take care of plugin registration and creation.
Class that returns a pointer to the writer matching the given input filename.
abstract factory for QGlobalWriter.
const std::string & GetName() const
QGlobalWriterFactory(const std::string &name, const std::string &ext)
const std::string & GetExt() const
virtual QGlobalWriter * Create()=0
virtual ~QGlobalWriterFactory()
Abstract class for global writers.
QGlobalWriter(const std::string &name)
constructor
virtual ~QGlobalWriter()
destructor
QError Set(const std::string &name, const Q &obj, const std::string &descr="")
Set QObject, owned by the caller, - leave it undeclared if you can't implement it.
virtual QError Open(const std::string &filename, const std::string &opt="")=0
Open file, called by QGlobalWriterDispatcher.
virtual QError Close()=0
Close file, called by QGlobalWriterDispatcher.
virtual QError SetQObject(const std::string &name, const std::string &className, const Diana::QObject *obj, const std::string &descr)=0
base class for anything that has a name
base class for objects handled by QEvent and QGlobalDataManager.
the Diana namespace is needed because sometimes we use Qt libraries, that use same class names of our...