26 #include <boost/range/iterator_range.hpp> 
   27 #include <boost/algorithm/string/split.hpp> 
   28 #include <boost/algorithm/string/classification.hpp> 
   34   : std::ostream(&m_buffer)
 
   35   , m_buffer(os, indent)
 
   44 IndentedStream::StreamBuf::StreamBuf(std::ostream& os, 
const std::string& indent)
 
   51 IndentedStream::StreamBuf::sync()
 
   53   typedef boost::iterator_range<std::string::const_iterator> StringView;
 
   55   const std::string& output = str();
 
   56   std::vector<StringView> splitOutput;
 
   57   boost::split(splitOutput, output, boost::is_any_of(
"\n"));
 
   59   if (!splitOutput.empty() && splitOutput.back().empty()) {
 
   60     splitOutput.pop_back();
 
   62   for (
const StringView& line : splitOutput) {
 
   63     m_output << m_indent << line << 
"\n";
 
~IndentedStream() override
 
IndentedStream(std::ostream &os, const std::string &indent)