aboutsummaryrefslogtreecommitdiff
path: root/misc_support.h
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2015-08-02 16:27:10 +0200
committerTrygve Laugstøl <trygvis@inamo.no>2015-08-02 16:27:10 +0200
commit06c78fe0e2e4e7f0a5ba791571e1986a2e0dab42 (patch)
treebc272faec6c585693341a814c65483e86c56255b /misc_support.h
parentb632036b153297f83b10f6d960ccfe0c1772f00e (diff)
downloadmqtt-cassandra-bridge-06c78fe0e2e4e7f0a5ba791571e1986a2e0dab42.tar.gz
mqtt-cassandra-bridge-06c78fe0e2e4e7f0a5ba791571e1986a2e0dab42.tar.bz2
mqtt-cassandra-bridge-06c78fe0e2e4e7f0a5ba791571e1986a2e0dab42.tar.xz
mqtt-cassandra-bridge-06c78fe0e2e4e7f0a5ba791571e1986a2e0dab42.zip
o Adding a MQTT consumer that stores the parsed record in Cassandra.
Diffstat (limited to 'misc_support.h')
-rw-r--r--misc_support.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/misc_support.h b/misc_support.h
new file mode 100644
index 0000000..b00f6a8
--- /dev/null
+++ b/misc_support.h
@@ -0,0 +1,49 @@
+#ifndef SOIL_MOISTURE_MISC_SUPPORT_H
+#define SOIL_MOISTURE_MISC_SUPPORT_H
+
+#include <boost/lexical_cast.hpp>
+#include <boost/program_options.hpp>
+#include <boost/optional.hpp>
+#include <string>
+
+namespace trygvis {
+namespace misc_support {
+
+using namespace boost;
+using namespace std;
+namespace po = boost::program_options;
+
+template<typename Target, typename Source>
+static
+boost::optional<Target> map(boost::optional<Source> &a, std::function<Target(Source)> f) {
+ if (!a.is_initialized()) {
+ return boost::none;
+ }
+
+ return make_optional(f(a));
+}
+
+template<typename Target, typename Source>
+static
+boost::optional<Target> flat_map(boost::optional<Source> &a, boost::optional<Target> (&f)(Source)) {
+ if (!a.is_initialized()) {
+ return boost::none;
+ }
+
+ return f(a.get());
+}
+
+template<typename Target, typename Source = string>
+static
+boost::optional<Target> l_c(const Source source) {
+ try {
+ return boost::lexical_cast<Target>(source);
+ } catch (bad_lexical_cast &e) {
+ return boost::none;
+ }
+};
+
+}
+}
+
+#endif