// Copyright (C) 2003 Davis E. King (davis@dlib.net) // License: Boost Software License See LICENSE.txt for the full license. #ifndef DLIB_CMD_LINE_PARSEr_ #define DLIB_CMD_LINE_PARSEr_ #include "cmd_line_parser/cmd_line_parser_kernel_1.h" #include "cmd_line_parser/cmd_line_parser_kernel_c.h" #include "cmd_line_parser/cmd_line_parser_print_1.h" #include "cmd_line_parser/cmd_line_parser_check_1.h" #include "cmd_line_parser/cmd_line_parser_check_c.h" #include <string> #include "cmd_line_parser/get_option.h" #include "map.h" #include "sequence.h" namespace dlib { // ---------------------------------------------------------------------------------------- template < typename charT > class impl_cmd_line_parser { /*! This class is basically just a big templated typedef for building a complete command line parser type out of all the parts it needs. !*/ impl_cmd_line_parser() {} typedef typename sequence<std::basic_string<charT> >::kernel_2a sequence_2a; typedef typename sequence<std::basic_string<charT>*>::kernel_2a psequence_2a; typedef typename map<std::basic_string<charT>,void*>::kernel_1a map_1a_string; public: typedef cmd_line_parser_kernel_1<charT,map_1a_string,sequence_2a,psequence_2a> kernel_1a; typedef cmd_line_parser_kernel_c<kernel_1a> kernel_1a_c; typedef cmd_line_parser_print_1<kernel_1a_c> print_1a_c; typedef cmd_line_parser_check_c<cmd_line_parser_check_1<print_1a_c> > check_1a_c; }; // ---------------------------------------------------------------------------------------- template < typename charT > class cmd_line_parser : public impl_cmd_line_parser<charT>::check_1a_c { public: // These typedefs are here for backwards compatibility with previous versions of dlib. typedef cmd_line_parser kernel_1a; typedef cmd_line_parser kernel_1a_c; typedef cmd_line_parser print_1a; typedef cmd_line_parser print_1a_c; typedef cmd_line_parser check_1a; typedef cmd_line_parser check_1a_c; }; template < typename charT > inline void swap ( cmd_line_parser<charT>& a, cmd_line_parser<charT>& b ) { a.swap(b); } // ---------------------------------------------------------------------------------------- typedef cmd_line_parser<char> command_line_parser; typedef cmd_line_parser<wchar_t> wcommand_line_parser; // ---------------------------------------------------------------------------------------- } #endif // DLIB_CMD_LINE_PARSEr_