Changed all string* to string because strings are already pointers internally.
[yam.git] / TrackParameterType.h
blob4ca297045a520748fba53ca59a6769338322b299
1 #ifndef TRACK_PARAMETER_TYPE_H
2 #define TRACK_PARAMETER_TYPE_H
4 #include <vector>
6 namespace yam {
7 using namespace std;
9 class TrackParameterType {
10 public:
11 enum { BOOL, INT, FLOAT, STRING }; /* Datatypes */
12 enum { LITERAL, PERCENT, DECIBEL }; /* Units */
13 enum { LINEAR, QUADRATIC, LOGARITHMIC, GAIN }; /* Scales */
14 enum { TOGGLE, OPTION, ADJUST, ENTER }; /* Controls */
16 /* General constructor */
17 TrackParameterType(string name, int datatype, int unit, int scale, int control,
18 void* defaultValue, void* minimumValue, void* maximumValue, vector<string>* options) :
19 name(name), datatype(datatype), unit(unit), scale(scale),
20 control(control), defaultValue(defaultValue), minimumValue(minimumValue),
21 maximumValue(maximumValue), options(options) { }
23 /* Construct boolean toggle control */
24 TrackParameterType(string name, bool defaultValue) :
25 name(name), datatype(BOOL), unit(0), scale(0),
26 control(TOGGLE), defaultValue(new bool(defaultValue)),
27 minimumValue(NULL), maximumValue(NULL), options(NULL) { }
29 /* Construct boolean option control with two named options */
30 TrackParameterType(string name, bool defaultValue, string falseString, string trueString) :
31 name(name), datatype(BOOL), unit(0), scale(0), control(OPTION),
32 defaultValue(new bool(defaultValue)), minimumValue(NULL), maximumValue(NULL),
33 options(new vector<string>()) {
34 this->options->push_back(falseString);
35 this->options->push_back(trueString);
38 /* Construct integer adjust control */
39 TrackParameterType(string name, int unit, int scale, int defaultValue, int minimumValue, int maximumValue) :
40 name(name), datatype(INT), unit(unit), scale(scale), control(ADJUST),
41 defaultValue(new int(defaultValue)), minimumValue(new int(minimumValue)),
42 maximumValue(new int(maximumValue)), options(NULL) { }
44 /* Construct integer option control with maximumValue-minimumValue+1 named options */
45 TrackParameterType(string name, int defaultValue, int minimumValue, int maximumValue, vector<string>* options) :
46 name(name), datatype(INT), unit(0), scale(0), control(OPTION),
47 defaultValue(new int(defaultValue)), minimumValue(new int(minimumValue)),
48 maximumValue(new int(maximumValue)), options(options) { }
50 /* Construct float adjust control */
51 TrackParameterType(string name, int unit, int scale, float defaultValue, float minimumValue, float maximumValue) :
52 name(name), datatype(FLOAT), unit(unit), scale(scale), control(ADJUST),
53 defaultValue(new float(defaultValue)), minimumValue(new float(minimumValue)),
54 maximumValue(new float(maximumValue)), options(NULL) { }
56 /* Construct string entry control */
57 TrackParameterType(string name, string defaultValue) :
58 name(name), datatype(STRING), unit(0), scale(0), control(ENTER),
59 defaultValue(new string(defaultValue)), minimumValue(NULL), maximumValue(NULL) { }
61 string getName() { return name; }
62 int getDatatype() { return datatype; }
63 int getUnit() { return unit; }
64 int getScale() { return scale; }
65 int getControl() { return control; }
66 void* getDefaultValue() { return defaultValue; }
67 void* getMinimumValue() { return minimumValue; }
68 void* getMaximumValue() { return maximumValue; }
69 vector<string>* getOptions() { return options; }
71 private:
72 string name;
73 int datatype;
74 int unit;
75 int scale;
76 int control;
77 void *defaultValue;
78 void *minimumValue;
79 void *maximumValue;
80 vector<string>* options;
84 #endif