LLDB mainline
lldb_private::StreamAsynchronousIO Class Reference

A stream meant for asynchronously printing output. More...

#include <StreamAsynchronousIO.h>

Inheritance diagram for lldb_private::StreamAsynchronousIO:
[legend]

Public Types

enum  ForSTDOUT : bool { STDOUT = true , STDERR = false }
Public Types inherited from lldb_private::Stream
enum  { eBinary = (1 << 0) }
 m_flags bit values. More...

Public Member Functions

 StreamAsynchronousIO (Debugger &debugger, ForSTDOUT for_stdout)
 ~StreamAsynchronousIO () override
void Flush () override
 Flush the stream.
Public Member Functions inherited from lldb_private::Stream
 Stream (uint32_t flags, uint32_t addr_size, lldb::ByteOrder byte_order, bool colors=false)
 Construct with flags and address size and byte order.
 Stream (bool colors=false)
 Construct a default Stream, not binary, host byte order and host addr size.
 Stream (const Stream &other)
Streamoperator= (const Stream &rhs)
virtual ~Stream ()
 Destructor.
size_t Write (const void *src, size_t src_len)
 Output character bytes to the stream.
size_t GetWrittenBytes () const
size_t PutChar (char ch)
lldb::ByteOrder SetByteOrder (lldb::ByteOrder byte_order)
 Set the byte_order value.
size_t PrintfAsRawHex8 (const char *format,...) __attribute__((__format__(__printf__
 Format a C string from a printf style format and variable arguments and encode and append the resulting C string as hex bytes.
size_t size_t PutHex8 (uint8_t uvalue)
 Append an uint8_t value in the hexadecimal format to the stream.
size_t PutNHex8 (size_t n, uint8_t uvalue)
size_t PutHex16 (uint16_t uvalue, lldb::ByteOrder byte_order=lldb::eByteOrderInvalid)
size_t PutHex32 (uint32_t uvalue, lldb::ByteOrder byte_order=lldb::eByteOrderInvalid)
size_t PutHex64 (uint64_t uvalue, lldb::ByteOrder byte_order=lldb::eByteOrderInvalid)
size_t PutMaxHex64 (uint64_t uvalue, size_t byte_size, lldb::ByteOrder byte_order=lldb::eByteOrderInvalid)
size_t PutFloat (float f, lldb::ByteOrder byte_order=lldb::eByteOrderInvalid)
size_t PutDouble (double d, lldb::ByteOrder byte_order=lldb::eByteOrderInvalid)
size_t PutLongDouble (long double ld, lldb::ByteOrder byte_order=lldb::eByteOrderInvalid)
size_t PutPointer (void *ptr)
size_t PutBytesAsRawHex8 (const void *src, size_t src_len, lldb::ByteOrder src_byte_order=lldb::eByteOrderInvalid, lldb::ByteOrder dst_byte_order=lldb::eByteOrderInvalid)
size_t PutRawBytes (const void *s, size_t src_len, lldb::ByteOrder src_byte_order=lldb::eByteOrderInvalid, lldb::ByteOrder dst_byte_order=lldb::eByteOrderInvalid)
size_t PutStringAsRawHex8 (llvm::StringRef s)
Streamoperator<< (const char *cstr)
 Output a NULL terminated C string cstr to the stream s.
Streamoperator<< (llvm::StringRef str)
Streamoperator<< (const void *p)
 Output a pointer value p to the stream s.
Streamoperator<< (char ch)
 Output a character ch to the stream s.
Streamoperator<< (uint8_t uval)=delete
Streamoperator<< (uint16_t uval)=delete
Streamoperator<< (uint32_t uval)=delete
Streamoperator<< (uint64_t uval)=delete
Streamoperator<< (int8_t sval)=delete
Streamoperator<< (int16_t sval)=delete
Streamoperator<< (int32_t sval)=delete
Streamoperator<< (int64_t sval)=delete
size_t PutCString (llvm::StringRef cstr)
 Output a C string to the stream.
void PutCStringColorHighlighted (llvm::StringRef text, std::optional< HighlightSettings > settings=std::nullopt)
 Output a C string to the stream with color highlighting.
size_t EOL ()
 Output and End of Line character to the stream.
uint32_t GetAddressByteSize () const
 Get the address size in bytes.
FlagsGetFlags ()
 The flags accessor.
const FlagsGetFlags () const
 The flags const accessor.
lldb::ByteOrder GetByteOrder () const
unsigned GetIndentLevel () const
 Get the current indentation level.
size_t Indent (llvm::StringRef s="")
 Indent the current line in the stream.
void IndentLess (unsigned amount=2)
 Decrement the current indentation level.
void IndentMore (unsigned amount=2)
 Increment the current indentation level.
void Offset (uint32_t offset, const char *format="0x%8.8x: ")
 Output an offset value.
size_t Printf (const char *format,...) __attribute__((format(printf
 Output printf formatted output to the stream.
size_t size_t PrintfVarArg (const char *format, va_list args)
template<typename... Args>
void Format (const char *format, Args &&... args)
void QuotedCString (const char *cstr, const char *format="\"%s\"")
 Output a quoted C string value to the stream.
void SetAddressByteSize (uint32_t addr_size)
 Set the address size in bytes.
void SetIndentLevel (unsigned level)
 Set the current indentation level.
size_t PutSLEB128 (int64_t uval)
 Output a SLEB128 number to the stream.
size_t PutULEB128 (uint64_t uval)
 Output a ULEB128 number to the stream.
llvm::raw_ostream & AsRawOstream ()
 Returns a raw_ostream that forwards the data to this Stream object.

Protected Member Functions

size_t WriteImpl (const void *src, size_t src_len) override
 Output character bytes to the stream.
Protected Member Functions inherited from lldb_private::Stream
void _PutHex8 (uint8_t uvalue, bool add_prefix)

Private Attributes

Debuggerm_debugger
std::string m_data
ForSTDOUT m_for_stdout

Additional Inherited Members

Protected Attributes inherited from lldb_private::Stream
Flags m_flags
 Dump flags.
uint32_t m_addr_size = 4
 Size of an address in bytes.
lldb::ByteOrder m_byte_order
 Byte order to use when encoding scalar types.
unsigned m_indent_level = 0
 Indention level.
std::size_t m_bytes_written = 0
 Number of bytes written so far.
RawOstreamForward m_forwarder

Detailed Description

A stream meant for asynchronously printing output.

Output is buffered until the stream is flushed or destroyed. Printing is handled by the currently active IOHandler, or the debugger's output or error stream if there is none.

Definition at line 24 of file StreamAsynchronousIO.h.

Member Enumeration Documentation

◆ ForSTDOUT

Enumerator
STDOUT 
STDERR 

Definition at line 26 of file StreamAsynchronousIO.h.

Constructor & Destructor Documentation

◆ StreamAsynchronousIO()

StreamAsynchronousIO::StreamAsynchronousIO ( Debugger & debugger,
StreamAsynchronousIO::ForSTDOUT for_stdout )

◆ ~StreamAsynchronousIO()

StreamAsynchronousIO::~StreamAsynchronousIO ( )
override

Definition at line 22 of file StreamAsynchronousIO.cpp.

References Flush().

Member Function Documentation

◆ Flush()

void StreamAsynchronousIO::Flush ( )
overridevirtual

Flush the stream.

Subclasses should flush the stream to make any output appear if the stream has any buffering.

Implements lldb_private::Stream.

Definition at line 27 of file StreamAsynchronousIO.cpp.

References m_data, m_debugger, and m_for_stdout.

Referenced by ~StreamAsynchronousIO().

◆ WriteImpl()

size_t StreamAsynchronousIO::WriteImpl ( const void * src,
size_t src_len )
overrideprotectedvirtual

Output character bytes to the stream.

Appends src_len characters from the buffer src to the stream.

Parameters
[in]srcA buffer containing at least src_len bytes of data.
[in]src_lenA number of bytes to append to the stream.
Returns
The number of bytes that were appended to the stream.

Implements lldb_private::Stream.

Definition at line 34 of file StreamAsynchronousIO.cpp.

References m_data.

Member Data Documentation

◆ m_data

std::string lldb_private::StreamAsynchronousIO::m_data
private

Definition at line 42 of file StreamAsynchronousIO.h.

Referenced by Flush(), StreamAsynchronousIO(), and WriteImpl().

◆ m_debugger

Debugger& lldb_private::StreamAsynchronousIO::m_debugger
private

Definition at line 41 of file StreamAsynchronousIO.h.

Referenced by Flush(), and StreamAsynchronousIO().

◆ m_for_stdout

ForSTDOUT lldb_private::StreamAsynchronousIO::m_for_stdout
private

Definition at line 43 of file StreamAsynchronousIO.h.

Referenced by Flush(), and StreamAsynchronousIO().


The documentation for this class was generated from the following files: