]> git.stg.codes - stg.git/blob - include/stg/module_settings.h
Reorganize plugins.
[stg.git] / include / stg / module_settings.h
1  /*
2  $Revision: 1.5 $
3  $Date: 2010/03/04 11:49:52 $
4  $Author: faust $
5  */
6
7 #ifndef MODULE_SETTINGS_H
8 #define MODULE_SETTINGS_H
9
10 #include <cstring> // strcasecmp
11 #include <string>
12 #include <vector>
13
14 //-----------------------------------------------------------------------------
15 struct PARAM_VALUE
16 {
17     PARAM_VALUE() {}
18     PARAM_VALUE(const std::string& p, const std::vector<std::string>& vs)
19         : param(p),
20           value(vs)
21     {}
22     PARAM_VALUE(const std::string& p, const std::vector<std::string>& vs, const std::vector<PARAM_VALUE>& ss)
23         : param(p),
24           value(vs),
25           sections(ss)
26     {}
27     bool operator==(const PARAM_VALUE & rhs) const
28         { return !strcasecmp(param.c_str(), rhs.param.c_str()); }
29
30     bool operator<(const PARAM_VALUE & rhs) const
31         { return strcasecmp(param.c_str(), rhs.param.c_str()) < 0; }
32
33     std::string param;
34     std::vector<std::string> value;
35     std::vector<PARAM_VALUE> sections;
36 };
37 //-----------------------------------------------------------------------------
38 struct MODULE_SETTINGS
39 {
40     MODULE_SETTINGS() {}
41     MODULE_SETTINGS(const std::string& name, const std::vector<PARAM_VALUE>& params)
42         : moduleName(name),
43           moduleParams(params)
44     {}
45     bool operator==(const MODULE_SETTINGS & rhs) const
46         { return !strcasecmp(moduleName.c_str(), rhs.moduleName.c_str()); }
47
48     bool operator<(const MODULE_SETTINGS & rhs) const
49         { return strcasecmp(moduleName.c_str(), rhs.moduleName.c_str()) < 0; }
50
51     std::string              moduleName;
52     std::vector<PARAM_VALUE> moduleParams;
53 };
54 //-----------------------------------------------------------------------------
55 #endif