summaryrefslogtreecommitdiffstats
path: root/Source/CTest/cmProcess.h
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2008-07-03 13:49:49 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2008-07-03 13:49:49 (GMT)
commit7950b99d9dd10a1aeb59deb61a0bb4d290c4596e (patch)
tree9acef642c8eb4ff8d29a4c7582e440c4569ebf39 /Source/CTest/cmProcess.h
parentbb7b27e417b72d0387af5393b81ed35deab52c4b (diff)
downloadCMake-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.h73
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