24 #ifndef __CONFIG_CONFIG_H_ 25 #define __CONFIG_CONFIG_H_ 27 #include <core/exception.h> 28 #include <utils/misc/string_compare.h> 35 class ConfigurationChangeHandler;
54 const char *actual,
const char *requested);
72 virtual bool next() = 0;
73 virtual bool valid()
const = 0;
75 virtual const char * path()
const = 0;
76 virtual const char * type()
const = 0;
78 virtual bool is_float()
const = 0;
79 virtual bool is_uint()
const = 0;
80 virtual bool is_int()
const = 0;
81 virtual bool is_bool()
const = 0;
82 virtual bool is_string()
const = 0;
84 virtual float get_float()
const = 0;
85 virtual unsigned int get_uint()
const = 0;
86 virtual int get_int()
const = 0;
87 virtual bool get_bool()
const = 0;
88 virtual std::string get_string()
const = 0;
89 virtual std::string get_as_string()
const = 0;
91 virtual std::string get_comment()
const = 0;
93 virtual bool is_default()
const = 0;
101 virtual void load(
const char *name,
const char *defaults_name,
102 const char *tag = NULL) = 0;
104 virtual void tag(
const char *tag) = 0;
105 virtual std::list<std::string> tags() = 0;
107 virtual bool exists(
const char *path) = 0;
108 virtual bool is_float(
const char *path) = 0;
109 virtual bool is_uint(
const char *path) = 0;
110 virtual bool is_int(
const char *path) = 0;
111 virtual bool is_bool(
const char *path) = 0;
112 virtual bool is_string(
const char *path) = 0;
114 virtual bool is_default(
const char *path) = 0;
116 virtual float get_float(
const char *path) = 0;
117 virtual unsigned int get_uint(
const char *path) = 0;
118 virtual int get_int(
const char *path) = 0;
119 virtual bool get_bool(
const char *path) = 0;
120 virtual std::string get_string(
const char *path) = 0;
122 virtual std::string get_type(
const char *path) = 0;
123 virtual std::string get_comment(
const char *path) = 0;
124 virtual std::string get_default_comment(
const char *path) = 0;
126 virtual void set_float(
const char *path,
float f) = 0;
127 virtual void set_uint(
const char *path,
unsigned int uint) = 0;
128 virtual void set_int(
const char *path,
int i) = 0;
129 virtual void set_bool(
const char *path,
bool b) = 0;
130 virtual void set_string(
const char *path, std::string &s) = 0;
131 virtual void set_string(
const char *path,
const char *s) = 0;
132 virtual void set_comment(
const char *path,
133 const char *comment) = 0;
134 virtual void set_comment(
const char *path,
135 std::string &comment) = 0;
137 virtual void erase(
const char *path) = 0;
139 virtual void set_default_float(
const char *path,
float f) = 0;
140 virtual void set_default_uint(
const char *path,
141 unsigned int uint) = 0;
142 virtual void set_default_int(
const char *path,
int i) = 0;
143 virtual void set_default_bool(
const char *path,
bool b) = 0;
144 virtual void set_default_string(
const char *path,
146 virtual void set_default_string(
const char *path,
149 virtual void set_default_comment(
const char *path,
150 const char *comment) = 0;
151 virtual void set_default_comment(
const char *path,
152 std::string &comment) = 0;
154 virtual void erase_default(
const char *path) = 0;
162 virtual void lock() = 0;
163 virtual bool try_lock() = 0;
164 virtual void unlock() = 0;
171 typedef std::multimap<const char *, ConfigurationChangeHandler *, StringLess >
175 typedef std::pair<ChangeHandlerMultimap::iterator,
176 ChangeHandlerMultimap::iterator>
184 ChangeHandlerList * find_handlers(
const char *path);
185 void notify_handlers(
const char *path,
bool comment_changed =
false);
ChangeHandlerMultimapRange _ch_range
Change handler range.
ChangeHandlerMultimap _change_handlers
Registered change handlers.
Fawkes library namespace.
Interface for configuration change handling.
Thrown if config could not be opened.
Thrown if a config entry could not be found.
std::multimap< const char *, ConfigurationChangeHandler *, StringLess > ChangeHandlerMultimap
Multimap string to config change handlers.
std::pair< ChangeHandlerMultimap::iterator, ChangeHandlerMultimap::iterator > ChangeHandlerMultimapRange
Config change handler multimap range.
virtual ~ValueIterator()
Virtual emptry destructor.
Base class for exceptions in Fawkes.
Thrown if there a type problem was detected for example if you tried to query a float with get_int()...
virtual ~Configuration()
Virtual empty destructor.
Generic configuration exception.
ConfigurationException(const char *msg)
Constructor.
Iterator interface to iterate over config values.
Interface for configuration handling.
std::list< ConfigurationChangeHandler * > ChangeHandlerList
List that contains pointers to ConfigurationChangeHandler.