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