123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267 |
- #ifndef cmsys_CommandLineArguments_hxx
- #define cmsys_CommandLineArguments_hxx
- #include <cmsys/Configure.h>
- #include <cmsys/Configure.hxx>
- #include <string>
- #include <vector>
- namespace cmsys {
- class CommandLineArgumentsInternal;
- struct CommandLineArgumentsCallbackStructure;
- class cmsys_EXPORT CommandLineArguments
- {
- public:
- CommandLineArguments();
- ~CommandLineArguments();
-
- enum ArgumentTypeEnum
- {
- NO_ARGUMENT,
- CONCAT_ARGUMENT,
- SPACE_ARGUMENT,
- EQUAL_ARGUMENT,
- MULTI_ARGUMENT
- };
-
- enum VariableTypeEnum
- {
- NO_VARIABLE_TYPE = 0,
- INT_TYPE,
- BOOL_TYPE,
- DOUBLE_TYPE,
- STRING_TYPE,
- STL_STRING_TYPE,
- VECTOR_INT_TYPE,
- VECTOR_BOOL_TYPE,
- VECTOR_DOUBLE_TYPE,
- VECTOR_STRING_TYPE,
- VECTOR_STL_STRING_TYPE,
- LAST_VARIABLE_TYPE
- };
-
- typedef int (*CallbackType)(const char* argument, const char* value,
- void* call_data);
- typedef int (*ErrorCallbackType)(const char* argument, void* client_data);
-
- void Initialize(int argc, const char* const argv[]);
- void Initialize(int argc, char* argv[]);
-
- void Initialize();
- void ProcessArgument(const char* arg);
-
- int Parse();
-
- void AddCallback(const char* argument, ArgumentTypeEnum type,
- CallbackType callback, void* call_data, const char* help);
-
- void AddArgument(const char* argument, ArgumentTypeEnum type, bool* variable,
- const char* help);
- void AddArgument(const char* argument, ArgumentTypeEnum type, int* variable,
- const char* help);
- void AddArgument(const char* argument, ArgumentTypeEnum type,
- double* variable, const char* help);
- void AddArgument(const char* argument, ArgumentTypeEnum type,
- char** variable, const char* help);
- void AddArgument(const char* argument, ArgumentTypeEnum type,
- std::string* variable, const char* help);
-
- void AddArgument(const char* argument, ArgumentTypeEnum type,
- std::vector<bool>* variable, const char* help);
- void AddArgument(const char* argument, ArgumentTypeEnum type,
- std::vector<int>* variable, const char* help);
- void AddArgument(const char* argument, ArgumentTypeEnum type,
- std::vector<double>* variable, const char* help);
- void AddArgument(const char* argument, ArgumentTypeEnum type,
- std::vector<char*>* variable, const char* help);
- void AddArgument(const char* argument, ArgumentTypeEnum type,
- std::vector<std::string>* variable, const char* help);
-
- void AddBooleanArgument(const char* argument, bool* variable,
- const char* help);
- void AddBooleanArgument(const char* argument, int* variable,
- const char* help);
- void AddBooleanArgument(const char* argument, double* variable,
- const char* help);
- void AddBooleanArgument(const char* argument, char** variable,
- const char* help);
- void AddBooleanArgument(const char* argument, std::string* variable,
- const char* help);
-
- void SetClientData(void* client_data);
- void SetUnknownArgumentCallback(ErrorCallbackType callback);
-
- void GetRemainingArguments(int* argc, char*** argv);
- void DeleteRemainingArguments(int argc, char*** argv);
-
- void StoreUnusedArguments(bool val) { this->StoreUnusedArgumentsFlag = val; }
- void GetUnusedArguments(int* argc, char*** argv);
-
- const char* GetHelp() { return this->Help.c_str(); }
- const char* GetHelp(const char* arg);
-
- void SetLineLength(unsigned int);
- unsigned int GetLineLength();
-
- const char* GetArgv0();
-
- unsigned int GetLastArgument();
- protected:
- void GenerateHelp();
-
- void AddArgument(const char* argument, ArgumentTypeEnum type,
- VariableTypeEnum vtype, void* variable, const char* help);
- bool GetMatchedArguments(std::vector<std::string>* matches,
- const std::string& arg);
-
- bool PopulateVariable(CommandLineArgumentsCallbackStructure* cs,
- const char* value);
-
- void PopulateVariable(bool* variable, const std::string& value);
- void PopulateVariable(int* variable, const std::string& value);
- void PopulateVariable(double* variable, const std::string& value);
- void PopulateVariable(char** variable, const std::string& value);
- void PopulateVariable(std::string* variable, const std::string& value);
- void PopulateVariable(std::vector<bool>* variable, const std::string& value);
- void PopulateVariable(std::vector<int>* variable, const std::string& value);
- void PopulateVariable(std::vector<double>* variable,
- const std::string& value);
- void PopulateVariable(std::vector<char*>* variable,
- const std::string& value);
- void PopulateVariable(std::vector<std::string>* variable,
- const std::string& value);
- typedef CommandLineArgumentsInternal Internal;
- Internal* Internals;
- std::string Help;
- unsigned int LineLength;
- bool StoreUnusedArgumentsFlag;
- };
- }
- #endif
|