/[svn]/linuxsampler/trunk/src/mididriver/MidiInputDeviceFactory.h
ViewVC logotype

Diff of /linuxsampler/trunk/src/mididriver/MidiInputDeviceFactory.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 173 by senkov, Mon Jun 28 04:21:11 2004 UTC revision 174 by senkov, Tue Jul 6 03:27:38 2004 UTC
# Line 27  Line 27 
27  #include <vector>  #include <vector>
28    
29  #include "../common/LinuxSamplerException.h"  #include "../common/LinuxSamplerException.h"
30    #include "../drivers/DeviceParameterFactory.h"
31  #include "MidiInputDevice.h"  #include "MidiInputDevice.h"
32    
33  #define REGISTER_MIDI_INPUT_DRIVER(DriverName,DriverClass)  static LinuxSampler::MidiInputDeviceFactory::InnerFactoryRegistrator<DriverClass> __auto_register_midi_input_driver__##DriverClass(DriverName)  #define REGISTER_MIDI_INPUT_DRIVER(DriverClass)  static LinuxSampler::MidiInputDeviceFactory::InnerFactoryRegistrator<DriverClass> __auto_register_midi_input_driver__##DriverClass
34    #define REGISTER_MIDI_INPUT_DRIVER_PARAMETER(DriverClass, ParameterClass)  static LinuxSampler::MidiInputDeviceFactory::ParameterRegistrator<DriverClass, DriverClass::ParameterClass> __auto_register_midi_input_driver_parameter__##DriverClass##ParameterClass
35    
36  namespace LinuxSampler {  namespace LinuxSampler {
37    
# Line 37  namespace LinuxSampler { Line 39  namespace LinuxSampler {
39        public:        public:
40            class InnerFactory {            class InnerFactory {
41                public:                public:
42                    virtual MidiInputDevice* Create(std::map<String,String>& Parameters)  = 0;                    virtual MidiInputDevice* Create(std::map<String,DeviceCreationParameter*>& Parameters)  = 0;
                   virtual std::map<String,DeviceCreationParameter*> AvailableParameters() = 0;  
43                    virtual String Description() = 0;                    virtual String Description() = 0;
44                    virtual String Version() = 0;                    virtual String Version() = 0;
45            };            };
# Line 46  namespace LinuxSampler { Line 47  namespace LinuxSampler {
47            template <class Driver_T>            template <class Driver_T>
48            class InnerFactoryTemplate : public InnerFactory {            class InnerFactoryTemplate : public InnerFactory {
49                public:                public:
50                    virtual MidiInputDevice* Create(std::map<String,String>& Parameters)  { return new Driver_T(Parameters); }                    virtual MidiInputDevice* Create(std::map<String,DeviceCreationParameter*>& Parameters)  { return new Driver_T(Parameters); }
                   virtual std::map<String,DeviceCreationParameter*> AvailableParameters() { return Driver_T::AvailableParameters(); }  
51                    virtual String Description() { return Driver_T::Description(); }                    virtual String Description() { return Driver_T::Description(); }
52                    virtual String Version()     { return Driver_T::Version();     }                    virtual String Version()     { return Driver_T::Version();     }
53            };            };
# Line 55  namespace LinuxSampler { Line 55  namespace LinuxSampler {
55            template <class Driver_T>            template <class Driver_T>
56            class InnerFactoryRegistrator {            class InnerFactoryRegistrator {
57                public:                public:
58                    InnerFactoryRegistrator(String DriverName) {                    InnerFactoryRegistrator() {
59                        MidiInputDeviceFactory::InnerFactories[DriverName] = new InnerFactoryTemplate<Driver_T>;                        MidiInputDeviceFactory::InnerFactories[Driver_T::Name()] = new InnerFactoryTemplate<Driver_T>;
60                          MidiInputDeviceFactory::ParameterFactories[Driver_T::Name()] = new DeviceParameterFactory();
61                    }                    }
62            };            };
63    
64            static MidiInputDevice*                          Create(String DriverName, std::map<String,String>& Parameters) throw (LinuxSamplerException);            template <class Driver_T, class Parameter_T>
65              class ParameterRegistrator {
66                  public:
67                      ParameterRegistrator() {
68                              DeviceParameterFactory::Register<Parameter_T>(MidiInputDeviceFactory::ParameterFactories[Driver_T::Name()]);
69                      }
70              };
71    
72    
73              static MidiInputDevice*                          Create(String DriverName, std::map<String,String> Parameters) throw (LinuxSamplerException);
74            static std::vector<String>                       AvailableDrivers();            static std::vector<String>                       AvailableDrivers();
75            static String                                    AvailableDriversAsString();            static String                                    AvailableDriversAsString();
76            static std::map<String,DeviceCreationParameter*> GetAvailableDriverParameters(String DriverName) throw (LinuxSamplerException);            static std::map<String,DeviceCreationParameter*> GetAvailableDriverParameters(String DriverName) throw (LinuxSamplerException);
# Line 70  namespace LinuxSampler { Line 80  namespace LinuxSampler {
80    
81        protected:        protected:
82            static std::map<String, InnerFactory*> InnerFactories;            static std::map<String, InnerFactory*> InnerFactories;
83              static std::map<String, DeviceParameterFactory*> ParameterFactories;
84    };    };
85    
86  } // namespace LinuxSampler  } // namespace LinuxSampler

Legend:
Removed from v.173  
changed lines
  Added in v.174

  ViewVC Help
Powered by ViewVC