LLDB mainline
StreamAsynchronousIO.h
Go to the documentation of this file.
1//===-- StreamAsynchronousIO.h -----------------------------------*- C++-*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLDB_CORE_STREAMASYNCHRONOUSIO_H
10#define LLDB_CORE_STREAMASYNCHRONOUSIO_H
11
12#include "lldb/Utility/Stream.h"
13
14#include <string>
15
16#include <cstddef>
17
18namespace lldb_private {
19class Debugger;
20
21/// A stream meant for asynchronously printing output. Output is buffered until
22/// the stream is flushed or destroyed. Printing is handled by the currently
23/// active IOHandler, or the debugger's output or error stream if there is none.
25public:
26 enum ForSTDOUT : bool {
27 STDOUT = true,
28 STDERR = false,
29 };
30
31 StreamAsynchronousIO(Debugger &debugger, ForSTDOUT for_stdout);
32
33 ~StreamAsynchronousIO() override;
34
35 void Flush() override;
36
37protected:
38 size_t WriteImpl(const void *src, size_t src_len) override;
39
40private:
42 std::string m_data;
44};
45
46} // namespace lldb_private
47
48#endif // LLDB_CORE_STREAMASYNCHRONOUSIO_H
A class to manage flag bits.
Definition Debugger.h:80
void Flush() override
Flush the stream.
StreamAsynchronousIO(Debugger &debugger, ForSTDOUT for_stdout)
size_t WriteImpl(const void *src, size_t src_len) override
Output character bytes to the 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.
Definition Stream.cpp:27
A class that represents a running process on the host machine.