#ifndef BASE_INDENTED_STREAM_H #define BASE_INDENTED_STREAM_H #include //---------------------------------------------------------------- namespace { class indented_stream { public: indented_stream(std::ostream &out) : out_(out), indent_(0) { } void indent() { for (unsigned i = 0; i < indent_ * 2; i++) out_ << ' '; } void inc() { indent_++; } void dec() { indent_--; } template indented_stream &operator <<(T const &t) { out_ << t; return *this; } indented_stream &operator <<(std::ostream &(*fp)(std::ostream &)) { out_ << fp; return *this; } private: std::ostream &out_; unsigned indent_; }; } //---------------------------------------------------------------- #endif