ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
vtkCommandOptions.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #pragma once
9 
10 #include "qPCL.h" // needed for export macro
11 #include "vtkObject.h"
12 
13 class vtkCommandOptionsInternal;
15 
16 class QPCL_ENGINE_LIB_API vtkCommandOptions : public vtkObject {
17 public:
20  void PrintSelf(ostream& os, vtkIndent indent) override;
21 
22  int Parse(int argc, const char* const argv[]);
23  void GetRemainingArguments(int* argc, char** argv[]);
24 
25  enum { EVERYBODY = 0, XMLONLY = 0x1 };
26 
27  const char* GetHelp();
28 
30 
33  vtkGetMacro(HelpSelected, int);
34  vtkSetMacro(HelpSelected, int);
36 
41  int GetProcessType() { return this->ProcessType; }
42  void SetProcessType(int p) { this->ProcessType = p; }
43 
45 
48  vtkGetStringMacro(UnknownArgument);
50 
52 
55  vtkGetStringMacro(ErrorMessage);
57 
61  const char* GetArgv0();
62 
64 
67  vtkGetStringMacro(ApplicationPath);
69 
73  int GetLastArgument();
74 
79  virtual int ParseExtraXMLTag(const char*, const char**) { return 1; }
80 
81 protected:
86 
90  ~vtkCommandOptions() override;
91 
95  typedef int (*CallbackType)(const char* argument,
96  const char* value,
97  void* call_data);
98 
100 
110  void AddBooleanArgument(const char* longarg,
111  const char* shortarg,
112  int* var,
113  const char* help,
114  int type = EVERYBODY);
115  void AddDeprecatedArgument(const char* longarg,
116  const char* shortarg,
117  const char* help,
118  int type = EVERYBODY);
119  void AddArgument(const char* longarg,
120  const char* shortarg,
121  int* var,
122  const char* help,
123  int type = EVERYBODY);
124  void AddArgument(const char* longarg,
125  const char* shortarg,
126  char** var,
127  const char* help,
128  int type = EVERYBODY);
130 
131  void AddCallback(const char* longarg,
132  const char* shortarg,
133  CallbackType callback,
134  void* call_data,
135  const char* help,
136  int type = EVERYBODY);
137 
141  virtual void Initialize();
142 
146  virtual int PostProcess(int argc, const char* const* argv);
147 
152  virtual int WrongArgument(const char* argument);
153 
158  virtual int DeprecatedArgument(const char* argument);
159 
165  int LoadXMLConfigFile(const char*);
166 
167  vtkSetStringMacro(UnknownArgument);
168 
169  vtkSetStringMacro(ErrorMessage);
170 
171  // Options:
172  vtkSetStringMacro(XMLConfigFile);
173 
174  void CleanArgcArgv();
175 
176  vtkSetStringMacro(ApplicationPath);
177  void ComputeApplicationPath();
178 
180 
181 private:
182  int Argc;
183  char** Argv;
184  int HelpSelected;
185  char* UnknownArgument;
186  char* ErrorMessage;
187  char* XMLConfigFile;
188  char* ApplicationPath;
189  int ProcessType; // data-server, render-server, combined-server, client
190 
191  vtkCommandOptions(const vtkCommandOptions&) = delete;
192  void operator=(const vtkCommandOptions&) = delete;
193 
194  vtkCommandOptionsInternal* Internals;
195 
196  static int UnknownArgumentHandler(const char* argument, void* call_data);
197  static int DeprecatedArgumentHandler(const char* argument,
198  const char* value,
199  void* call_data);
200 };
std::function< void(std::shared_ptr< core::Tensor >)> callback
char type
static vtkCommandOptions * New()
vtkGetStringMacro(ErrorMessage)
vtkSetMacro(HelpSelected, int)
vtkSetStringMacro(ApplicationPath)
vtkSetStringMacro(ErrorMessage)
vtkSetStringMacro(XMLConfigFile)
vtkSetStringMacro(UnknownArgument)
vtkCommandOptionsXMLParser * XMLParser
vtkTypeMacro(vtkCommandOptions, vtkObject)
virtual int ParseExtraXMLTag(const char *, const char **)
vtkGetMacro(HelpSelected, int)
void SetProcessType(int p)
vtkGetStringMacro(ApplicationPath)
vtkGetStringMacro(UnknownArgument)
#define QPCL_ENGINE_LIB_API
Definition: qPCL.h:15