//this file looks like plain C, but it's actually -*- c++ -*- #ifndef __TQObservable__ #define __TQObservable__ #include "TNamed.h" #include "TFolder.h" class TQSample; class TQFolder; class TQTaggable; #define DECLARE_OBSERVABLE_FACTORY(CLASSNAME,ARG) public: \ static const TQObservable::Factory Factory; \ static const TQObservable::FactoryBase* getFactory() \ { return &(CLASSNAME::Factory); } \ virtual bool hasFactory() const override { return true; } \ static TQObservable* tryCreateInstance(ARG); \ virtual TQObservable* tryCreateInstanceVirtual(const TString& expr) const final override \ { return CLASSNAME::tryCreateInstance(expr); } #define DEFINE_OBSERVABLE_FACTORY(CLASSNAME,ARG) \ const TQObservable::Factory CLASSNAME::Factory = TQObservable::Factory(#CLASSNAME); \ TQObservable* CLASSNAME::tryCreateInstance(ARG) #define DEFINE_TEMPLATE_OBSERVABLE_FACTORY(CLASSNAME,TEMPLATE,ARG) \ template const TQObservable::Factory > CLASSNAME