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

Diff of /linuxsampler/trunk/src/drivers/midi/MidiInputDeviceFactory.h

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

revision 201 by schoenebeck, Tue Jul 13 22:10:21 2004 UTC revision 880 by schoenebeck, Tue Jun 27 22:57:37 2006 UTC
# Line 3  Line 3 
3   *   LinuxSampler - modular, streaming capable sampler                     *   *   LinuxSampler - modular, streaming capable sampler                     *
4   *                                                                         *   *                                                                         *
5   *   Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck   *   *   Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck   *
6     *   Copyright (C) 2005, 2006 Christian Schoenebeck                        *
7   *                                                                         *   *                                                                         *
8   *   This program is free software; you can redistribute it and/or modify  *   *   This program is free software; you can redistribute it and/or modify  *
9   *   it under the terms of the GNU General Public License as published by  *   *   it under the terms of the GNU General Public License as published by  *
# Line 26  Line 27 
27  #include <map>  #include <map>
28  #include <vector>  #include <vector>
29    
30  #include "../../common/LinuxSamplerException.h"  #include "../../common/Exception.h"
31  #include "../DeviceParameterFactory.h"  #include "../DeviceParameterFactory.h"
32  #include "MidiInputDevice.h"  #include "MidiInputDevice.h"
33    #include "../../Sampler.h"
34    
35  #define REGISTER_MIDI_INPUT_DRIVER(DriverClass)  static LinuxSampler::MidiInputDeviceFactory::InnerFactoryRegistrator<DriverClass> __auto_register_midi_input_driver__##DriverClass  #define REGISTER_MIDI_INPUT_DRIVER(DriverClass)  static LinuxSampler::MidiInputDeviceFactory::InnerFactoryRegistrator<DriverClass> __auto_register_midi_input_driver__##DriverClass
36  #define REGISTER_MIDI_INPUT_DRIVER_PARAMETER(DriverClass, ParameterClass)  static LinuxSampler::MidiInputDeviceFactory::ParameterRegistrator<DriverClass, DriverClass::ParameterClass> __auto_register_midi_input_driver_parameter__##DriverClass##ParameterClass  #define REGISTER_MIDI_INPUT_DRIVER_PARAMETER(DriverClass, ParameterClass)  static LinuxSampler::MidiInputDeviceFactory::ParameterRegistrator<DriverClass, DriverClass::ParameterClass> __auto_register_midi_input_driver_parameter__##DriverClass##ParameterClass
# Line 39  namespace LinuxSampler { Line 41  namespace LinuxSampler {
41        public:        public:
42            class InnerFactory {            class InnerFactory {
43                public:                public:
44                    virtual MidiInputDevice* Create(std::map<String,DeviceCreationParameter*>& Parameters)  = 0;                    virtual MidiInputDevice* Create(std::map<String,DeviceCreationParameter*>& Parameters, Sampler* pSampler) = 0;
45                    virtual String Description() = 0;                    virtual String Description() = 0;
46                    virtual String Version() = 0;                    virtual String Version() = 0;
47            };            };
# Line 47  namespace LinuxSampler { Line 49  namespace LinuxSampler {
49            template <class Driver_T>            template <class Driver_T>
50            class InnerFactoryTemplate : public InnerFactory {            class InnerFactoryTemplate : public InnerFactory {
51                public:                public:
52                    virtual MidiInputDevice* Create(std::map<String,DeviceCreationParameter*>& Parameters)  { return new Driver_T(Parameters); }                    virtual MidiInputDevice* Create(std::map<String,DeviceCreationParameter*>& Parameters, Sampler* pSampler) { return new Driver_T(Parameters, pSampler); }
53                    virtual String Description() { return Driver_T::Description(); }                    virtual String Description() { return Driver_T::Description(); }
54                    virtual String Version()     { return Driver_T::Version();     }                    virtual String Version()     { return Driver_T::Version();     }
55            };            };
# Line 56  namespace LinuxSampler { Line 58  namespace LinuxSampler {
58            class InnerFactoryRegistrator {            class InnerFactoryRegistrator {
59                public:                public:
60                    InnerFactoryRegistrator() {                    InnerFactoryRegistrator() {
61                        MidiInputDeviceFactory::InnerFactories[Driver_T::Name()] = new InnerFactoryTemplate<Driver_T>;                        MidiInputDeviceFactory::InnerFactories[Driver_T::Name()] = new MidiInputDeviceFactory::InnerFactoryTemplate<Driver_T>;
62                        MidiInputDeviceFactory::ParameterFactories[Driver_T::Name()] = new DeviceParameterFactory();                        MidiInputDeviceFactory::ParameterFactories[Driver_T::Name()] = new DeviceParameterFactory();
63                    }                    }
64            };            };
# Line 70  namespace LinuxSampler { Line 72  namespace LinuxSampler {
72            };            };
73    
74    
75            static MidiInputDevice*                          Create(String DriverName, std::map<String,String> Parameters) throw (LinuxSamplerException);            static MidiInputDevice*                          Create(String DriverName, std::map<String,String> Parameters, Sampler* pSampler) throw (Exception);
76            static std::vector<String>                       AvailableDrivers();            static std::vector<String>                       AvailableDrivers();
77            static String                                    AvailableDriversAsString();            static String                                    AvailableDriversAsString();
78            static std::map<String,DeviceCreationParameter*> GetAvailableDriverParameters(String DriverName) throw (LinuxSamplerException);            static std::map<String,DeviceCreationParameter*> GetAvailableDriverParameters(String DriverName) throw (Exception);
79            static DeviceCreationParameter*                  GetDriverParameter(String DriverName, String ParameterName) throw (LinuxSamplerException);            static DeviceCreationParameter*                  GetDriverParameter(String DriverName, String ParameterName) throw (Exception);
80            static String                                    GetDriverDescription(String DriverName) throw (LinuxSamplerException);            static String                                    GetDriverDescription(String DriverName) throw (Exception);
81            static String                                    GetDriverVersion(String DriverName) throw (LinuxSamplerException);            static String                                    GetDriverVersion(String DriverName) throw (Exception);
82    
83        protected:  //      protected: /* FIXME: fields below should be protected, causes errors on gcc 2.95 though */
84            static std::map<String, InnerFactory*> InnerFactories;            static std::map<String, InnerFactory*> InnerFactories;
85            static std::map<String, DeviceParameterFactory*> ParameterFactories;            static std::map<String, DeviceParameterFactory*> ParameterFactories;
86    };    };

Legend:
Removed from v.201  
changed lines
  Added in v.880

  ViewVC Help
Powered by ViewVC