vtkCommandOptions.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: ParaView
4  Module: vtkCommandOptions.h
5 
6  Copyright (c) Kitware, Inc.
7  All rights reserved.
8  See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
25 #ifndef vtkCommandOptions_h
26 #define vtkCommandOptions_h
27 
28 #include "vtkObject.h"
29 #include "vtkPVVTKExtensionsCoreModule.h" // needed for export macro
30 
31 class vtkCommandOptionsInternal;
33 
35 {
36 public:
37  static vtkCommandOptions* New();
38  vtkTypeMacro(vtkCommandOptions, vtkObject);
39  void PrintSelf(ostream& os, vtkIndent indent) override;
40 
41  int Parse(int argc, const char* const argv[]);
42  void GetRemainingArguments(int* argc, char** argv[]);
43 
44  enum
45  {
46  EVERYBODY = 0,
47  XMLONLY = 0x1
48  };
49 
50  const char* GetHelp();
51 
53 
56  vtkGetMacro(HelpSelected, int);
57  vtkSetMacro(HelpSelected, int);
59 
64  int GetProcessType() { return this->ProcessType; }
65  void SetProcessType(int p) { this->ProcessType = p; }
66 
68 
71  vtkGetStringMacro(UnknownArgument);
73 
75 
78  vtkGetStringMacro(ErrorMessage);
80 
84  const char* GetArgv0();
85 
87 
90  vtkGetStringMacro(ApplicationPath);
92 
96  int GetLastArgument();
97 
102  virtual int ParseExtraXMLTag(const char*, const char**) { return 1; }
103 
104 protected:
109 
113  ~vtkCommandOptions() override;
114 
118  typedef int (*CallbackType)(const char* argument, const char* value, void* call_data);
119 
121 
131  void AddBooleanArgument(
132  const char* longarg, const char* shortarg, int* var, const char* help, int type = EVERYBODY);
133  void AddDeprecatedArgument(
134  const char* longarg, const char* shortarg, const char* help, int type = EVERYBODY);
135  void AddArgument(
136  const char* longarg, const char* shortarg, int* var, const char* help, int type = EVERYBODY);
137  void AddArgument(
138  const char* longarg, const char* shortarg, char** var, const char* help, int type = EVERYBODY);
140 
141  void AddCallback(const char* longarg, const char* shortarg, CallbackType callback,
142  void* call_data, const char* help, int type = EVERYBODY);
143 
147  virtual void Initialize();
148 
152  virtual int PostProcess(int argc, const char* const* argv);
153 
158  virtual int WrongArgument(const char* argument);
159 
164  virtual int DeprecatedArgument(const char* argument);
165 
171  int LoadXMLConfigFile(const char*);
172 
173  vtkSetStringMacro(UnknownArgument);
174 
175  vtkSetStringMacro(ErrorMessage);
176 
177  // Options:
178  vtkSetStringMacro(XMLConfigFile);
179 
180  void CleanArgcArgv();
181 
182  vtkSetStringMacro(ApplicationPath);
183  void ComputeApplicationPath();
184 
186 
187 private:
188  int Argc;
189  char** Argv;
190  int HelpSelected;
191  char* UnknownArgument;
192  char* ErrorMessage;
193  char* XMLConfigFile;
194  char* ApplicationPath;
195  int ProcessType; // data-server, render-server, combined-server, client
196 
197  vtkCommandOptions(const vtkCommandOptions&) = delete;
198  void operator=(const vtkCommandOptions&) = delete;
199 
200  vtkCommandOptionsInternal* Internals;
201 
202  static int UnknownArgumentHandler(const char* argument, void* call_data);
203  static int DeprecatedArgumentHandler(const char* argument, const char* value, void* call_data);
204 };
205 
206 #endif
int
void SetProcessType(int p)
#define VTKPVVTKEXTENSIONSCORE_EXPORT
void PrintSelf(ostream &os, vtkIndent indent) VTK_OVERRIDE
vtkCommandOptionsXMLParser * XMLParser
virtual int ParseExtraXMLTag(const char *, const char **)
Pass in the name and the attributes for all tags that are not Options.
ParaView options storage.
int GetProcessType()
Set/Get the type of the process for this set of options.
value
static vtkObject * New()
void operator=(const vtkObjectBase &)
ParaView options storage.