summaryrefslogtreecommitdiff
path: root/include/configreader.h
diff options
context:
space:
mode:
authorattilamolnar <attilamolnar@hush.com>2013-08-12 19:20:18 +0200
committerattilamolnar <attilamolnar@hush.com>2013-08-12 19:20:18 +0200
commit6d39615998dee7b30565d34a9f209b569678fb6a (patch)
tree477fdbe6d1f385e797e58e64cbc3af9bdbda9a64 /include/configreader.h
parent1e89f510705753a33644b0356cdd902ecc2d9128 (diff)
Add ConfigTag::getDuration() with optional bounds checking
Diffstat (limited to 'include/configreader.h')
-rw-r--r--include/configreader.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/include/configreader.h b/include/configreader.h
index bf5acbbc8..ee58c3bc9 100644
--- a/include/configreader.h
+++ b/include/configreader.h
@@ -50,6 +50,16 @@ class CoreExport ConfigTag : public refcountbase
/** Get the value of an option, using def if it does not exist */
bool getBool(const std::string& key, bool def = false);
+ /** Get the value in seconds of a duration that is in the user-friendly "1h2m3s" format,
+ * using a default value if it does not exist or is out of bounds.
+ * @param key The config key name
+ * @param def Default value (optional)
+ * @param min Minimum acceptable value (optional)
+ * @param max Maximum acceptable value (optional)
+ * @return The duration in seconds
+ */
+ time_t getDuration(const std::string& key, time_t def = 0, long min = LONG_MIN, long max = LONG_MAX);
+
/** Get the value of an option
* @param key The option to get
* @param value The location to store the value (unmodified if does not exist)
@@ -58,6 +68,16 @@ class CoreExport ConfigTag : public refcountbase
*/
bool readString(const std::string& key, std::string& value, bool allow_newline = false);
+ /** Check for an out of range value. If the value falls outside the boundaries a warning is
+ * logged and the value is corrected (set to def).
+ * @param key The key name, used in the warning message
+ * @param res The value to verify and modify if needed
+ * @param def The default value, res will be set to this if (min <= res <= max) doesn't hold true
+ * @param min Minimum accepted value for res
+ * @param max Maximum accepted value for res
+ */
+ void CheckRange(const std::string& key, long& res, long def, long min, long max);
+
std::string getTagLocation();
inline const std::vector<KeyVal>& getItems() const { return items; }