diff options
author | Evan Martin <martine@danga.com> | 2013-05-16 23:23:29 (GMT) |
---|---|---|
committer | Evan Martin <martine@danga.com> | 2013-05-16 23:23:29 (GMT) |
commit | ddb21217f90e2fc6639d68b240ad2fc394b2dc6c (patch) | |
tree | b72aa49307eb6d4e9fd0781ae3202261b127c4e8 /src/line_printer.h | |
parent | d0d199e99fe6648c3994ecbbe0c7927065b22d16 (diff) | |
parent | 31ef1415f208e04000424e6fc446fe4377bc7ed3 (diff) | |
download | Ninja-ddb21217f90e2fc6639d68b240ad2fc394b2dc6c.zip Ninja-ddb21217f90e2fc6639d68b240ad2fc394b2dc6c.tar.gz Ninja-ddb21217f90e2fc6639d68b240ad2fc394b2dc6c.tar.bz2 |
Merge branch 'master' into release
Diffstat (limited to 'src/line_printer.h')
-rw-r--r-- | src/line_printer.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/line_printer.h b/src/line_printer.h new file mode 100644 index 0000000..c292464 --- /dev/null +++ b/src/line_printer.h @@ -0,0 +1,53 @@ +// Copyright 2013 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef NINJA_LINE_PRINTER_H_ +#define NINJA_LINE_PRINTER_H_ + +#include <string> +using namespace std; + +/// Prints lines of text, possibly overprinting previously printed lines +/// if the terminal supports it. +class LinePrinter { + public: + LinePrinter(); + + bool is_smart_terminal() const { return smart_terminal_; } + void set_smart_terminal(bool smart) { smart_terminal_ = smart; } + + enum LineType { + FULL, + ELIDE + }; + /// Overprints the current line. If type is ELIDE, elides to_print to fit on + /// one line. + void Print(string to_print, LineType type); + + /// Prints a string on a new line, not overprinting previous output. + void PrintOnNewLine(const string& to_print); + + private: + /// Whether we can do fancy terminal control codes. + bool smart_terminal_; + + /// Whether the caret is at the beginning of a blank line. + bool have_blank_line_; + +#ifdef _WIN32 + void* console_; +#endif +}; + +#endif // NINJA_LINE_PRINTER_H_ |