00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __LS_DEVICE_PARAMETER_H__
00025 #define __LS_DEVICE_PARAMETER_H__
00026
00027 #include <map>
00028 #include <vector>
00029
00030 #include "../common/global.h"
00031 #include "../common/optional.h"
00032 #include "../common/Exception.h"
00033 #include "Device.h"
00034
00035 namespace LinuxSampler {
00036
00037
00038
00039 class DeviceRuntimeParameter {
00040 public:
00041 virtual String Type() = 0;
00042 virtual String Description() = 0;
00043 virtual bool Fix() = 0;
00044 virtual bool Multiplicity() = 0;
00045 virtual optional<String> RangeMin() = 0;
00046 virtual optional<String> RangeMax() = 0;
00047 virtual optional<String> Possibilities() = 0;
00048 virtual String Value() = 0;
00049 virtual void SetValue(String val) throw (Exception) = 0;
00050 virtual ~DeviceRuntimeParameter(){};
00051 };
00052
00053 class DeviceRuntimeParameterBool : public DeviceRuntimeParameter {
00054 public:
00055 DeviceRuntimeParameterBool(bool bVal);
00056 virtual String Type();
00057 virtual bool Multiplicity();
00058 virtual optional<String> RangeMin();
00059 virtual optional<String> RangeMax();
00060 virtual optional<String> Possibilities();
00061 virtual String Value();
00062 virtual void SetValue(String val) throw (Exception);
00063
00064 virtual bool ValueAsBool();
00065 virtual void SetValue(bool b) throw (Exception);
00066
00067 virtual void OnSetValue(bool b) throw (Exception) = 0;
00068 protected:
00069 bool bVal;
00070 };
00071
00072 class DeviceRuntimeParameterInt : public DeviceRuntimeParameter {
00073 public:
00074 DeviceRuntimeParameterInt(int iVal);
00075 virtual String Type();
00076 virtual bool Multiplicity();
00077 virtual optional<String> RangeMin();
00078 virtual optional<String> RangeMax();
00079 virtual optional<String> Possibilities();
00080 virtual String Value();
00081 virtual void SetValue(String val) throw (Exception);
00082
00083 virtual int ValueAsInt();
00084 virtual void SetValue(int i) throw (Exception);
00085
00086 virtual optional<int> RangeMinAsInt() = 0;
00087 virtual optional<int> RangeMaxAsInt() = 0;
00088 virtual std::vector<int> PossibilitiesAsInt() = 0;
00089 virtual void OnSetValue(int i) throw (Exception) = 0;
00090 protected:
00091 int iVal;
00092 };
00093
00094 class DeviceRuntimeParameterFloat : public DeviceRuntimeParameter {
00095 public:
00096 DeviceRuntimeParameterFloat(float fVal);
00097 virtual String Type();
00098 virtual bool Multiplicity();
00099 virtual optional<String> RangeMin();
00100 virtual optional<String> RangeMax();
00101 virtual optional<String> Possibilities();
00102 virtual String Value();
00103 virtual void SetValue(String val) throw (Exception);
00104
00105 virtual float ValueAsFloat();
00106 virtual void SetValue(float f) throw (Exception);
00107
00108 virtual optional<float> RangeMinAsFloat() = 0;
00109 virtual optional<float> RangeMaxAsFloat() = 0;
00110 virtual std::vector<float> PossibilitiesAsFloat() = 0;
00111 virtual void OnSetValue(float f) = 0;
00112 protected:
00113 float fVal;
00114 };
00115
00116 class DeviceRuntimeParameterString : public DeviceRuntimeParameter {
00117 public:
00118 DeviceRuntimeParameterString(String sVal);
00119 virtual ~DeviceRuntimeParameterString(){}
00120 virtual String Type();
00121 virtual bool Multiplicity();
00122 virtual optional<String> RangeMin();
00123 virtual optional<String> RangeMax();
00124 virtual optional<String> Possibilities();
00125 virtual String Value();
00126 virtual void SetValue(String val) throw (Exception);
00127
00128 virtual String ValueAsString();
00129 virtual void SetValueAsString(String s) throw (Exception);
00130
00131 virtual std::vector<String> PossibilitiesAsString() = 0;
00132 virtual void OnSetValue(String s) = 0;
00133 protected:
00134 String sVal;
00135 };
00136
00137 class DeviceRuntimeParameterStrings : public DeviceRuntimeParameter {
00138 public:
00139 DeviceRuntimeParameterStrings(std::vector<String> vS);
00140 virtual ~DeviceRuntimeParameterStrings(){}
00141 virtual String Type();
00142 virtual bool Multiplicity();
00143 virtual optional<String> RangeMin();
00144 virtual optional<String> RangeMax();
00145 virtual optional<String> Possibilities();
00146 virtual String Value();
00147 virtual void SetValue(String val) throw (Exception);
00148
00149 virtual std::vector<String> ValueAsStrings();
00150 virtual void SetValue(std::vector<String> vS) throw (Exception);
00151
00152 virtual std::vector<String> PossibilitiesAsString() = 0;
00153 virtual void OnSetValue(std::vector<String> vS) = 0;
00154 protected:
00155 std::vector<String> sVals;
00156 };
00157
00158
00159
00160 class DeviceCreationParameter : public DeviceRuntimeParameter {
00161 public:
00162 DeviceCreationParameter ( void ) { pDevice = NULL; }
00163 virtual bool Mandatory() = 0;
00164 virtual optional<String> Depends();
00165 virtual std::map<String,DeviceCreationParameter*> DependsAsParameters() = 0;
00166 virtual optional<String> Default();
00167 virtual optional<String> Default(std::map<String,String> Parameters) = 0;
00168 virtual optional<String> RangeMin();
00169 virtual optional<String> RangeMin(std::map<String,String> Parameters) = 0;
00170 virtual optional<String> RangeMax();
00171 virtual optional<String> RangeMax(std::map<String,String> Parameters) = 0;
00172 virtual optional<String> Possibilities();
00173 virtual optional<String> Possibilities(std::map<String,String> Parameters) = 0;
00174 void Attach(Device* pDevice) { this->pDevice = pDevice; }
00175 protected:
00176 Device* pDevice;
00177 };
00178
00179 class DeviceCreationParameterBool : public DeviceCreationParameter {
00180 public:
00181 DeviceCreationParameterBool(bool bVal = false);
00182 DeviceCreationParameterBool(String val) throw (Exception);
00183 virtual String Type();
00184 virtual bool Multiplicity();
00185 virtual optional<String> Default(std::map<String,String> Parameters);
00186 virtual optional<String> RangeMin(std::map<String,String> Parameters);
00187 virtual optional<String> RangeMax(std::map<String,String> Parameters);
00188 virtual optional<String> Possibilities(std::map<String,String> Parameters);
00189 virtual String Value();
00190 virtual void SetValue(String val) throw (Exception);
00191
00192 virtual bool ValueAsBool();
00193 virtual void SetValue(bool b) throw (Exception);
00194
00195 virtual optional<bool> DefaultAsBool(std::map<String,String> Parameters) = 0;
00196 virtual void OnSetValue(bool b) throw (Exception) = 0;
00197 protected:
00198 bool bVal;
00199 void InitWithDefault();
00200 private:
00201 };
00202
00203 class DeviceCreationParameterInt : public DeviceCreationParameter {
00204 public:
00205 DeviceCreationParameterInt(int iVal = 0);
00206 DeviceCreationParameterInt(String val) throw (Exception);
00207 virtual String Type();
00208 virtual bool Multiplicity();
00209 virtual optional<String> Default(std::map<String,String> Parameters);
00210 virtual optional<String> RangeMin(std::map<String,String> Parameters);
00211 virtual optional<String> RangeMax(std::map<String,String> Parameters);
00212 virtual optional<String> Possibilities(std::map<String,String> Parameters);
00213 virtual String Value();
00214 virtual void SetValue(String val) throw (Exception);
00215
00216 virtual int ValueAsInt();
00217 virtual void SetValue(int i) throw (Exception);
00218
00219 virtual optional<int> DefaultAsInt(std::map<String,String> Parameters) = 0;
00220 virtual optional<int> RangeMinAsInt(std::map<String,String> Parameters) = 0;
00221 virtual optional<int> RangeMaxAsInt(std::map<String,String> Parameters) = 0;
00222 virtual std::vector<int> PossibilitiesAsInt(std::map<String,String> Parameters) = 0;
00223 virtual void OnSetValue(int i) throw (Exception) = 0;
00224 protected:
00225 int iVal;
00226 void InitWithDefault();
00227 private:
00228 };
00229
00230 class DeviceCreationParameterFloat : public DeviceCreationParameter {
00231 public:
00232 DeviceCreationParameterFloat(float fVal = 0.0);
00233 DeviceCreationParameterFloat(String val) throw (Exception);
00234 virtual String Type();
00235 virtual bool Multiplicity();
00236 virtual optional<String> Default(std::map<String,String> Parameters);
00237 virtual optional<String> RangeMin(std::map<String,String> Parameters);
00238 virtual optional<String> RangeMax(std::map<String,String> Parameters);
00239 virtual optional<String> Possibilities(std::map<String,String> Parameters);
00240 virtual String Value();
00241 virtual void SetValue(String val) throw (Exception);
00242
00243 virtual float ValueAsFloat();
00244 virtual void SetValue(float f) throw (Exception);
00245
00246 virtual optional<float> DefaultAsFloat(std::map<String,String> Parameters) = 0;
00247 virtual optional<float> RangeMinAsFloat(std::map<String,String> Parameters) = 0;
00248 virtual optional<float> RangeMaxAsFloat(std::map<String,String> Parameters) = 0;
00249 virtual std::vector<float> PossibilitiesAsFloat(std::map<String,String> Parameters) = 0;
00250 virtual void OnSetValue(float f) throw (Exception) = 0;
00251 protected:
00252 float fVal;
00253 void InitWithDefault();
00254 private:
00255 };
00256
00257 class DeviceCreationParameterString : public DeviceCreationParameter {
00258 public:
00259 DeviceCreationParameterString(String sVal = String());
00260 virtual ~DeviceCreationParameterString(){}
00261 virtual String Type();
00262 virtual bool Multiplicity();
00263 virtual optional<String> Default(std::map<String,String> Parameters);
00264 virtual optional<String> RangeMin(std::map<String,String> Parameters);
00265 virtual optional<String> RangeMax(std::map<String,String> Parameters);
00266 virtual optional<String> Possibilities(std::map<String,String> Parameters);
00267 virtual String Value();
00268 virtual void SetValue(String val) throw (Exception);
00269
00270 virtual String ValueAsString();
00271 virtual void SetValueAsString(String s) throw (Exception);
00272
00273 virtual optional<String> DefaultAsString(std::map<String,String> Parameters) = 0;
00274 virtual std::vector<String> PossibilitiesAsString(std::map<String,String> Parameters) = 0;
00275 virtual void OnSetValue(String s) throw (Exception) = 0;
00276 protected:
00277 String sVal;
00278 void InitWithDefault();
00279 private:
00280 };
00281
00282 class DeviceCreationParameterStrings : public DeviceCreationParameter {
00283 public:
00284 DeviceCreationParameterStrings();
00285 DeviceCreationParameterStrings(std::vector<String> sVals);
00286 DeviceCreationParameterStrings(String val) throw (Exception);
00287 virtual ~DeviceCreationParameterStrings(){}
00288 virtual String Type();
00289 virtual bool Multiplicity();
00290 virtual optional<String> Default(std::map<String,String> Parameters);
00291 virtual optional<String> RangeMin(std::map<String,String> Parameters);
00292 virtual optional<String> RangeMax(std::map<String,String> Parameters);
00293 virtual optional<String> Possibilities(std::map<String,String> Parameters);
00294 virtual String Value();
00295 virtual void SetValue(String val) throw (Exception);
00296
00297 virtual std::vector<String> ValueAsStrings();
00298 virtual void SetValue(std::vector<String> vS) throw (Exception);
00299
00300 virtual std::vector<String> DefaultAsStrings(std::map<String,String> Parameters) = 0;
00301 virtual std::vector<String> PossibilitiesAsString(std::map<String,String> Parameters) = 0;
00302 virtual void OnSetValue(std::vector<String> vS) throw (Exception) = 0;
00303 protected:
00304 std::vector<String> sVals;
00305 void InitWithDefault();
00306 private:
00307 };
00308
00309 }
00310
00311 #endif // __LS_DEVICE_PARAMETER_H__