// file : cult/trace/record.hxx // author : Boris Kolpackov // copyright : Copyright (c) 2005-2010 Boris Kolpackov // license : GNU GPL v2 + exceptions; see accompanying LICENSE file #ifndef CULT_TRACE_RECORD_HXX #define CULT_TRACE_RECORD_HXX #include #include // memset #include #include namespace Cult { namespace Trace { class Record: public NonCopyable { public: Record (Char const* id, Int level); public: Char const* text () const; Char const* id () const; Int level () const; Void level (Int); public: template Record& operator<< (T const& arg); private: Char const* id_; Int level_; //@@ need to wrap streambuf. // class FixedBuffer : public std::streambuf { public: FixedBuffer (Char* buf, Size size) { std::memset (buf, 0, size); setp (buf, buf + size - 1); }; virtual int_type overflow (int_type c) { return c; } }; #ifndef CULT_TRACE_NULL char buf_[1024]; FixedBuffer sbuf_; std::ostream os_; #endif }; } } #ifndef CULT_TRACE_NULL #include #include #else #include #include #endif #endif // CULT_TRACE_RECORD_HXX