00001
00002
00003 #ifndef __ARC_OPTION_H__
00004 #define __ARC_OPTION_H__
00005
00006 #include <list>
00007 #include <string>
00008
00009 namespace Arc {
00010
00011 class OptionBase;
00012
00013 class OptionParser {
00014
00015 public:
00016 OptionParser(const std::string& arguments = "",
00017 const std::string& summary = "",
00018 const std::string& description = "");
00019
00020 ~OptionParser();
00021
00022 void AddOption(const char shortOpt,
00023 const std::string& longOpt,
00024 const std::string& optDesc,
00025 bool& val);
00026
00027 void AddOption(const char shortOpt,
00028 const std::string& longOpt,
00029 const std::string& optDesc,
00030 const std::string& argDesc,
00031 int& val);
00032
00033 void AddOption(const char shortOpt,
00034 const std::string& longOpt,
00035 const std::string& optDesc,
00036 const std::string& argDesc,
00037 std::string& val);
00038
00039 void AddOption(const char shortOpt,
00040 const std::string& longOpt,
00041 const std::string& optDesc,
00042 const std::string& argDesc,
00043 std::list<std::string>& val);
00044
00045 std::list<std::string> Parse(int argc, char **argv);
00046
00047 private:
00048 std::string arguments;
00049 std::string summary;
00050 std::string description;
00051 std::list<OptionBase*> options;
00052 };
00053
00054 }
00055
00056 #endif // __ARC_OPTION_H__