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