blob: 1c6f146f1be110b72b746fa2ee110d6bbcf13879 [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
Johnny Chen797a1b32012-05-29 20:04:10 +000050bool
51StreamString::Empty() const
52{
53 return GetSize() == 0;
54}
55
Chris Lattner30fdc8d2010-06-08 16:52:24 +000056const char *
57StreamString::GetData () const
58{
59 return m_packet.c_str();
60}
61
62size_t
63StreamString::GetSize () const
64{
65 return m_packet.size();
66}
67
68std::string &
69StreamString::GetString()
70{
71 return m_packet;
72}
73
74const std::string &
75StreamString::GetString() const
76{
77 return m_packet;
78}
79
Greg Claytonba812f42012-05-10 02:52:23 +000080void
81StreamString::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