diff options
Diffstat (limited to 'source/Core/StreamString.cpp')
-rw-r--r-- | source/Core/StreamString.cpp | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/source/Core/StreamString.cpp b/source/Core/StreamString.cpp new file mode 100644 index 0000000000000..8d7d039fd65c2 --- /dev/null +++ b/source/Core/StreamString.cpp @@ -0,0 +1,100 @@ +//===-- StreamString.cpp ----------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "lldb/Core/StreamString.h" +#include <stdio.h> + +using namespace lldb; +using namespace lldb_private; + +StreamString::StreamString () : + Stream (0, 4, eByteOrderBig) +{ +} + +StreamString::StreamString(uint32_t flags, uint32_t addr_size, ByteOrder byte_order) : + Stream (flags, addr_size, byte_order), + m_packet () +{ +} + +StreamString::~StreamString() +{ +} + +void +StreamString::Flush () +{ + // Nothing to do when flushing a buffer based stream... +} + +size_t +StreamString::Write (const void *s, size_t length) +{ + m_packet.append ((char *)s, length); + return length; +} + +void +StreamString::Clear() +{ + m_packet.clear(); +} + +bool +StreamString::Empty() const +{ + return GetSize() == 0; +} + +const char * +StreamString::GetData () const +{ + return m_packet.c_str(); +} + +size_t +StreamString::GetSize () const +{ + return m_packet.size(); +} + +std::string & +StreamString::GetString() +{ + return m_packet; +} + +const std::string & +StreamString::GetString() const +{ + return m_packet; +} + +void +StreamString::FillLastLineToColumn (uint32_t column, char fill_char) +{ + const size_t length = m_packet.size(); + size_t last_line_begin_pos = m_packet.find_last_of("\r\n"); + if (last_line_begin_pos == std::string::npos) + { + last_line_begin_pos = 0; + } + else + { + ++last_line_begin_pos; + } + + const size_t line_columns = length - last_line_begin_pos; + if (column > line_columns) + { + m_packet.append(column - line_columns, fill_char); + } +} + |