1 //===-- StreamString.cpp ----------------------------------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #include "lldb/Core/StreamString.h" 11 #include <stdio.h> 12 13 using namespace lldb; 14 using namespace lldb_private; 15 16 StreamString::StreamString () : 17 Stream (0, 4, eByteOrderBig) 18 { 19 } 20 21 StreamString::StreamString(uint32_t flags, uint32_t addr_size, ByteOrder byte_order) : 22 Stream (flags, addr_size, byte_order), 23 m_packet () 24 { 25 } 26 27 StreamString::~StreamString() 28 { 29 } 30 31 void 32 StreamString::Flush () 33 { 34 // Nothing to do when flushing a buffer based stream... 35 } 36 37 size_t 38 StreamString::Write (const void *s, size_t length) 39 { 40 m_packet.append ((char *)s, length); 41 return length; 42 } 43 44 void 45 StreamString::Clear() 46 { 47 m_packet.clear(); 48 } 49 50 bool 51 StreamString::Empty() const 52 { 53 return GetSize() == 0; 54 } 55 56 const char * 57 StreamString::GetData () const 58 { 59 return m_packet.c_str(); 60 } 61 62 size_t 63 StreamString::GetSize () const 64 { 65 return m_packet.size(); 66 } 67 68 std::string & 69 StreamString::GetString() 70 { 71 return m_packet; 72 } 73 74 const std::string & 75 StreamString::GetString() const 76 { 77 return m_packet; 78 } 79 80 void 81 StreamString::FillLastLineToColumn (uint32_t column, char fill_char) 82 { 83 const size_t length = m_packet.size(); 84 size_t last_line_begin_pos = m_packet.find_last_of("\r\n"); 85 if (last_line_begin_pos == std::string::npos) 86 { 87 last_line_begin_pos = 0; 88 } 89 else 90 { 91 ++last_line_begin_pos; 92 } 93 94 const size_t line_columns = length - last_line_begin_pos; 95 if (column > line_columns) 96 { 97 m_packet.append(column - line_columns, fill_char); 98 } 99 } 100 101