blob: e4caef8c1f1f08b180b6f848fdad1699f0651ce4 [file] [log] [blame]
Chris Lattner30fdc8d2010-06-08 16:52:24 +00001//===-- 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"
Eli Friedman88966972010-06-09 08:50:27 +000011#include <stdio.h>
Chris Lattner30fdc8d2010-06-08 16:52:24 +000012
13using namespace lldb;
14using namespace lldb_private;
15
16StreamString::StreamString () :
17 Stream (0, 4, eByteOrderBig)
18{
19}
20
21StreamString::StreamString(uint32_t flags, uint32_t addr_size, ByteOrder byte_order) :
22 Stream (flags, addr_size, byte_order),
23 m_packet ()
24{
25}
26
27StreamString::~StreamString()
28{
29}
30
31void
32StreamString::Flush ()
33{
34 // Nothing to do when flushing a buffer based stream...
35}
36
37int
38StreamString::Write (const void *s, size_t length)
39{
40 m_packet.append ((char *)s, length);
41 return length;
42}
43
44void
45StreamString::Clear()
46{
47 m_packet.clear();
48}
49
Chris Lattner30fdc8d2010-06-08 16:52:24 +000050const char *
51StreamString::GetData () const
52{
53 return m_packet.c_str();
54}
55
56size_t
57StreamString::GetSize () const
58{
59 return m_packet.size();
60}
61
62std::string &
63StreamString::GetString()
64{
65 return m_packet;
66}
67
68const std::string &
69StreamString::GetString() const
70{
71 return m_packet;
72}
73
Greg Claytonba812f42012-05-10 02:52:23 +000074void
75StreamString::FillLastLineToColumn (uint32_t column, char fill_char)
76{
77 const size_t length = m_packet.size();
78 size_t last_line_begin_pos = m_packet.find_last_of("\r\n");
79 if (last_line_begin_pos == std::string::npos)
80 {
81 last_line_begin_pos = 0;
82 }
83 else
84 {
85 ++last_line_begin_pos;
86 }
87
88 const size_t line_columns = length - last_line_begin_pos;
89 if (column > line_columns)
90 {
91 m_packet.append(column - line_columns, fill_char);
92 }
93}
94