cmd_line_parser.h

説明を見る。
00001 // -*-c++-*-
00002 
00008 /*
00009  *Copyright:
00010 
00011  Copyright (C) Hidehisa AKIYAMA
00012 
00013  This code is free software; you can redistribute it and/or
00014  modify it under the terms of the GNU Lesser General Public
00015  License as published by the Free Software Foundation; either
00016  version 2.1 of the License, or (at your option) any later version.
00017 
00018  This library is distributed in the hope that it will be useful,
00019  but WITHOUT ANY WARRANTY; without even the implied warranty of
00020  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00021  Lesser General Public License for more details.
00022 
00023  You should have received a copy of the GNU Lesser General Public
00024  License along with this library; if not, write to the Free Software
00025  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00026 
00027  *EndCopyright:
00028  */
00029 
00031 
00032 #ifndef RCSC_PARAM_CMD_LINE_PARSER_H
00033 #define RCSC_PARAM_CMD_LINE_PARSER_H
00034 
00035 #include <rcsc/param/param_parser.h>
00036 
00037 #include <list>
00038 #include <vector>
00039 #include <string>
00040 #include <ostream>
00041 
00042 namespace rcsc {
00043 
00048 class CmdLineParser
00049     : public ParamParser {
00050 private:
00051 
00053     std::list< std::string > M_args;
00054 
00056     const std::string M_namespace;
00057 
00059     std::vector< std::string > M_positional_options;
00060 
00062     CmdLineParser();
00063 public:
00064 
00071     CmdLineParser( const int argc,
00072                    const char * const * argv,
00073                    const std::string & name_space = "" );
00074 
00080     CmdLineParser( const std::list< std::string > & args,
00081                    const std::string & name_space = "" );
00082 
00088     bool parse( ParamMap & param_map );
00089 
00090 private:
00091 
00095     void parsePositional();
00096 
00097 public:
00098 
00103     const
00104     std::list< std::string > & args() const
00105       {
00106           return M_args;
00107       }
00108 
00113     bool failed() const
00114       {
00115           return M_args.size() != M_positional_options.size();
00116       }
00117 
00122     const
00123     std::vector< std::string > & positionalOptions() const
00124       {
00125           return M_positional_options;
00126       }
00127 
00133     std::ostream & print( std::ostream & os ) const;
00134 
00135 };
00136 
00137 }
00138 
00139 #endif

librcscに対してThu May 1 15:41:20 2008に生成されました。  doxygen 1.5.0