1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
4 #ifndef CEPH_RBD_INDENT_STREAM_H
5 #define CEPH_RBD_INDENT_STREAM_H
7 #include "include/int_types.h"
14 class IndentBuffer : public std::streambuf {
16 IndentBuffer(size_t indent, size_t initial_offset, size_t line_length,
17 std::streambuf *streambuf)
18 : m_indent(indent), m_initial_offset(initial_offset),
19 m_line_length(line_length), m_streambuf(streambuf),
20 m_delim(" "), m_indent_prefix(m_indent, ' ') {
23 void set_delimiter(const std::string &delim) {
28 int overflow (int c) override;
32 size_t m_initial_offset;
34 std::streambuf *m_streambuf;
37 std::string m_indent_prefix;
43 class IndentStream : public std::ostream {
45 IndentStream(size_t indent, size_t initial_offset, size_t line_length,
47 : std::ostream(&m_indent_buffer),
48 m_indent_buffer(indent, initial_offset, line_length, os.rdbuf()) {
51 void set_delimiter(const std::string &delim) {
52 m_indent_buffer.set_delimiter(delim);
55 IndentBuffer m_indent_buffer;
60 #endif // CEPH_RBD_INDENT_STREAM_ITERATOR_H