diff options
author | MyungJoo Ham <myungjoo.ham@samsung.com> | 2017-10-11 15:16:57 +0900 |
---|---|---|
committer | MyungJoo Ham <myungjoo.ham@samsung.com> | 2017-10-11 15:16:57 +0900 |
commit | 915c76ded744c0f5f151402b9fa69f3fd8452573 (patch) | |
tree | ca6a387466543248890f346847acaa8343989b22 /Source/cmProcessTools.h | |
parent | 317dbdb79761ef65e45c7358cfc7571c6afa54ad (diff) | |
download | cmake-915c76ded744c0f5f151402b9fa69f3fd8452573.tar.gz cmake-915c76ded744c0f5f151402b9fa69f3fd8452573.tar.bz2 cmake-915c76ded744c0f5f151402b9fa69f3fd8452573.zip |
Imported Upstream version 3.9.4upstream/3.9.4
Diffstat (limited to 'Source/cmProcessTools.h')
-rw-r--r-- | Source/cmProcessTools.h | 56 |
1 files changed, 31 insertions, 25 deletions
diff --git a/Source/cmProcessTools.h b/Source/cmProcessTools.h index 439726dd0..e7d9a10eb 100644 --- a/Source/cmProcessTools.h +++ b/Source/cmProcessTools.h @@ -1,18 +1,14 @@ -/*============================================================================ - CMake - Cross Platform Makefile Generator - Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - - Distributed under the OSI-approved BSD License (the "License"); - see accompanying file Copyright.txt for details. - - This software is distributed WITHOUT ANY WARRANTY; without even the - implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the License for more information. -============================================================================*/ +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file Copyright.txt or https://cmake.org/licensing for details. */ #ifndef cmProcessTools_h #define cmProcessTools_h -#include "cmStandardIncludes.h" +#include "cmConfigure.h" +#include "cmProcessOutput.h" + +#include <iosfwd> +#include <string.h> +#include <string> /** \class cmProcessTools * \brief Helper classes for process output parsing @@ -21,6 +17,7 @@ class cmProcessTools { public: + typedef cmProcessOutput::Encoding Encoding; /** Abstract interface for process output parsers. */ class OutputParser { @@ -29,9 +26,13 @@ public: done incrementally. Returns true if the parser is interested in any more data and false if it is done. */ bool Process(const char* data, int length) - { return this->ProcessChunk(data, length); } + { + return this->ProcessChunk(data, length); + } bool Process(const char* data) - { return this->Process(data, static_cast<int>(strlen(data))); } + { + return this->Process(data, static_cast<int>(strlen(data))); + } virtual ~OutputParser() {} protected: @@ -41,7 +42,7 @@ public: }; /** Process output parser that extracts one line at a time. */ - class LineParser: public OutputParser + class LineParser : public OutputParser { public: /** Construct with line separation character and choose whether to @@ -50,14 +51,15 @@ public: /** Configure logging of lines as they are extracted. */ void SetLog(std::ostream* log, const char* prefix); + protected: - char Separator; - bool IgnoreCR; std::ostream* Log; const char* Prefix; - char LineEnd; std::string Line; - virtual bool ProcessChunk(const char* data, int length); + char Separator; + char LineEnd; + bool IgnoreCR; + bool ProcessChunk(const char* data, int length) CM_OVERRIDE; /** Implement in a subclass to process one line of input. It should return true only if it is interested in more data. */ @@ -65,18 +67,22 @@ public: }; /** Trivial line handler for simple logging. */ - class OutputLogger: public LineParser + class OutputLogger : public LineParser { public: - OutputLogger(std::ostream& log, const char* prefix = 0) - { this->SetLog(&log, prefix); } + OutputLogger(std::ostream& log, const char* prefix = CM_NULLPTR) + { + this->SetLog(&log, prefix); + } + private: - virtual bool ProcessLine() { return true; } + bool ProcessLine() CM_OVERRIDE { return true; } }; /** Run a process and send output to given parsers. */ - static void RunProcess(struct cmsysProcess_s* cp, - OutputParser* out, OutputParser* err = 0); + static void RunProcess(struct cmsysProcess_s* cp, OutputParser* out, + OutputParser* err = CM_NULLPTR, + Encoding encoding = cmProcessOutput::Auto); }; #endif |