1 //===-- lldb-forward.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_LLDB_FORWARD_H
10 #define LLDB_LLDB_FORWARD_H
11 
12 #if defined(__cplusplus)
13 
14 #include <memory>
15 
16 // lldb forward declarations
17 namespace lldb_private {
18 
19 class ABI;
20 class ASTResultSynthesizer;
21 class ASTStructExtractor;
22 class Address;
23 class AddressRange;
24 class AddressResolver;
25 class ArchSpec;
26 class Architecture;
27 class Args;
28 class ArmUnwindInfo;
29 class Baton;
30 class Block;
31 class Breakpoint;
32 class BreakpointID;
33 class BreakpointIDList;
34 class BreakpointList;
35 class BreakpointLocation;
36 class BreakpointLocationCollection;
37 class BreakpointLocationList;
38 class BreakpointName;
39 class BreakpointOptionGroup;
40 class BreakpointOptions;
41 class BreakpointPrecondition;
42 class BreakpointResolver;
43 class BreakpointSite;
44 class BreakpointSiteList;
45 class BroadcastEventSpec;
46 class Broadcaster;
47 class BroadcasterManager;
48 class CXXSyntheticChildren;
49 struct CacheSignature;
50 class CallFrameInfo;
51 class CommandInterpreter;
52 class CommandInterpreterRunOptions;
53 class CommandObject;
54 class CommandObjectMultiword;
55 class CommandReturnObject;
56 class Communication;
57 class CompactUnwindInfo;
58 class CompileUnit;
59 class CompilerDecl;
60 class CompilerDeclContext;
61 class CompilerType;
62 class Connection;
63 class ConnectionFileDescriptor;
64 class ConstString;
65 class ConstStringTable;
66 class DWARFCallFrameInfo;
67 class DWARFDataExtractor;
68 class DWARFExpression;
69 class DWARFExpressionList;
70 class DataBuffer;
71 class WritableDataBuffer;
72 class DataBufferHeap;
73 class DataEncoder;
74 class DataExtractor;
75 class DataFileCache;
76 class Debugger;
77 class Declaration;
78 class DiagnosticManager;
79 class Disassembler;
80 class DumpValueObjectOptions;
81 class DynamicCheckerFunctions;
82 class DynamicLoader;
83 class Editline;
84 class EmulateInstruction;
85 class Environment;
86 class EvaluateExpressionOptions;
87 class Event;
88 class EventData;
89 class EventDataStructuredData;
90 class ExecutionContext;
91 class ExecutionContextRef;
92 class ExecutionContextScope;
93 class Expression;
94 class ExpressionTypeSystemHelper;
95 class ExpressionVariable;
96 class ExpressionVariableList;
97 class File;
98 class FileSpec;
99 class FileSpecList;
100 class Flags;
101 class FormatManager;
102 class FormattersMatchCandidate;
103 class FuncUnwinders;
104 class Function;
105 class FunctionCaller;
106 class FunctionInfo;
107 class IOHandler;
108 class IOObject;
109 class IRExecutionUnit;
110 class InlineFunctionInfo;
111 class Instruction;
112 class InstructionList;
113 class InstrumentationRuntime;
114 class JITLoader;
115 class JITLoaderList;
116 class Language;
117 class LanguageCategory;
118 class LanguageRuntime;
119 class LineTable;
120 class Listener;
121 class Log;
122 class Mangled;
123 class Materializer;
124 class MemoryHistory;
125 class MemoryRegionInfo;
126 class MemoryRegionInfos;
127 class Module;
128 class ModuleList;
129 class ModuleSpec;
130 class ModuleSpecList;
131 class ObjectContainer;
132 class ObjectFile;
133 class ObjectFileJITDelegate;
134 class OperatingSystem;
135 class OptionGroup;
136 class OptionGroupOptions;
137 class OptionGroupPlatform;
138 class OptionValue;
139 class OptionValueArch;
140 class OptionValueArgs;
141 class OptionValueArray;
142 class OptionValueBoolean;
143 class OptionValueChar;
144 class OptionValueDictionary;
145 class OptionValueEnumeration;
146 class OptionValueFileSpec;
147 class OptionValueFileSpecList;
148 class OptionValueFormat;
149 class OptionValueFormatEntity;
150 class OptionValueLanguage;
151 class OptionValuePathMappings;
152 class OptionValueProperties;
153 class OptionValueRegex;
154 class OptionValueSInt64;
155 class OptionValueString;
156 class OptionValueUInt64;
157 class OptionValueUUID;
158 class Options;
159 class PathMappingList;
160 class PersistentExpressionState;
161 class Platform;
162 class Process;
163 class ProcessAttachInfo;
164 class ProcessLaunchInfo;
165 class ProcessInfo;
166 class ProcessInstanceInfo;
167 class ProcessInstanceInfoMatch;
168 class ProcessLaunchInfo;
169 class ProcessModID;
170 class Property;
171 class Queue;
172 class QueueImpl;
173 class QueueItem;
174 class REPL;
175 class RecognizedStackFrame;
176 class RegisterCheckpoint;
177 class RegisterContext;
178 class RegisterTypeBuilder;
179 class RegisterValue;
180 class RegularExpression;
181 class RichManglingContext;
182 class Scalar;
183 class ScriptInterpreter;
184 class ScriptInterpreterLocker;
185 class ScriptedMetadata;
186 class ScriptedPlatformInterface;
187 class ScriptedProcessInterface;
188 class ScriptedThreadInterface;
189 class ScriptedSyntheticChildren;
190 class SearchFilter;
191 class Section;
192 class SectionList;
193 class SectionLoadHistory;
194 class SectionLoadList;
195 class Settings;
196 class SourceManager;
197 class SourceManagerImpl;
198 class StackFrame;
199 class StackFrameList;
200 class StackFrameRecognizer;
201 class StackFrameRecognizerManager;
202 class StackID;
203 class Status;
204 class StopInfo;
205 class Stoppoint;
206 class StoppointCallbackContext;
207 class Stream;
208 class StreamFile;
209 class StreamString;
210 class StringList;
211 class StringTableReader;
212 class StructuredDataImpl;
213 class StructuredDataPlugin;
214 class Symbol;
215 class SymbolContext;
216 class SymbolContextList;
217 class SymbolContextScope;
218 class SymbolContextSpecifier;
219 class SymbolFile;
220 class SymbolFileType;
221 class SymbolVendor;
222 class Symtab;
223 class SyntheticChildren;
224 class SyntheticChildrenFrontEnd;
225 class SystemRuntime;
226 class Target;
227 class TargetList;
228 class TargetProperties;
229 class Thread;
230 class ThreadCollection;
231 class ThreadList;
232 class ThreadPlan;
233 class ThreadPlanBase;
234 class ThreadPlanRunToAddress;
235 class ThreadPlanStepInstruction;
236 class ThreadPlanStepOut;
237 class ThreadPlanStepOverBreakpoint;
238 class ThreadPlanStepRange;
239 class ThreadPlanStepThrough;
240 class ThreadPlanTracer;
241 class ThreadSpec;
242 class ThreadPostMortemTrace;
243 class ThreadedCommunication;
244 class Trace;
245 class TraceCursor;
246 class TraceExporter;
247 class Type;
248 class TypeAndOrName;
249 class TypeCategoryImpl;
250 class TypeCategoryMap;
251 class TypeEnumMemberImpl;
252 class TypeEnumMemberListImpl;
253 class TypeFilterImpl;
254 class TypeFormatImpl;
255 class TypeImpl;
256 class TypeList;
257 class TypeListImpl;
258 class TypeMap;
259 class TypeMemberFunctionImpl;
260 class TypeMemberImpl;
261 class TypeNameSpecifierImpl;
262 class TypeSummaryImpl;
263 class TypeSummaryOptions;
264 class TypeSystem;
265 class TypeSystemClang;
266 class UUID;
267 class UnixSignals;
268 class Unwind;
269 class UnwindAssembly;
270 class UnwindPlan;
271 class UnwindTable;
272 class UserExpression;
273 class UtilityFunction;
274 class VMRange;
275 class Value;
276 class ValueList;
277 class ValueObject;
278 class ValueObjectChild;
279 class ValueObjectConstResult;
280 class ValueObjectConstResultChild;
281 class ValueObjectConstResultImpl;
282 class ValueObjectList;
283 class ValueObjectPrinter;
284 class Variable;
285 class VariableList;
286 class Watchpoint;
287 class WatchpointList;
288 class WatchpointOptions;
289 struct CompilerContext;
290 struct LineEntry;
291 struct PropertyDefinition;
292 struct ScriptSummaryFormat;
293 struct StringSummaryFormat;
294 template <unsigned N> class StreamBuffer;
295 
296 } // namespace lldb_private
297 
298 // lldb forward declarations
299 namespace lldb {
300 
301 typedef std::shared_ptr<lldb_private::ABI> ABISP;
302 typedef std::shared_ptr<lldb_private::Baton> BatonSP;
303 typedef std::shared_ptr<lldb_private::Block> BlockSP;
304 typedef std::shared_ptr<lldb_private::Breakpoint> BreakpointSP;
305 typedef std::weak_ptr<lldb_private::Breakpoint> BreakpointWP;
306 typedef std::shared_ptr<lldb_private::BreakpointSite> BreakpointSiteSP;
307 typedef std::shared_ptr<lldb_private::BreakpointLocation> BreakpointLocationSP;
308 typedef std::weak_ptr<lldb_private::BreakpointLocation> BreakpointLocationWP;
309 typedef std::shared_ptr<lldb_private::BreakpointPrecondition>
310     BreakpointPreconditionSP;
311 typedef std::shared_ptr<lldb_private::BreakpointResolver> BreakpointResolverSP;
312 typedef std::shared_ptr<lldb_private::Broadcaster> BroadcasterSP;
313 typedef std::shared_ptr<lldb_private::BroadcasterManager> BroadcasterManagerSP;
314 typedef std::weak_ptr<lldb_private::BroadcasterManager> BroadcasterManagerWP;
315 typedef std::shared_ptr<lldb_private::UserExpression> UserExpressionSP;
316 typedef std::shared_ptr<lldb_private::CommandObject> CommandObjectSP;
317 typedef std::shared_ptr<lldb_private::Connection> ConnectionSP;
318 typedef std::shared_ptr<lldb_private::CompileUnit> CompUnitSP;
319 typedef std::shared_ptr<lldb_private::DataBuffer> DataBufferSP;
320 typedef std::shared_ptr<lldb_private::WritableDataBuffer> WritableDataBufferSP;
321 typedef std::shared_ptr<lldb_private::DataExtractor> DataExtractorSP;
322 typedef std::shared_ptr<lldb_private::Debugger> DebuggerSP;
323 typedef std::weak_ptr<lldb_private::Debugger> DebuggerWP;
324 typedef std::shared_ptr<lldb_private::Disassembler> DisassemblerSP;
325 typedef std::unique_ptr<lldb_private::DynamicCheckerFunctions>
326     DynamicCheckerFunctionsUP;
327 typedef std::unique_ptr<lldb_private::DynamicLoader> DynamicLoaderUP;
328 typedef std::shared_ptr<lldb_private::Event> EventSP;
329 typedef std::shared_ptr<lldb_private::EventData> EventDataSP;
330 typedef std::shared_ptr<lldb_private::EventDataStructuredData>
331     EventDataStructuredDataSP;
332 typedef std::shared_ptr<lldb_private::ExecutionContextRef>
333     ExecutionContextRefSP;
334 typedef std::shared_ptr<lldb_private::ExpressionVariable> ExpressionVariableSP;
335 typedef std::unique_ptr<lldb_private::File> FileUP;
336 typedef std::shared_ptr<lldb_private::File> FileSP;
337 typedef std::shared_ptr<lldb_private::Function> FunctionSP;
338 typedef std::shared_ptr<lldb_private::FuncUnwinders> FuncUnwindersSP;
339 typedef std::shared_ptr<lldb_private::InlineFunctionInfo> InlineFunctionInfoSP;
340 typedef std::shared_ptr<lldb_private::Instruction> InstructionSP;
341 typedef std::shared_ptr<lldb_private::InstrumentationRuntime>
342     InstrumentationRuntimeSP;
343 typedef std::shared_ptr<lldb_private::IOHandler> IOHandlerSP;
344 typedef std::shared_ptr<lldb_private::IOObject> IOObjectSP;
345 typedef std::shared_ptr<lldb_private::IRExecutionUnit> IRExecutionUnitSP;
346 typedef std::shared_ptr<lldb_private::JITLoader> JITLoaderSP;
347 typedef std::unique_ptr<lldb_private::JITLoaderList> JITLoaderListUP;
348 typedef std::shared_ptr<lldb_private::LanguageRuntime> LanguageRuntimeSP;
349 typedef std::unique_ptr<lldb_private::SystemRuntime> SystemRuntimeUP;
350 typedef std::shared_ptr<lldb_private::Listener> ListenerSP;
351 typedef std::weak_ptr<lldb_private::Listener> ListenerWP;
352 typedef std::shared_ptr<lldb_private::MemoryHistory> MemoryHistorySP;
353 typedef std::unique_ptr<lldb_private::MemoryRegionInfo> MemoryRegionInfoUP;
354 typedef std::shared_ptr<lldb_private::MemoryRegionInfo> MemoryRegionInfoSP;
355 typedef std::shared_ptr<lldb_private::Module> ModuleSP;
356 typedef std::weak_ptr<lldb_private::Module> ModuleWP;
357 typedef std::shared_ptr<lldb_private::ObjectFile> ObjectFileSP;
358 typedef std::shared_ptr<lldb_private::ObjectContainer> ObjectContainerSP;
359 typedef std::shared_ptr<lldb_private::ObjectFileJITDelegate>
360     ObjectFileJITDelegateSP;
361 typedef std::weak_ptr<lldb_private::ObjectFileJITDelegate>
362     ObjectFileJITDelegateWP;
363 typedef std::unique_ptr<lldb_private::OperatingSystem> OperatingSystemUP;
364 typedef std::shared_ptr<lldb_private::OptionValue> OptionValueSP;
365 typedef std::weak_ptr<lldb_private::OptionValue> OptionValueWP;
366 typedef std::shared_ptr<lldb_private::OptionValueProperties>
367     OptionValuePropertiesSP;
368 typedef std::shared_ptr<lldb_private::Platform> PlatformSP;
369 typedef std::shared_ptr<lldb_private::Process> ProcessSP;
370 typedef std::shared_ptr<lldb_private::ProcessAttachInfo> ProcessAttachInfoSP;
371 typedef std::shared_ptr<lldb_private::ProcessLaunchInfo> ProcessLaunchInfoSP;
372 typedef std::weak_ptr<lldb_private::Process> ProcessWP;
373 typedef std::shared_ptr<lldb_private::RegisterCheckpoint> RegisterCheckpointSP;
374 typedef std::shared_ptr<lldb_private::RegisterContext> RegisterContextSP;
375 typedef std::shared_ptr<lldb_private::RegisterTypeBuilder>
376     RegisterTypeBuilderSP;
377 typedef std::shared_ptr<lldb_private::RegularExpression> RegularExpressionSP;
378 typedef std::shared_ptr<lldb_private::Queue> QueueSP;
379 typedef std::weak_ptr<lldb_private::Queue> QueueWP;
380 typedef std::shared_ptr<lldb_private::QueueItem> QueueItemSP;
381 typedef std::shared_ptr<lldb_private::REPL> REPLSP;
382 typedef std::shared_ptr<lldb_private::RecognizedStackFrame>
383     RecognizedStackFrameSP;
384 typedef std::shared_ptr<lldb_private::ScriptSummaryFormat>
385     ScriptSummaryFormatSP;
386 typedef std::shared_ptr<lldb_private::ScriptInterpreter> ScriptInterpreterSP;
387 typedef std::shared_ptr<lldb_private::ScriptedMetadata> ScriptedMetadataSP;
388 typedef std::unique_ptr<lldb_private::ScriptedPlatformInterface>
389     ScriptedPlatformInterfaceUP;
390 typedef std::unique_ptr<lldb_private::ScriptedProcessInterface>
391     ScriptedProcessInterfaceUP;
392 typedef std::shared_ptr<lldb_private::ScriptedThreadInterface>
393     ScriptedThreadInterfaceSP;
394 typedef std::shared_ptr<lldb_private::Section> SectionSP;
395 typedef std::unique_ptr<lldb_private::SectionList> SectionListUP;
396 typedef std::weak_ptr<lldb_private::Section> SectionWP;
397 typedef std::shared_ptr<lldb_private::SectionLoadList> SectionLoadListSP;
398 typedef std::shared_ptr<lldb_private::SearchFilter> SearchFilterSP;
399 typedef std::unique_ptr<lldb_private::SourceManager> SourceManagerUP;
400 typedef std::shared_ptr<lldb_private::StackFrame> StackFrameSP;
401 typedef std::weak_ptr<lldb_private::StackFrame> StackFrameWP;
402 typedef std::shared_ptr<lldb_private::StackFrameList> StackFrameListSP;
403 typedef std::shared_ptr<lldb_private::StackFrameRecognizer>
404     StackFrameRecognizerSP;
405 typedef std::unique_ptr<lldb_private::StackFrameRecognizerManager>
406     StackFrameRecognizerManagerUP;
407 typedef std::shared_ptr<lldb_private::StopInfo> StopInfoSP;
408 typedef std::shared_ptr<lldb_private::Stream> StreamSP;
409 typedef std::shared_ptr<lldb_private::StreamFile> StreamFileSP;
410 typedef std::shared_ptr<lldb_private::StringSummaryFormat>
411     StringTypeSummaryImplSP;
412 typedef std::unique_ptr<lldb_private::StructuredDataImpl> StructuredDataImplUP;
413 typedef std::shared_ptr<lldb_private::StructuredDataPlugin>
414     StructuredDataPluginSP;
415 typedef std::weak_ptr<lldb_private::StructuredDataPlugin>
416     StructuredDataPluginWP;
417 typedef std::shared_ptr<lldb_private::SymbolFileType> SymbolFileTypeSP;
418 typedef std::shared_ptr<lldb_private::SymbolContextSpecifier>
419     SymbolContextSpecifierSP;
420 typedef std::unique_ptr<lldb_private::SymbolVendor> SymbolVendorUP;
421 typedef std::shared_ptr<lldb_private::SyntheticChildren> SyntheticChildrenSP;
422 typedef std::shared_ptr<lldb_private::SyntheticChildrenFrontEnd>
423     SyntheticChildrenFrontEndSP;
424 typedef std::shared_ptr<lldb_private::Target> TargetSP;
425 typedef std::weak_ptr<lldb_private::Target> TargetWP;
426 typedef std::shared_ptr<lldb_private::Thread> ThreadSP;
427 typedef std::weak_ptr<lldb_private::Thread> ThreadWP;
428 typedef std::shared_ptr<lldb_private::ThreadCollection> ThreadCollectionSP;
429 typedef std::shared_ptr<lldb_private::ThreadPlan> ThreadPlanSP;
430 typedef std::shared_ptr<lldb_private::ThreadPostMortemTrace>
431     ThreadPostMortemTraceSP;
432 typedef std::weak_ptr<lldb_private::ThreadPlan> ThreadPlanWP;
433 typedef std::shared_ptr<lldb_private::ThreadPlanTracer> ThreadPlanTracerSP;
434 typedef std::shared_ptr<lldb_private::Trace> TraceSP;
435 typedef std::unique_ptr<lldb_private::TraceExporter> TraceExporterUP;
436 typedef std::shared_ptr<lldb_private::TraceCursor> TraceCursorSP;
437 typedef std::shared_ptr<lldb_private::Type> TypeSP;
438 typedef std::weak_ptr<lldb_private::Type> TypeWP;
439 typedef std::shared_ptr<lldb_private::TypeCategoryImpl> TypeCategoryImplSP;
440 typedef std::shared_ptr<lldb_private::TypeImpl> TypeImplSP;
441 typedef std::shared_ptr<lldb_private::TypeMemberFunctionImpl>
442     TypeMemberFunctionImplSP;
443 typedef std::shared_ptr<lldb_private::TypeEnumMemberImpl> TypeEnumMemberImplSP;
444 typedef std::shared_ptr<lldb_private::TypeFilterImpl> TypeFilterImplSP;
445 typedef std::shared_ptr<lldb_private::TypeSystem> TypeSystemSP;
446 typedef std::shared_ptr<lldb_private::TypeSystemClang> TypeSystemClangSP;
447 typedef std::weak_ptr<lldb_private::TypeSystem> TypeSystemWP;
448 typedef std::shared_ptr<lldb_private::TypeFormatImpl> TypeFormatImplSP;
449 typedef std::shared_ptr<lldb_private::TypeNameSpecifierImpl>
450     TypeNameSpecifierImplSP;
451 typedef std::shared_ptr<lldb_private::TypeSummaryImpl> TypeSummaryImplSP;
452 typedef std::shared_ptr<lldb_private::TypeSummaryOptions> TypeSummaryOptionsSP;
453 typedef std::shared_ptr<lldb_private::ScriptedSyntheticChildren>
454     ScriptedSyntheticChildrenSP;
455 typedef std::shared_ptr<lldb_private::UnixSignals> UnixSignalsSP;
456 typedef std::weak_ptr<lldb_private::UnixSignals> UnixSignalsWP;
457 typedef std::shared_ptr<lldb_private::UnwindAssembly> UnwindAssemblySP;
458 typedef std::shared_ptr<lldb_private::UnwindPlan> UnwindPlanSP;
459 typedef std::shared_ptr<lldb_private::ValueObject> ValueObjectSP;
460 typedef std::shared_ptr<lldb_private::Value> ValueSP;
461 typedef std::shared_ptr<lldb_private::Variable> VariableSP;
462 typedef std::shared_ptr<lldb_private::VariableList> VariableListSP;
463 typedef std::shared_ptr<lldb_private::ValueObjectList> ValueObjectListSP;
464 typedef std::shared_ptr<lldb_private::Watchpoint> WatchpointSP;
465 
466 } // namespace lldb
467 
468 #endif // #if defined(__cplusplus)
469 #endif // LLDB_LLDB_FORWARD_H
470