comac_desk_app/ThirdpartyLibs/Libs/windows-x86_64/vtk/include/vtkExecutableRunner.h

113 lines
2.8 KiB
C
Raw Normal View History

2024-11-21 11:50:43 +08:00
/*=========================================================================
Program: Visualization Toolkit
Module: vtkExecutableRunner.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm 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.
=========================================================================*/
#ifndef vtkExecutableRunner_h
#define vtkExecutableRunner_h
#include "vtkCommonSystemModule.h" // For export macro
#include "vtkObject.h"
#include "vtksys/Process.h" // For class vtksysProcess
#include <string> // for class std::string
/**
* @class vtkExecutableRunner
* @brief Launch a process on the current machine and get its output
*
* Launch a process on the current machine and get its standard output and
* standard error output.
*/
class VTKCOMMONSYSTEM_EXPORT vtkExecutableRunner : public vtkObject
{
public:
static vtkExecutableRunner* New();
vtkTypeMacro(vtkExecutableRunner, vtkObject);
void PrintSelf(ostream& os, vtkIndent indent) override;
vtkExecutableRunner() = default;
~vtkExecutableRunner() override = default;
/**
* Execute the command currently set if any.
* This will update the StdOut and StdErr properties.
*/
void Execute();
//@{
/**
* Set/Get command timeout in seconds. A non-positive (<= 0) value will
* disable the timeout.
*
* Default is 5
*/
vtkSetMacro(Timeout, double);
vtkGetMacro(Timeout, double);
//@}
//@{
/**
* Set/Get if we trim the ending whitespaces of the output.
*
* Default is true.
*/
vtkSetMacro(RightTrimResult, bool);
vtkGetMacro(RightTrimResult, bool);
vtkBooleanMacro(RightTrimResult, bool);
//@}
//@{
/**
* Set/Get command to execute. An empty command will do nothing.
*/
vtkGetCharFromStdStringMacro(Command);
vtkSetStdStringFromCharMacro(Command);
//@}
//@{
/**
* Get output of the previously run command.
*/
vtkGetCharFromStdStringMacro(StdOut);
vtkGetCharFromStdStringMacro(StdErr);
//@}
/**
* Get return value of last command. If no command has been
* executed or if the command has failed in some way value is != 0,
* else return 0.
*/
vtkGetMacro(ReturnValue, int);
protected:
vtkSetMacro(StdOut, std::string);
vtkSetMacro(StdErr, std::string);
int ExitProcess(vtksysProcess* process);
private:
vtkExecutableRunner(const vtkExecutableRunner&) = delete;
void operator=(const vtkExecutableRunner&) = delete;
bool RightTrimResult = true;
double Timeout = 5;
std::string Command;
int ReturnValue = -1;
std::string StdOut;
std::string StdErr;
};
#endif // vtkExecutableRunner_h