From 3743ca94d5b7d6e3bb2970e0f97923923bb78aa2 Mon Sep 17 00:00:00 2001 From: Paul Shapiro Date: Thu, 21 Mar 2019 18:21:36 -0500 Subject: [PATCH] added serial_bridge_utils none_or_double_from, none_or_bool_from --- src/serial_bridge_utils.cpp | 29 +++++++++++++++++++++++++++++ src/serial_bridge_utils.hpp | 3 +++ 2 files changed, 32 insertions(+) diff --git a/src/serial_bridge_utils.cpp b/src/serial_bridge_utils.cpp index 7e49219..1b86d7c 100644 --- a/src/serial_bridge_utils.cpp +++ b/src/serial_bridge_utils.cpp @@ -81,6 +81,35 @@ string serial_bridge_utils::string_from_nettype(network_type nettype) } } // +// Shared - Parsing - Values +optional serial_bridge_utils::none_or_double_from(const boost::property_tree::ptree &json, const string &key) +{ + optional str = json.get_optional(key); + if (str != none) { + return stod(*str); // this may throw an exception - allowing it to bubble up here + } + optional dbl_orNone = json.get_optional(key); + // + return dbl_orNone; +} +optional serial_bridge_utils::none_or_bool_from(const boost::property_tree::ptree &json, const string &key) +{ + optional str = json.get_optional(key); + if (str != none) { + if (*str == "true" || *str == "1") { + return true; + } else if (*str == "false" || *str == "0") { + return false; + } else { + BOOST_THROW_EXCEPTION(logic_error("Unable to parse bool string")); + return none; + } + } + optional bool_orNone = json.get_optional(key); + // + return bool_orNone; +} +// // Shared - Parsing - Args bool serial_bridge_utils::parsed_json_root(const string &args_string, boost::property_tree::ptree &json_root) { diff --git a/src/serial_bridge_utils.hpp b/src/serial_bridge_utils.hpp index ca1d293..7a58597 100644 --- a/src/serial_bridge_utils.hpp +++ b/src/serial_bridge_utils.hpp @@ -73,6 +73,9 @@ namespace serial_bridge_utils return o.str(); } }; + optional none_or_double_from(const boost::property_tree::ptree &json, const string &key); + optional none_or_bool_from(const boost::property_tree::ptree &json, const string &key); + //../ string ret_json_from_root(const boost::property_tree::ptree &root); string error_ret_json_from_message(const string &err_msg); string error_ret_json_from_code(int code, optional err_msg);