BEAST/BSE - Better Audio System and Sound Engine  0.8.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
sfidl-factory.hh
Go to the documentation of this file.
00001  // Licensed GNU LGPL v2.1 or later: http://www.gnu.org/licenses/lgpl.html
00002 #ifndef _SFIDL_FACTORY_H_
00003 #define _SFIDL_FACTORY_H_
00004 
00005 #include "sfidl-utils.hh"
00006 
00007 namespace Sfidl {
00008 
00009 class Options;
00010 class Parser;
00011 class CodeGenerator;
00012 
00013 class Factory {
00014 protected:
00015   Factory();
00016   virtual ~Factory();
00017 
00018 public:
00019   /*
00020    * creation routine - should create a code generator
00021    */
00022   virtual CodeGenerator *create (const Parser& parser) const = 0;
00023 
00024   /*
00025    * returns the command line option (e.g. --plugin)
00026    */
00027   virtual String option () const = 0;
00028 
00029   /*
00030    * returns the full description
00031    */
00032   virtual String description () const = 0;
00033 
00034   /*
00035    * lists all available factories
00036    */
00037   static std::list<Factory *> listFactories ();
00038 };
00039 
00040 };
00041 
00042 #endif /* _SFIDL_FACTORY_H_ */
00043 
00044 /* vim:set ts=8 sts=2 sw=2: */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines