aboutsummaryrefslogtreecommitdiff
path: root/contrib/chained/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/chained/README.md')
-rw-r--r--contrib/chained/README.md60
1 files changed, 60 insertions, 0 deletions
diff --git a/contrib/chained/README.md b/contrib/chained/README.md
new file mode 100644
index 0000000..9a7ebea
--- /dev/null
+++ b/contrib/chained/README.md
@@ -0,0 +1,60 @@
+# Method Chained libconfig #
+
+**Exception free + header only + method chained + config files**
+
+Provides reading the configuration and defining the configuration specification at once.
+
+### Features ###
+
+ * default values
+ * limits (min/max)
+ * mandatory/optional values
+ * help text output for expected config format on specification violation
+ * capturing and outputting expected configuration specification/defaults
+
+While it is possible to write a config file with this extension using the configuration specification capturing feature, it is not intended to be used as a full fledged config writer.
+
+### Example ###
+
+```C++
+#include <libconfig_chained.h>
+
+using namespace std;
+using namespace libconfig;
+
+int main(int argc, char **argv)
+{
+ Config cfg;
+ cfg.readFile("example.cfg");
+ ChainedSetting cs(cfg.getRoot());
+
+ string name = cs["name"].defaultValue("<name>").isMandatory();
+ string abstract = cs["abstract"].defaultValue("<unknown>");
+ double longitude = cs["longitude"].min(-180.0).max(180.0).isMandatory();
+ double latitude = cs["latitude"].min(-90.0).max(90.0).isMandatory();
+
+ if (cs.isAnyMandatorySettingMissing())
+ {
+ cerr << "Cannot proceed until all mandatory settings are set." << endl;
+ }
+}
+```
+
+Console Output:
+```sh
+'longitude' setting is out of valid bounds (max: 180). Value was: 1200.35
+Missing 'latitude' setting in configuration file.
+Cannot proceed until all mandatory settings are set.
+```
+
+---
+
+### How to integrate into your project ###
+
+ 1. Link the libconfig++.[lib/la/a] library as usual (see standard use of libconfig++).
+ * Replace any includes of libconfig.h++ by libconfig_chained.h.
+ * Use method chained candy as displayed above.
+
+---
+
+Create an issue for any questions or suggestions. Alternatively email me at github [at) hemofektik.de \ No newline at end of file