diff options
Diffstat (limited to 'ml/dlib/dlib/cmd_line_parser/get_option.h')
-rw-r--r-- | ml/dlib/dlib/cmd_line_parser/get_option.h | 181 |
1 files changed, 0 insertions, 181 deletions
diff --git a/ml/dlib/dlib/cmd_line_parser/get_option.h b/ml/dlib/dlib/cmd_line_parser/get_option.h deleted file mode 100644 index 2c8d1644f..000000000 --- a/ml/dlib/dlib/cmd_line_parser/get_option.h +++ /dev/null @@ -1,181 +0,0 @@ -// Copyright (C) 2012 Davis E. King (davis@dlib.net) -// License: Boost Software License See LICENSE.txt for the full license. -#ifndef DLIB_GET_OPTiON_Hh_ -#define DLIB_GET_OPTiON_Hh_ - -#include "get_option_abstract.h" -#include "../string.h" -#include "../is_kind.h" - -namespace dlib -{ - -// ---------------------------------------------------------------------------------------- - - class option_parse_error : public error - { - public: - option_parse_error(const std::string& option_string, const std::string& str): - error(EOPTION_PARSE,"Error parsing argument for option '" + option_string + "', offending string is '" + str + "'.") {} - }; - -// ---------------------------------------------------------------------------------------- - - template <typename config_reader_type, typename T> - T impl_config_reader_get_option ( - const config_reader_type& cr, - const std::string& option_name, - const std::string& full_option_name, - T default_value - ) - { - std::string::size_type pos = option_name.find_first_of("."); - if (pos == std::string::npos) - { - if (cr.is_key_defined(option_name)) - { - try{ return string_cast<T>(cr[option_name]); } - catch (string_cast_error&) { throw option_parse_error(full_option_name, cr[option_name]); } - } - } - else - { - std::string block_name = option_name.substr(0,pos); - if (cr.is_block_defined(block_name)) - { - return impl_config_reader_get_option(cr.block(block_name), - option_name.substr(pos+1), - full_option_name, - default_value); - } - } - - return default_value; - } - -// ---------------------------------------------------------------------------------------- - - template <typename cr_type, typename T> - typename enable_if<is_config_reader<cr_type>,T>::type get_option ( - const cr_type& cr, - const std::string& option_name, - T default_value - ) - { - return impl_config_reader_get_option(cr, option_name, option_name, default_value); - } - -// ---------------------------------------------------------------------------------------- - - template <typename parser_type, typename T> - typename disable_if<is_config_reader<parser_type>,T>::type get_option ( - const parser_type& parser, - const std::string& option_name, - T default_value - ) - { - // make sure requires clause is not broken - DLIB_ASSERT( parser.option_is_defined(option_name) == true && - parser.option(option_name).number_of_arguments() == 1, - "\t T get_option()" - << "\n\t option_name: " << option_name - << "\n\t parser.option_is_defined(option_name): " << parser.option_is_defined(option_name) - << "\n\t parser.option(option_name).number_of_arguments(): " << parser.option(option_name).number_of_arguments() - ); - - if (parser.option(option_name)) - { - try - { - default_value = string_cast<T>(parser.option(option_name).argument()); - } - catch (string_cast_error&) - { - throw option_parse_error(option_name, parser.option(option_name).argument()); - } - } - return default_value; - } - -// ---------------------------------------------------------------------------------------- - - template <typename parser_type, typename cr_type, typename T> - typename disable_if<is_config_reader<parser_type>,T>::type get_option ( - const parser_type& parser, - const cr_type& cr, - const std::string& option_name, - T default_value - ) - { - // make sure requires clause is not broken - DLIB_ASSERT( parser.option_is_defined(option_name) == true && - parser.option(option_name).number_of_arguments() == 1, - "\t T get_option()" - << "\n\t option_name: " << option_name - << "\n\t parser.option_is_defined(option_name): " << parser.option_is_defined(option_name) - << "\n\t parser.option(option_name).number_of_arguments(): " << parser.option(option_name).number_of_arguments() - ); - - if (parser.option(option_name)) - return get_option(parser, option_name, default_value); - else - return get_option(cr, option_name, default_value); - } - -// ---------------------------------------------------------------------------------------- - - template <typename parser_type, typename cr_type, typename T> - typename disable_if<is_config_reader<parser_type>,T>::type get_option ( - const cr_type& cr, - const parser_type& parser, - const std::string& option_name, - T default_value - ) - { - // make sure requires clause is not broken - DLIB_ASSERT( parser.option_is_defined(option_name) == true && - parser.option(option_name).number_of_arguments() == 1, - "\t T get_option()" - << "\n\t option_name: " << option_name - << "\n\t parser.option_is_defined(option_name): " << parser.option_is_defined(option_name) - << "\n\t parser.option(option_name).number_of_arguments(): " << parser.option(option_name).number_of_arguments() - ); - - if (parser.option(option_name)) - return get_option(parser, option_name, default_value); - else - return get_option(cr, option_name, default_value); - } - -// ---------------------------------------------------------------------------------------- -// ---------------------------------------------------------------------------------------- - - template <typename T> - inline std::string get_option ( - const T& cr, - const std::string& option_name, - const char* default_value - ) - { - return get_option(cr, option_name, std::string(default_value)); - } - -// ---------------------------------------------------------------------------------------- - - template <typename T, typename U> - inline std::string get_option ( - const T& parser, - const U& cr, - const std::string& option_name, - const char* default_value - ) - { - return get_option(parser, cr, option_name, std::string(default_value)); - } - -// ---------------------------------------------------------------------------------------- - -} - -#endif // DLIB_GET_OPTiON_Hh_ - |