sbuild-parse-value.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef SBUILD_PARSE_VALUE_H
00020 #define SBUILD_PARSE_VALUE_H
00021
00022 #include <sbuild/sbuild-parse-error.h>
00023 #include <sbuild/sbuild-log.h>
00024
00025 #include <string>
00026 #include <sstream>
00027
00028 namespace sbuild
00029 {
00030
00031 enum parse_value_error_code
00032 {
00033 BAD_VALUE
00034 };
00035
00036 typedef parse_error<parse_value_error_code> parse_value_error;
00037
00044 void
00045 parse_value (std::string const& value,
00046 bool& parsed_value);
00047
00054 void
00055 parse_value (std::string const& value,
00056 std::string& parsed_value);
00057
00064 template <typename T>
00065 void
00066 parse_value (std::string const& value,
00067 T& parsed_value)
00068 {
00069 std::istringstream is(value);
00070 is.imbue(std::locale::classic());
00071 T tmpval;
00072 if (is >> tmpval)
00073 {
00074 parsed_value = tmpval;
00075 log_debug(DEBUG_NOTICE) << "value=" << parsed_value << std::endl;
00076 }
00077 else
00078 {
00079 log_debug(DEBUG_NOTICE) << "parse error" << std::endl;
00080 throw parse_value_error(value, BAD_VALUE);
00081 }
00082 }
00083
00084 }
00085
00086 #endif
00087
00088
00089
00090
00091
00092