84 lines
2.6 KiB
C++
84 lines
2.6 KiB
C++
// 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_
|
|
|