Files
ThirdParty-6/ParaView-5.0.1/ParaViewCore/Common/vtkCommandOptions.h

184 lines
5.6 KiB
C++

/*=========================================================================
Program: ParaView
Module: vtkCommandOptions.h
Copyright (c) Kitware, Inc.
All rights reserved.
See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
// .NAME vtkCommandOptions - ParaView options storage
// .SECTION Description
// An object of this class represents a storage for ParaView options
//
// These options can be retrieved during run-time, set using configuration file
// or using Command Line Arguments.
#ifndef vtkCommandOptions_h
#define vtkCommandOptions_h
#include "vtkObject.h"
#include "vtkPVCommonModule.h" // needed for export macro
class vtkCommandOptionsInternal;
class vtkCommandOptionsXMLParser;
class VTKPVCOMMON_EXPORT vtkCommandOptions : public vtkObject
{
public:
static vtkCommandOptions* New();
vtkTypeMacro(vtkCommandOptions,vtkObject);
void PrintSelf(ostream& os, vtkIndent indent);
//BTX
int Parse(int argc, const char* const argv[]);
void GetRemainingArguments(int* argc, char** argv[]);
enum
{
EVERYBODY = 0,
XMLONLY = 0x1
};
//ETX
const char* GetHelp();
// Description:
// Was help selected?
vtkGetMacro(HelpSelected, int);
vtkSetMacro(HelpSelected, int);
// Description:
// Set/Get the type of the process for this set of options.
// data-server, render-server, combined-server or client.
int GetProcessType() { return this->ProcessType;}
void SetProcessType(int p) {this->ProcessType = p;}
// Description:
// In case of unknown argument, set this variable with the unknown argument.
vtkGetStringMacro(UnknownArgument);
// Description:
// Get the error message if Parse returned 0.
vtkGetStringMacro(ErrorMessage);
// Description:
// Get argv[0]
const char* GetArgv0();
// Description:
// Get full path of executable (based on Argv0)
vtkGetStringMacro(ApplicationPath);
// Description:
// Get the index of the last argument parsed.
int GetLastArgument();
// Description:
// Pass in the name and the attributes for all tags that are not Options.
// If it returns 1, then it is successful, and 0 if it failed.
virtual int ParseExtraXMLTag(const char* , const char** ) {return 1;}
protected:
//BTX
// Description:
// Default constructor.
vtkCommandOptions();
// Description:
// Destructor.
virtual ~vtkCommandOptions();
// Description:
// Prototype for callbacks.
typedef int(*CallbackType)(const char* argument, const char* value,
void* call_data);
// Description:
// Add a command line option. For each argument added there is a long
// version --long and a short version -l, a help string, and a variable
// that is set to the value of the option. The types can be int, char*, or
// boolean (set to 1 of option is present). Also deprecated arguments can
// be added with only a help string. The help string should say that the
// argument is deprecated and suggest the alternative argument to use.
// Each option can specify in a bit flag int the processes that the option
// is valid for, the default is to be valid for all paraview processes.
void AddBooleanArgument(const char* longarg, const char* shortarg,
int* var, const char* help, int type=EVERYBODY);
void AddDeprecatedArgument(const char* longarg, const char* shortarg,
const char* help, int type=EVERYBODY);
void AddArgument(const char* longarg, const char* shortarg,
int* var, const char* help, int type=EVERYBODY);
void AddArgument(const char* longarg, const char* shortarg,
char** var, const char* help, int type=EVERYBODY);
void AddCallback(const char* longarg, const char* shortarg,
CallbackType callback, void* call_data, const char* help,
int type=EVERYBODY);
// Description:
// Initialize arguments.
virtual void Initialize();
// Description:
// After parsing, process extra option dependencies.
virtual int PostProcess(int argc, const char* const* argv);
// Description:
// This method is called when wrong argument is found. If it returns 0, then
// the parsing will fail.
virtual int WrongArgument(const char* argument);
// Description:
// This method is called when a deprecated argument is found. If it returns 0, then
// the parsing will fail.
virtual int DeprecatedArgument(const char* argument);
// Description:
// This method loads the paraview config file. The command line
// will override any of the values in this file, but all options can
// be in the file.
int LoadXMLConfigFile(const char*);
vtkSetStringMacro(UnknownArgument);
vtkSetStringMacro(ErrorMessage);
// Options:
vtkSetStringMacro(XMLConfigFile);
void CleanArgcArgv();
vtkSetStringMacro(ApplicationPath);
void ComputeApplicationPath();
vtkCommandOptionsXMLParser* XMLParser;
private:
int Argc;
char** Argv;
int HelpSelected;
char* UnknownArgument;
char* ErrorMessage;
char* XMLConfigFile;
char* ApplicationPath;
int ProcessType; // data-server, render-server, combined-server, client
vtkCommandOptions(const vtkCommandOptions&); // Not implemented
void operator=(const vtkCommandOptions&); // Not implemented
vtkCommandOptionsInternal* Internals;
static int UnknownArgumentHandler(const char* argument, void* call_data);
static int DeprecatedArgumentHandler(const char* argument, const char* value, void* call_data);
//ETX
};
#endif