diff options
author | Trygve Laugstøl <trygvis@inamo.no> | 2015-08-02 16:27:10 +0200 |
---|---|---|
committer | Trygve Laugstøl <trygvis@inamo.no> | 2015-08-02 16:27:10 +0200 |
commit | 06c78fe0e2e4e7f0a5ba791571e1986a2e0dab42 (patch) | |
tree | bc272faec6c585693341a814c65483e86c56255b /misc_support.h | |
parent | b632036b153297f83b10f6d960ccfe0c1772f00e (diff) | |
download | mqtt-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.h | 49 |
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 |