.. _program_listing_file__tmp_ws_src_ecl_core_ecl_streams_include_ecl_streams_log_stream.hpp: Program Listing for File log_stream.hpp ======================================= |exhale_lsh| :ref:`Return to documentation for file ` (``/tmp/ws/src/ecl_core/ecl_streams/include/ecl/streams/log_stream.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp /***************************************************************************** ** Ifdefs *****************************************************************************/ #ifndef ECL_STREAMS_LOG_STREAM_HPP_ #define ECL_STREAMS_LOG_STREAM_HPP_ /***************************************************************************** ** Includes *****************************************************************************/ #include #include #include #include #include #include #include "text_stream.hpp" #include "macros.hpp" /***************************************************************************** ** Macros *****************************************************************************/ #define LOG(logStream,mode) \ if ( !logStream.isModeEnabled(mode) ) {} \ else logStream.log(mode) // << rest of stream input will fill out here #define FLUSH(logStream) \ if ( !logStream.isEnabled() ) {} \ else { logStream.flush(); } /***************************************************************************** ** Namespaces *****************************************************************************/ namespace ecl { /***************************************************************************** ** Interface [LogStream] *****************************************************************************/ class ecl_streams_PUBLIC LogStream : public TextStream { public: LogStream() {}; LogStream(const std::string &file_name, const WriteMode &mode = New) : write_header(true), write_stamp(true) { ecl_try { if ( !this->device().open(file_name, mode) ) { error = this->device().error(); } } ecl_catch(StandardException &e) { ecl_throw(StandardException(LOC,e)); } } virtual ~LogStream() {}; void enableHeader(); void disableHeader(); void enableTimeStamp(); void disableTimeStamp(); void enableMode(int mode, const std::string header = ""); void disableMode(int mode); bool isEnabled(); bool isModeEnabled(int mode); LogStream& log(int mode); using TextStream::operator<<; private: bool write_header; bool write_stamp; std::map modes; TimeStamp timestamp; }; } // namespace ecl #endif /* ECL_STREAMS_LOG_STREAM_HPP_ */