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