diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2008-07-03 13:49:49 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2008-07-03 13:49:49 (GMT) |
commit | 7950b99d9dd10a1aeb59deb61a0bb4d290c4596e (patch) | |
tree | 9acef642c8eb4ff8d29a4c7582e440c4569ebf39 /Source/CTest/cmProcess.h | |
parent | bb7b27e417b72d0387af5393b81ed35deab52c4b (diff) | |
download | CMake-7950b99d9dd10a1aeb59deb61a0bb4d290c4596e.zip CMake-7950b99d9dd10a1aeb59deb61a0bb4d290c4596e.tar.gz CMake-7950b99d9dd10a1aeb59deb61a0bb4d290c4596e.tar.bz2 |
ENH: add missing file
Diffstat (limited to 'Source/CTest/cmProcess.h')
-rw-r--r-- | Source/CTest/cmProcess.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/Source/CTest/cmProcess.h b/Source/CTest/cmProcess.h new file mode 100644 index 0000000..7898f2d --- /dev/null +++ b/Source/CTest/cmProcess.h @@ -0,0 +1,73 @@ +/*========================================================================= + + Program: CMake - Cross-Platform Makefile Generator + Module: $RCSfile$ + Language: C++ + Date: $Date$ + Version: $Revision$ + + Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. + See Copyright.txt or http://www.cmake.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 notices for more information. + +=========================================================================*/ +#ifndef cmProcess_h +#define cmProcess_h + +#include <set> +#include <map> +#include <string> +#include <vector> +#include <cmsys/Process.h> + + +/** \class cmProcess + * \brief run a process with c++ + * + * cmProcess wraps the kwsys process stuff in a c++ class. + */ +class cmProcess +{ +public: + cmProcess(); + ~cmProcess(); + const char* GetCommand() { return this->Command.c_str();} + void SetCommand(const char* command); + void SetCommandArguments(std::vector<std::string> const& arg); + void SetWorkingDirectory(const char* dir) { this->WorkingDirectory = dir;} + void SetTimeout(double t) { this->Timeout = t;} + // Return true if the process starts + bool StartProcess(); + + // return process state + int CheckOutput(double timeout, + std::string& stdOutLine, + std::string& stdErrLine); + // return the process status + int GetProcessStatus(); + // return true if the process is running + bool IsRunning(); + // Report the status of the program + int ReportStatus(); + int GetId() { return this->Id; } + void SetId(int id) { this->Id = id;} + int GetExitValue() { return this->ExitValue;} +private: + int LastOutputPipe; + double Timeout; + cmsysProcess* Process; + std::vector<char> StdErrorBuffer; + std::vector<char> StdOutBuffer; + std::string Command; + std::string WorkingDirectory; + std::vector<std::string> Arguments; + std::vector<const char*> ProcessArgs; + std::string Output; + int Id; + int ExitValue; +}; + +#endif |