/[svn]/linuxsampler/trunk/src/audiodriver/AudioOutputDeviceFactory.h
ViewVC logotype

Diff of /linuxsampler/trunk/src/audiodriver/AudioOutputDeviceFactory.h

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

revision 173 by schoenebeck, Mon Jun 14 19:33:16 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 "AudioOutputDevice.h"  #include "AudioOutputDevice.h"
32    
33  #define REGISTER_AUDIO_OUTPUT_DRIVER(DriverName,DriverClass)  static LinuxSampler::AudioOutputDeviceFactory::InnerFactoryRegistrator<DriverClass> __auto_register_audio_output_driver__##DriverClass(DriverName)  #define REGISTER_AUDIO_OUTPUT_DRIVER(DriverClass)  static LinuxSampler::AudioOutputDeviceFactory::InnerFactoryRegistrator<DriverClass> __auto_register_audio_output_driver__##DriverClass
34    #define REGISTER_AUDIO_OUTPUT_DRIVER_PARAMETER(DriverClass, ParameterClass) static LinuxSampler::AudioOutputDeviceFactory::ParameterRegistrator<DriverClass, DriverClass::ParameterClass> __auto_register_audio_output_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 AudioOutputDevice* Create(std::map<String,String>& Parameters)  = 0;                    virtual AudioOutputDevice* 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 AudioOutputDevice* Create(std::map<String,String>& Parameters)  { return new Driver_T(Parameters); }                    virtual AudioOutputDevice* 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                        AudioOutputDeviceFactory::InnerFactories[DriverName] = new InnerFactoryTemplate<Driver_T>;                        AudioOutputDeviceFactory::InnerFactories[Driver_T::Name()] = new InnerFactoryTemplate<Driver_T>;
60                          AudioOutputDeviceFactory::ParameterFactories[Driver_T::Name()] = new DeviceParameterFactory();
61                    }                    }
62            };            };
63    
64            static AudioOutputDevice*                        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>(AudioOutputDeviceFactory::ParameterFactories[Driver_T::Name()]);
69                      }
70              };
71    
72              static AudioOutputDevice*                        Create(String DriverName, std::map<String,String> Parameters) throw (LinuxSamplerException);
73            static std::vector<String>                       AvailableDrivers();            static std::vector<String>                       AvailableDrivers();
74            static String                                    AvailableDriversAsString();            static String                                    AvailableDriversAsString();
75            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 79  namespace LinuxSampler {
79    
80        protected:        protected:
81            static std::map<String, InnerFactory*> InnerFactories;            static std::map<String, InnerFactory*> InnerFactories;
82              static std::map<String, DeviceParameterFactory*> ParameterFactories;
83    };    };
84    
85  } // namespace LinuxSampler  } // namespace LinuxSampler

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

  ViewVC Help
Powered by ViewVC