LLDB mainline
SBStream.h
Go to the documentation of this file.
1//===-- SBStream.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_API_SBSTREAM_H
10#define LLDB_API_SBSTREAM_H
11
12#include <cstdio>
13
14#include "lldb/API/SBDefines.h"
15
16namespace lldb {
17
19public:
20 SBStream();
21
22 SBStream(SBStream &&rhs);
23
25
26 explicit operator bool() const;
27
28 bool IsValid() const;
29
30 // If this stream is not redirected to a file, it will maintain a local cache
31 // for the stream data which can be accessed using this accessor.
32 const char *GetData();
33
34 // If this stream is not redirected to a file, it will maintain a local cache
35 // for the stream output whose length can be accessed using this accessor.
36 size_t GetSize();
37
38 void Printf(const char *format, ...) __attribute__((format(printf, 2, 3)));
39
40 void Print(const char *str);
41
42 void RedirectToFile(const char *path, bool append);
43
44 void RedirectToFile(lldb::SBFile file);
45
46 void RedirectToFile(lldb::FileSP file);
47
48 void RedirectToFileHandle(FILE *fh, bool transfer_fh_ownership);
49
50 void RedirectToFileDescriptor(int fd, bool transfer_fh_ownership);
51
52 // If the stream is redirected to a file, forget about the file and if
53 // ownership of the file was transferred to this object, close the file. If
54 // the stream is backed by a local cache, clear this cache.
55 void Clear();
56
57protected:
58 friend class SBAddress;
59 friend class SBBlock;
60 friend class SBBreakpoint;
62 friend class SBBreakpointName;
64 friend class SBCompileUnit;
65 friend class SBData;
66 friend class SBDebugger;
67 friend class SBDeclaration;
68 friend class SBEvent;
69 friend class SBFileSpec;
70 friend class SBFileSpecList;
71 friend class SBFrame;
72 friend class SBFunction;
73 friend class SBInstruction;
74 friend class SBInstructionList;
75 friend class SBLaunchInfo;
76 friend class SBLineEntry;
77 friend class SBMemoryRegionInfo;
78 friend class SBModule;
79 friend class SBModuleSpec;
80 friend class SBModuleSpecList;
81 friend class SBProcess;
82 friend class SBSection;
83 friend class SBSourceManager;
84 friend class SBStructuredData;
85 friend class SBSymbol;
86 friend class SBSymbolContext;
87 friend class SBSymbolContextList;
88 friend class SBTarget;
89 friend class SBThread;
90 friend class SBThreadPlan;
91 friend class SBType;
92 friend class SBTypeEnumMember;
94 friend class SBTypeMember;
95 friend class SBValue;
96 friend class SBWatchpoint;
97
98 lldb_private::Stream *operator->();
99
100 lldb_private::Stream *get();
101
102 lldb_private::Stream &ref();
103
104private:
105 SBStream(const SBStream &) = delete;
106 const SBStream &operator=(const SBStream &) = delete;
107 std::unique_ptr<lldb_private::Stream> m_opaque_up;
108 bool m_is_file = false;
109};
110
111} // namespace lldb
112
113#endif // LLDB_API_SBSTREAM_H
#define LLDB_API
Definition: SBDefines.h:26
__attribute__((always_inline)) int uuid_is_null(uuid_t uuid)
A class that represents a running process on the host machine.
Definition: SBAddress.h:15