26 #ifndef GENIE_FLUX_GFLAVORMIXERFACTORY_H
27 #define GENIE_FLUX_GFLAVORMIXERFACTORY_H
133 #define FLAVORMIXREG( _name ) \
134 genie::flux::GFlavorMixerI* _name ## _ctor_function () { return new _name; } \
135 static bool _name ## _creator_registered = \
136 genie::flux::GFlavorMixerFactory::Instance().RegisterCreator(# _name, \
137 & _name ## _ctor_function, \
138 & _name ## _creator_registered );
140 #define FLAVORMIXREG3( _ns, _name, _fqname ) \
142 genie::flux::GFlavorMixerI* _name ## _ctor_function () { return new _fqname; } \
143 static bool _name ## _creator_registered = \
144 genie::flux::GFlavorMixerFactory::Instance().RegisterCreator(# _fqname, \
145 & _fqname ## _ctor_function, \
146 & _fqname ## _creator_registered );}
148 #define FLAVORMIXREG4( _nsa, _nsb, _name, _fqname ) \
151 genie::flux::GFlavorMixerI* _name ## _ctor_function () { return new _fqname; } \
152 static bool _name ## _creator_registered = \
153 genie::flux::GFlavorMixerFactory::Instance().RegisterCreator(# _fqname, \
154 & _fqname ## _ctor_function, \
155 & _fqname ## _creator_registered );}}
static GFlavorMixerFactory & Instance()
static GFlavorMixerFactory * fgTheInstance
genie::flux::GFlavorMixerI * GetFlavorMixer(const std::string &)
std::vector< std::string > listnames
std::map< std::string, bool * > fBoolPtrMap
GENIE interface for flavor modification.
void operator=(const GFlavorMixerFactory &)
std::map< std::string, GFlavorMixerICtorFuncPtr_t > fFunctionMap
virtual ~GFlavorMixerFactory()
const std::vector< std::string > & AvailableFlavorMixers() const
bool IsKnownFlavorMixer(const std::string &)
A class for generating concrete GFlavorMixerI derived classes based on the factory pattern...
bool RegisterCreator(std::string name, GFlavorMixerICtorFuncPtr_t ctorptr, bool *ptr)
genie::flux::GFlavorMixerI *(* GFlavorMixerICtorFuncPtr_t)()