forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			117 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
| //===-- 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 (reinterpret_cast<const 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();
 | |
| }
 | |
| 
 | |
| size_t
 | |
| StreamString::GetSizeOfLastLine () const
 | |
| {
 | |
|     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)
 | |
|     {
 | |
|         return length;
 | |
|     }
 | |
|     else
 | |
|     {
 | |
|         ++last_line_begin_pos;
 | |
|         return length - last_line_begin_pos;
 | |
|     }
 | |
| }
 | |
| 
 | |
| 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);
 | |
|     }
 | |
| }
 | |
| 
 |