/// @param bold bold/brighter text, default false
/// @param bg if true change the background, default: change foreground
/// @returns itself so it can be used within << invocations
- virtual raw_ostream &changeColor(enum Colors, bool = false, bool = false) {
+ virtual raw_ostream &changeColor(enum Colors, bool = false, bool = false) {
return *this; }
/// Resets the colors to terminal defaults. Call this when you are done
/// has_error - Return the value of the flag in this raw_fd_ostream indicating
/// whether an output error has been encountered.
- /// This doesn't implicitly flush any pending output.
+ /// This doesn't implicitly flush any pending output. Also, it doesn't
+ /// guarantee to detect all errors unless the the stream has been closed.
bool has_error() const {
return Error;
}
/// flag is set at the time when this raw_ostream's destructor is called,
/// report_fatal_error is called to report the error. Use clear_error()
/// after handling the error to avoid this behavior.
+ ///
+ /// "Errors should never pass silently.
+ /// Unless explicitly silenced."
+ /// - from The Zen of Python, by Tim Peters
+ ///
void clear_error() {
Error = false;
}
};
-/// raw_stdout_ostream - This is a stream that always prints to stdout.
-///
-class raw_stdout_ostream : public raw_fd_ostream {
- // An out of line virtual method to provide a home for the class vtable.
- virtual void handle();
-public:
- raw_stdout_ostream();
-};
-
-/// raw_stderr_ostream - This is a stream that always prints to stderr.
-///
-class raw_stderr_ostream : public raw_fd_ostream {
- // An out of line virtual method to provide a home for the class vtable.
- virtual void handle();
-public:
- raw_stderr_ostream();
-};
-
/// outs() - This returns a reference to a raw_ostream for standard output.
/// Use it like: outs() << "foo" << "bar";
raw_ostream &outs();
/// outside of the raw_svector_ostream's control. It is only safe to do this
/// if the raw_svector_ostream has previously been flushed.
void resync();
-
+
/// str - Flushes the stream contents to the target vector and return a
/// StringRef for the vector contents.
StringRef str();
~raw_null_ostream();
};
-/// tool_output_file - This class behaves like a raw_fd_ostream but adds a
-/// few extra features commonly needed for compiler-like tool output files:
-/// - The file is automatically deleted if the process is killed.
-/// - The file is automatically deleted when the tool_output_file
-/// object is destroyed unless the client calls keep().
-class tool_output_file : public raw_fd_ostream {
- std::string Filename;
- bool Keep;
-public:
- tool_output_file(const char *filename, std::string &ErrorInfo,
- unsigned Flags = 0);
-
- ~tool_output_file();
-
- /// keep - Indicate that the tool's job wrt this output file has been
- /// successful and the file should not be deleted.
- void keep() { Keep = true; }
-};
-
} // end llvm namespace
#endif