00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00024 #ifndef __vtkCommandOptions_h
00025 #define __vtkCommandOptions_h
00026
00027 #include "vtkObject.h"
00028
00029 class vtkCommandOptionsInternal;
00030
00031 class VTK_EXPORT vtkCommandOptions : public vtkObject
00032 {
00033 public:
00034 static vtkCommandOptions* New();
00035 vtkTypeRevisionMacro(vtkCommandOptions,vtkObject);
00036 void PrintSelf(ostream& os, vtkIndent indent);
00037
00038 int Parse(int argc, const char* const argv[]);
00039 void GetRemainingArguments(int* argc, char** argv[]);
00040 const char* GetHelp();
00041
00042 enum
00043 {
00044 EVERYBODY = 0,
00045 XMLONLY = 0x1
00046 };
00047
00049
00050 vtkGetMacro(HelpSelected, int);
00052
00054
00056 int GetProcessType() { return this->ProcessType;}
00057 void SetProcessType(int p) {this->ProcessType = p;}
00059
00061
00063 vtkGetStringMacro(UnknownArgument);
00065
00067
00068 vtkGetStringMacro(ErrorMessage);
00070
00072 const char* GetArgv0();
00073
00075 int GetLastArgument();
00076
00079 virtual int ParseExtraXMLTag(const char* , const char** ) {return 1;}
00080
00081 protected:
00083 vtkCommandOptions();
00084
00086 virtual ~vtkCommandOptions();
00087
00089
00098 void AddBooleanArgument(const char* longarg, const char* shortarg,
00099 int* var, const char* help, int type=EVERYBODY);
00100 void AddDeprecatedArgument(const char* longarg, const char* shortarg,
00101 const char* help, int type=EVERYBODY);
00102 void AddArgument(const char* longarg, const char* shortarg,
00103 int* var, const char* help, int type=EVERYBODY);
00104 void AddArgument(const char* longarg, const char* shortarg,
00105 char** var, const char* help, int type=EVERYBODY);
00107
00109 virtual void Initialize();
00110
00112 virtual int PostProcess(int argc, const char* const* argv);
00113
00116 virtual int WrongArgument(const char* argument);
00117
00120 virtual int DeprecatedArgument(const char* argument);
00121
00125 int LoadXMLConfigFile(const char*);
00126
00127 vtkSetStringMacro(UnknownArgument);
00128
00129 vtkSetStringMacro(ErrorMessage);
00130
00131
00132 vtkSetStringMacro(XMLConfigFile);
00133
00134 void CleanArgcArgv();
00135
00136 private:
00137 int Argc;
00138 char** Argv;
00139 int HelpSelected;
00140 char* UnknownArgument;
00141 char* ErrorMessage;
00142 char* XMLConfigFile;
00143 int ProcessType;
00144
00145 vtkCommandOptions(const vtkCommandOptions&);
00146 void operator=(const vtkCommandOptions&);
00147
00148 vtkCommandOptionsInternal* Internals;
00149
00150 static int UnknownArgumentHandler(const char* argument, void* call_data);
00151 static int DeprecatedArgumentHandler(const char* argument, const char* value, void* call_data);
00152 };
00153
00154 #endif
00155