7 * Handling of Romain config stuff
9 * (c) 2011-2013 Björn Döbel <doebel@os.inf.tu-dresden.de>,
10 * economic rights: Technische Universität Dresden (Germany)
11 * This file is part of TUD:OS and distributed under the terms of the
12 * GNU General Public License 2.
13 * Please see the COPYING-GPL-2 file for details.
21 #include "iniparser.h"
29 std::map<char const *, dictionary*> _files;
33 dictionary *get(char const* filename)
35 dictionary* d = _files[filename];
37 d = iniparser_load(filename);
38 _check(!d, "file not found");
45 extern Configuration globalconfig;
53 _dict = globalconfig.get("rom/romain.ini");
54 _check(!_dict, "romain.ini not found?");
59 struct ConfigIntValue : public ConfigValue
62 ConfigIntValue(char const * const key, int _default = -1)
65 _val = iniparser_getint(_dict, key, _default);
68 operator int() { return _val; }
69 operator unsigned int() { return _val; }
70 operator l4_addr_t() { return static_cast<l4_addr_t>(_val); }
74 struct ConfigStringValue : public ConfigValue
77 ConfigStringValue(char const * const key, char const *_default = 0)
80 _val = iniparser_getstring(_dict, key, const_cast<char*>(_default));
83 operator char const *() { return _val; }
87 struct ConfigBoolValue : public ConfigValue
90 ConfigBoolValue(char const * const key, bool _default = false)
93 _val = iniparser_getboolean(_dict, key, _default);
96 operator bool () { return _val; }
101 * Simple observer configuration
103 * Takes a string and an IM and creates and registers an
104 * observer of the same name with the IM.
111 ObserverConfig(Romain::InstanceManager *im,
112 char const *observerName)
114 configure(im, observerName);
118 void configure(Romain::InstanceManager *im,
119 char const *observerName)
121 im->register_fault_observer(
122 Romain::ObserverFactory::CreateObserver(observerName));
127 class StringObserverConfig : public ObserverConfig
130 StringObserverConfig(char const * const key,
131 Romain::InstanceManager *im)
133 char const *c = ConfigStringValue(key);
140 class BoolObserverConfig : public ObserverConfig
143 BoolObserverConfig(char const * const key,
144 Romain::InstanceManager *im,
145 char const * const observer)
147 bool b = ConfigBoolValue(key);
149 configure(im, observer);