1 //===-- lldb-forward.h ------------------------------------------*- C++ -*-===//
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
7 //===----------------------------------------------------------------------===//
9 #ifndef LLDB_lldb_forward_h_
10 #define LLDB_lldb_forward_h_
12 #if defined(__cplusplus)
14 #include "lldb/Utility/SharingPtr.h"
16 // lldb forward declarations
17 namespace lldb_private {
22 class AddressResolver;
26 class ASTResultSynthesizer;
27 class ASTStructExtractor;
32 class BreakpointIDList;
34 class BreakpointLocation;
35 class BreakpointLocationCollection;
36 class BreakpointLocationList;
38 class BreakpointOptionGroup;
39 class BreakpointOptions;
40 class BreakpointPrecondition;
41 class BreakpointResolver;
43 class BreakpointSiteList;
44 class BroadcastEventSpec;
46 class BroadcasterManager;
48 class ClangASTContext;
49 class ClangASTImporter;
50 class ClangASTMetadata;
52 class ClangExpressionDeclMap;
53 class ClangExpressionParser;
54 class ClangExpressionVariable;
55 class ClangModulesDeclVendor;
56 class ClangPersistentVariables;
57 class CommandInterpreter;
58 class CommandInterpreterRunOptions;
60 class CommandObjectMultiword;
61 class CommandReturnObject;
63 class CompactUnwindInfo;
64 struct CompilerContext;
66 class CompilerDeclContext;
70 class ConnectionFileDescriptor;
72 class CXXSyntheticChildren;
73 class DWARFCallFrameInfo;
74 class DWARFDataExtractor;
75 class DWARFExpression;
81 class DiagnosticManager;
83 class DumpValueObjectOptions;
84 class DynamicCheckerFunctions;
87 class EmulateInstruction;
89 class EvaluateExpressionOptions;
92 class EventDataStructuredData;
93 class ExecutionContext;
94 class ExecutionContextRef;
95 class ExecutionContextScope;
97 class ExpressionVariable;
98 class ExpressionVariableList;
99 class ExpressionTypeSystemHelper;
104 class TypeCategoryImpl;
106 class FormattersMatchCandidate;
110 class InlineFunctionInfo;
112 class InstructionList;
113 class InstrumentationRuntime;
116 class IRExecutionUnit;
120 class LanguageCategory;
121 class LanguageRuntime;
128 class MemoryRegionInfo;
129 class MemoryRegionInfos;
133 class ModuleSpecList;
134 struct NameSearchContext;
135 class ObjectContainer;
137 class OptionGroupOptions;
138 class OptionGroupPlatform;
140 class ObjectFileJITDelegate;
141 class OperatingSystem;
144 class OptionValueArch;
145 class OptionValueArgs;
146 class OptionValueArray;
147 class OptionValueBoolean;
148 class OptionValueChar;
149 class OptionValueDictionary;
150 class OptionValueEnumeration;
151 class OptionValueFileSpec;
152 class OptionValueFileSpecList;
153 class OptionValueFormat;
154 class OptionValueLanguage;
155 class OptionValueFormatEntity;
156 class OptionValuePathMappings;
157 class OptionValueProperties;
158 class OptionValueRegex;
159 class OptionValueSInt64;
160 class OptionValueString;
161 class OptionValueUInt64;
162 class OptionValueUUID;
163 class PathMappingList;
164 class FunctionCaller;
165 class PersistentExpressionState;
168 class ProcessAttachInfo;
171 class ProcessInstanceInfo;
172 class ProcessInstanceInfoList;
173 class ProcessInstanceInfoMatch;
174 class ProcessLaunchInfo;
176 struct PropertyDefinition;
177 class RecognizedStackFrame;
178 class RegisterCheckpoint;
179 class RegisterContext;
181 class RegularExpression;
183 class RichManglingContext;
185 class ScriptInterpreter;
186 class ScriptInterpreterLocker;
187 struct ScriptSummaryFormat;
191 class SectionLoadHistory;
192 class SectionLoadList;
195 class SourceManagerImpl;
197 class StackFrameList;
198 class StackFrameRecognizer;
199 class StackFrameRecognizerManager;
203 class StoppointCallbackContext;
204 class StoppointLocation;
206 template <unsigned N> class StreamBuffer;
210 struct StringSummaryFormat;
211 class StructuredDataImpl;
212 class StructuredDataPlugin;
214 class TypeSummaryImpl;
215 class TypeSummaryOptions;
218 class SymbolContextList;
219 class SymbolContextScope;
220 class SymbolContextSpecifier;
222 class SymbolFileType;
225 class SyntheticChildren;
226 class SyntheticChildrenFrontEnd;
227 class TypeFilterImpl;
229 class ScriptedSyntheticChildren;
235 class TargetProperties;
237 class ThreadCollection;
240 class ThreadPlanBase;
241 class ThreadPlanRunToAddress;
242 class ThreadPlanStepInstruction;
243 class ThreadPlanStepOut;
244 class ThreadPlanStepOverBreakpoint;
245 class ThreadPlanStepRange;
246 class ThreadPlanStepThrough;
247 class ThreadPlanTracer;
252 class TypeCategoryMap;
257 class TypeMemberImpl;
258 class TypeMemberFunctionImpl;
259 class TypeEnumMemberImpl;
260 class TypeEnumMemberListImpl;
261 class TypeFormatImpl;
262 class TypeNameSpecifierImpl;
266 class UnwindAssembly;
269 class UserExpression;
270 class UtilityFunction;
275 class ValueObjectChild;
276 class ValueObjectConstResult;
277 class ValueObjectConstResultChild;
278 class ValueObjectConstResultImpl;
279 class ValueObjectList;
280 class ValueObjectPrinter;
284 class WatchpointList;
285 class WatchpointOptions;
288 } // namespace lldb_private
290 // lldb forward declarations
293 typedef std::shared_ptr<lldb_private::ABI> ABISP;
294 typedef std::shared_ptr<lldb_private::Baton> BatonSP;
295 typedef std::shared_ptr<lldb_private::Block> BlockSP;
296 typedef std::shared_ptr<lldb_private::Breakpoint> BreakpointSP;
297 typedef std::weak_ptr<lldb_private::Breakpoint> BreakpointWP;
298 typedef std::shared_ptr<lldb_private::BreakpointSite> BreakpointSiteSP;
299 typedef std::weak_ptr<lldb_private::BreakpointSite> BreakpointSiteWP;
300 typedef std::shared_ptr<lldb_private::BreakpointLocation> BreakpointLocationSP;
301 typedef std::weak_ptr<lldb_private::BreakpointLocation> BreakpointLocationWP;
302 typedef std::shared_ptr<lldb_private::BreakpointPrecondition> BreakpointPreconditionSP;
303 typedef std::shared_ptr<lldb_private::BreakpointResolver> BreakpointResolverSP;
304 typedef std::shared_ptr<lldb_private::Broadcaster> BroadcasterSP;
305 typedef std::shared_ptr<lldb_private::BroadcasterManager> BroadcasterManagerSP;
306 typedef std::weak_ptr<lldb_private::BroadcasterManager> BroadcasterManagerWP;
307 typedef std::unique_ptr<lldb_private::ClangASTContext> ClangASTContextUP;
308 typedef std::shared_ptr<lldb_private::ClangASTImporter> ClangASTImporterSP;
309 typedef std::unique_ptr<lldb_private::ClangModulesDeclVendor>
310 ClangModulesDeclVendorUP;
311 typedef std::unique_ptr<lldb_private::ClangPersistentVariables>
312 ClangPersistentVariablesUP;
313 typedef std::shared_ptr<lldb_private::UserExpression> UserExpressionSP;
314 typedef std::shared_ptr<lldb_private::CommandObject> CommandObjectSP;
315 typedef std::shared_ptr<lldb_private::Communication> CommunicationSP;
316 typedef std::shared_ptr<lldb_private::Connection> ConnectionSP;
317 typedef std::shared_ptr<lldb_private::CompileUnit> CompUnitSP;
318 typedef std::shared_ptr<lldb_private::DataBuffer> DataBufferSP;
319 typedef std::shared_ptr<lldb_private::DataExtractor> DataExtractorSP;
320 typedef std::shared_ptr<lldb_private::Debugger> DebuggerSP;
321 typedef std::weak_ptr<lldb_private::Debugger> DebuggerWP;
322 typedef std::shared_ptr<lldb_private::Disassembler> DisassemblerSP;
323 typedef std::unique_ptr<lldb_private::DynamicCheckerFunctions>
324 DynamicCheckerFunctionsUP;
325 typedef std::shared_ptr<lldb_private::DynamicLoader> DynamicLoaderSP;
326 typedef std::unique_ptr<lldb_private::DynamicLoader> DynamicLoaderUP;
327 typedef std::shared_ptr<lldb_private::Event> EventSP;
328 typedef std::shared_ptr<lldb_private::EventData> EventDataSP;
329 typedef std::shared_ptr<lldb_private::EventDataStructuredData>
330 EventDataStructuredDataSP;
331 typedef std::shared_ptr<lldb_private::ExecutionContextRef>
332 ExecutionContextRefSP;
333 typedef std::shared_ptr<lldb_private::ExpressionVariable> ExpressionVariableSP;
334 typedef std::unique_ptr<lldb_private::File> FileUP;
335 typedef std::shared_ptr<lldb_private::File> FileSP;
336 typedef std::shared_ptr<lldb_private::Function> FunctionSP;
337 typedef std::shared_ptr<lldb_private::FunctionCaller> FunctionCallerSP;
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::shared_ptr<lldb_private::SystemRuntime> SystemRuntimeSP;
350 typedef std::unique_ptr<lldb_private::SystemRuntime> SystemRuntimeUP;
351 typedef std::shared_ptr<lldb_private::LineTable> LineTableSP;
352 typedef std::shared_ptr<lldb_private::Listener> ListenerSP;
353 typedef std::weak_ptr<lldb_private::Listener> ListenerWP;
354 typedef std::shared_ptr<lldb_private::MemoryHistory> MemoryHistorySP;
355 typedef std::unique_ptr<lldb_private::MemoryRegionInfo> MemoryRegionInfoUP;
356 typedef std::shared_ptr<lldb_private::Module> ModuleSP;
357 typedef std::weak_ptr<lldb_private::Module> ModuleWP;
358 typedef std::shared_ptr<lldb_private::ObjectFile> ObjectFileSP;
359 typedef std::weak_ptr<lldb_private::ObjectFile> ObjectFileWP;
360 typedef std::shared_ptr<lldb_private::ObjectFileJITDelegate>
361 ObjectFileJITDelegateSP;
362 typedef std::weak_ptr<lldb_private::ObjectFileJITDelegate>
363 ObjectFileJITDelegateWP;
364 typedef std::unique_ptr<lldb_private::OperatingSystem> OperatingSystemUP;
365 typedef std::shared_ptr<lldb_private::OptionValue> OptionValueSP;
366 typedef std::weak_ptr<lldb_private::OptionValue> OptionValueWP;
367 typedef std::shared_ptr<lldb_private::OptionValueArch> OptionValueArchSP;
368 typedef std::shared_ptr<lldb_private::OptionValueArgs> OptionValueArgsSP;
369 typedef std::shared_ptr<lldb_private::OptionValueArray> OptionValueArraySP;
370 typedef std::shared_ptr<lldb_private::OptionValueBoolean> OptionValueBooleanSP;
371 typedef std::shared_ptr<lldb_private::OptionValueDictionary>
372 OptionValueDictionarySP;
373 typedef std::shared_ptr<lldb_private::OptionValueFileSpec>
374 OptionValueFileSpecSP;
375 typedef std::shared_ptr<lldb_private::OptionValueFileSpecList>
376 OptionValueFileSpecListSP;
377 typedef std::shared_ptr<lldb_private::OptionValueFormat> OptionValueFormatSP;
378 typedef std::shared_ptr<lldb_private::OptionValuePathMappings>
379 OptionValuePathMappingsSP;
380 typedef std::shared_ptr<lldb_private::OptionValueProperties>
381 OptionValuePropertiesSP;
382 typedef std::shared_ptr<lldb_private::OptionValueRegex> OptionValueRegexSP;
383 typedef std::shared_ptr<lldb_private::OptionValueSInt64> OptionValueSInt64SP;
384 typedef std::shared_ptr<lldb_private::OptionValueString> OptionValueStringSP;
385 typedef std::shared_ptr<lldb_private::OptionValueUInt64> OptionValueUInt64SP;
386 typedef std::shared_ptr<lldb_private::OptionValueUUID> OptionValueUUIDSP;
387 typedef std::shared_ptr<lldb_private::Platform> PlatformSP;
388 typedef std::shared_ptr<lldb_private::Process> ProcessSP;
389 typedef std::shared_ptr<lldb_private::ProcessAttachInfo> ProcessAttachInfoSP;
390 typedef std::shared_ptr<lldb_private::ProcessLaunchInfo> ProcessLaunchInfoSP;
391 typedef std::weak_ptr<lldb_private::Process> ProcessWP;
392 typedef std::shared_ptr<lldb_private::Property> PropertySP;
393 typedef std::shared_ptr<lldb_private::RegisterCheckpoint> RegisterCheckpointSP;
394 typedef std::shared_ptr<lldb_private::RegisterContext> RegisterContextSP;
395 typedef std::shared_ptr<lldb_private::RegularExpression> RegularExpressionSP;
396 typedef std::shared_ptr<lldb_private::Queue> QueueSP;
397 typedef std::weak_ptr<lldb_private::Queue> QueueWP;
398 typedef std::shared_ptr<lldb_private::QueueItem> QueueItemSP;
399 typedef std::shared_ptr<lldb_private::REPL> REPLSP;
400 typedef std::shared_ptr<lldb_private::RecognizedStackFrame>
401 RecognizedStackFrameSP;
402 typedef std::shared_ptr<lldb_private::ScriptSummaryFormat>
403 ScriptSummaryFormatSP;
404 typedef std::shared_ptr<lldb_private::ScriptInterpreter> ScriptInterpreterSP;
405 typedef std::unique_ptr<lldb_private::ScriptInterpreter> ScriptInterpreterUP;
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::shared_ptr<lldb_private::Settings> SettingsSP;
412 typedef std::unique_ptr<lldb_private::SourceManager> SourceManagerUP;
413 typedef std::shared_ptr<lldb_private::StackFrame> StackFrameSP;
414 typedef std::unique_ptr<lldb_private::StackFrame> StackFrameUP;
415 typedef std::weak_ptr<lldb_private::StackFrame> StackFrameWP;
416 typedef std::shared_ptr<lldb_private::StackFrameList> StackFrameListSP;
417 typedef std::shared_ptr<lldb_private::StackFrameRecognizer>
418 StackFrameRecognizerSP;
419 typedef std::shared_ptr<lldb_private::StopInfo> StopInfoSP;
420 typedef std::shared_ptr<lldb_private::StoppointLocation> StoppointLocationSP;
421 typedef std::shared_ptr<lldb_private::Stream> StreamSP;
422 typedef std::weak_ptr<lldb_private::Stream> StreamWP;
423 typedef std::shared_ptr<lldb_private::StreamFile> StreamFileSP;
424 typedef std::shared_ptr<lldb_private::StringSummaryFormat>
425 StringTypeSummaryImplSP;
426 typedef std::unique_ptr<lldb_private::StructuredDataImpl> StructuredDataImplUP;
427 typedef std::shared_ptr<lldb_private::StructuredDataPlugin>
428 StructuredDataPluginSP;
429 typedef std::weak_ptr<lldb_private::StructuredDataPlugin>
430 StructuredDataPluginWP;
431 typedef std::shared_ptr<lldb_private::SymbolFile> SymbolFileSP;
432 typedef std::shared_ptr<lldb_private::SymbolFileType> SymbolFileTypeSP;
433 typedef std::weak_ptr<lldb_private::SymbolFileType> SymbolFileTypeWP;
434 typedef std::shared_ptr<lldb_private::SymbolContextSpecifier>
435 SymbolContextSpecifierSP;
436 typedef std::unique_ptr<lldb_private::SymbolVendor> SymbolVendorUP;
437 typedef std::shared_ptr<lldb_private::SyntheticChildren> SyntheticChildrenSP;
438 typedef std::shared_ptr<lldb_private::SyntheticChildrenFrontEnd>
439 SyntheticChildrenFrontEndSP;
440 typedef std::shared_ptr<lldb_private::Target> TargetSP;
441 typedef std::weak_ptr<lldb_private::Target> TargetWP;
442 typedef std::shared_ptr<lldb_private::TargetProperties> TargetPropertiesSP;
443 typedef std::shared_ptr<lldb_private::Thread> ThreadSP;
444 typedef std::weak_ptr<lldb_private::Thread> ThreadWP;
445 typedef std::shared_ptr<lldb_private::ThreadCollection> ThreadCollectionSP;
446 typedef std::shared_ptr<lldb_private::ThreadPlan> ThreadPlanSP;
447 typedef std::shared_ptr<lldb_private::ThreadPlanTracer> ThreadPlanTracerSP;
448 typedef std::shared_ptr<lldb_private::TraceOptions> TraceOptionsSP;
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::TypeFormatImpl> TypeFormatImplSP;
459 typedef std::shared_ptr<lldb_private::TypeNameSpecifierImpl>
460 TypeNameSpecifierImplSP;
461 typedef std::shared_ptr<lldb_private::TypeSummaryImpl> TypeSummaryImplSP;
462 typedef std::shared_ptr<lldb_private::TypeSummaryOptions> TypeSummaryOptionsSP;
463 typedef std::shared_ptr<lldb_private::ScriptedSyntheticChildren>
464 ScriptedSyntheticChildrenSP;
465 typedef std::shared_ptr<lldb_private::UnixSignals> UnixSignalsSP;
466 typedef std::weak_ptr<lldb_private::UnixSignals> UnixSignalsWP;
467 typedef std::shared_ptr<lldb_private::UnwindAssembly> UnwindAssemblySP;
468 typedef std::shared_ptr<lldb_private::UnwindPlan> UnwindPlanSP;
469 typedef std::shared_ptr<lldb_private::UtilityFunction> UtilityFunctionSP;
470 typedef lldb_private::SharingPtr<lldb_private::ValueObject> ValueObjectSP;
471 typedef std::shared_ptr<lldb_private::Value> ValueSP;
472 typedef std::shared_ptr<lldb_private::ValueList> ValueListSP;
473 typedef std::shared_ptr<lldb_private::Variable> VariableSP;
474 typedef std::shared_ptr<lldb_private::VariableList> VariableListSP;
475 typedef std::shared_ptr<lldb_private::ValueObjectList> ValueObjectListSP;
476 typedef std::shared_ptr<lldb_private::Watchpoint> WatchpointSP;
480 // llvm forward declarations
483 struct ItaniumPartialDemangler;
488 #endif // #if defined(__cplusplus)
489 #endif // LLDB_lldb_forward_h_