1 //===-- lldb-forward.h ------------------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #ifndef LLDB_lldb_forward_h_
11 #define LLDB_lldb_forward_h_
13 #if defined(__cplusplus)
15 #include "lldb/Utility/SharingPtr.h"
17 //----------------------------------------------------------------------
18 // lldb forward declarations
19 //----------------------------------------------------------------------
20 namespace lldb_private {
26 class AddressResolver;
30 class ASTResultSynthesizer;
31 class ASTStructExtractor;
36 class BreakpointIDList;
38 class BreakpointLocation;
39 class BreakpointLocationCollection;
40 class BreakpointLocationList;
41 class BreakpointOptions;
42 class BreakpointResolver;
44 class BreakpointSiteList;
45 class BroadcastEventSpec;
47 class BroadcasterManager;
48 class CPPLanguageRuntime;
49 class ClangASTContext;
50 class ClangASTImporter;
51 class ClangASTMetadata;
53 class ClangExpressionDeclMap;
54 class ClangExpressionParser;
55 class ClangExpressionVariable;
56 class ClangExpressionVariables;
57 class ClangModulesDeclVendor;
58 class ClangPersistentVariables;
59 class CommandInterpreter;
60 class CommandInterpreterRunOptions;
62 class CommandObjectMultiword;
63 class CommandReturnObject;
65 class CompactUnwindInfo;
66 struct CompilerContext;
68 class CompilerDeclContext;
73 class ConnectionFileDescriptor;
75 class CXXSyntheticChildren;
76 class DWARFCallFrameInfo;
77 class DWARFExpression;
83 class DiagnosticManager;
85 class DumpValueObjectOptions;
86 class DynamicCheckerFunctions;
89 class EmulateInstruction;
91 class EvaluateExpressionOptions;
94 class EventDataStructuredData;
95 class ExecutionContext;
96 class ExecutionContextRef;
97 class ExecutionContextRefLocker;
98 class ExecutionContextScope;
100 class ExpressionVariable;
101 class ExpressionVariableList;
102 class ExpressionTypeSystemHelper;
108 class TypeCategoryImpl;
110 class FormattersMatchCandidate;
114 class InlineFunctionInfo;
116 class InstructionList;
117 class InstrumentationRuntime;
120 class IRExecutionUnit;
124 class LanguageCategory;
125 class LanguageRuntime;
126 class MemoryRegionInfo;
137 class ModuleSpecList;
139 struct NameSearchContext;
140 class ObjCLanguageRuntime;
141 class ObjCRuntimeSyntheticProvider;
142 class ObjectContainer;
144 class OptionGroupOptions;
145 class OptionGroupPlatform;
147 class ObjectFileJITDelegate;
148 class OperatingSystem;
151 class OptionValueArch;
152 class OptionValueArgs;
153 class OptionValueArray;
154 class OptionValueBoolean;
155 class OptionValueChar;
156 class OptionValueDictionary;
157 class OptionValueEnumeration;
158 class OptionValueFileSpec;
159 class OptionValueFileSpecList;
160 class OptionValueFormat;
161 class OptionValueLanguage;
162 class OptionValueFormatEntity;
163 class OptionValuePathMappings;
164 class OptionValueProperties;
165 class OptionValueRegex;
166 class OptionValueSInt64;
167 class OptionValueString;
168 class OptionValueUInt64;
169 class OptionValueUUID;
171 class PathMappingList;
172 class FunctionCaller;
173 class PersistentExpressionState;
176 class ProcessAttachInfo;
179 class ProcessInstanceInfo;
180 class ProcessInstanceInfoList;
181 class ProcessInstanceInfoMatch;
182 class ProcessLaunchInfo;
184 struct PropertyDefinition;
185 class RegisterCheckpoint;
186 class RegisterContext;
187 class RegisterLocation;
188 class RegisterLocationList;
190 class RegularExpression;
193 class ScriptInterpreter;
194 class ScriptInterpreterLocker;
195 struct ScriptSummaryFormat;
200 class SectionLoadHistory;
201 class SectionLoadList;
204 class SourceManagerImpl;
206 class StackFrameImpl;
207 class StackFrameList;
211 class StoppointCallbackContext;
212 class StoppointLocation;
214 template <unsigned N> class StreamBuffer;
218 struct StringSummaryFormat;
219 class StructuredDataPlugin;
221 class TypeSummaryImpl;
222 class TypeSummaryOptions;
225 class SymbolContextList;
226 class SymbolContextScope;
227 class SymbolContextSpecifier;
229 class SymbolFileType;
232 class SyntheticChildren;
233 class SyntheticChildrenFrontEnd;
234 class TypeFilterImpl;
236 #ifndef LLDB_DISABLE_PYTHON
237 class ScriptedSyntheticChildren;
244 class TargetProperties;
246 class ThreadCollection;
249 class ThreadPlanBase;
250 class ThreadPlanRunToAddress;
251 class ThreadPlanStepInstruction;
252 class ThreadPlanStepOut;
253 class ThreadPlanStepOverBreakpoint;
254 class ThreadPlanStepRange;
255 class ThreadPlanStepThrough;
256 class ThreadPlanTracer;
260 class TypeCategoryMap;
265 class TypeMemberImpl;
266 class TypeMemberFunctionImpl;
267 class TypeEnumMemberImpl;
268 class TypeEnumMemberListImpl;
269 class TypeFormatImpl;
270 class TypeNameSpecifierImpl;
272 class TypeValidatorImpl;
276 class UnwindAssembly;
279 class UserExpression;
280 class UtilityFunction;
285 class ValueObjectChild;
286 class ValueObjectConstResult;
287 class ValueObjectConstResultChild;
288 class ValueObjectConstResultImpl;
289 class ValueObjectList;
290 class ValueObjectPrinter;
294 class WatchpointList;
295 class WatchpointOptions;
298 } // namespace lldb_private
300 //----------------------------------------------------------------------
301 // lldb forward declarations
302 //----------------------------------------------------------------------
305 typedef std::shared_ptr<lldb_private::ABI> ABISP;
306 typedef std::shared_ptr<lldb_private::Baton> BatonSP;
307 typedef std::shared_ptr<lldb_private::Block> BlockSP;
308 typedef std::shared_ptr<lldb_private::Breakpoint> BreakpointSP;
309 typedef std::weak_ptr<lldb_private::Breakpoint> BreakpointWP;
310 typedef std::shared_ptr<lldb_private::BreakpointSite> BreakpointSiteSP;
311 typedef std::weak_ptr<lldb_private::BreakpointSite> BreakpointSiteWP;
312 typedef std::shared_ptr<lldb_private::BreakpointLocation> BreakpointLocationSP;
313 typedef std::weak_ptr<lldb_private::BreakpointLocation> BreakpointLocationWP;
314 typedef std::shared_ptr<lldb_private::BreakpointResolver> BreakpointResolverSP;
315 typedef std::shared_ptr<lldb_private::Broadcaster> BroadcasterSP;
316 typedef std::shared_ptr<lldb_private::BroadcasterManager> BroadcasterManagerSP;
317 typedef std::weak_ptr<lldb_private::BroadcasterManager> BroadcasterManagerWP;
318 typedef std::unique_ptr<lldb_private::ClangASTContext> ClangASTContextUP;
319 typedef std::shared_ptr<lldb_private::ClangASTImporter> ClangASTImporterSP;
320 typedef std::unique_ptr<lldb_private::ClangModulesDeclVendor>
321 ClangModulesDeclVendorUP;
322 typedef std::unique_ptr<lldb_private::ClangPersistentVariables>
323 ClangPersistentVariablesUP;
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::Communication> CommunicationSP;
327 typedef std::shared_ptr<lldb_private::Connection> ConnectionSP;
328 typedef std::shared_ptr<lldb_private::CompileUnit> CompUnitSP;
329 typedef std::shared_ptr<lldb_private::DataBuffer> DataBufferSP;
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::shared_ptr<lldb_private::DynamicLoader> DynamicLoaderSP;
337 typedef std::unique_ptr<lldb_private::DynamicLoader> DynamicLoaderUP;
338 typedef std::shared_ptr<lldb_private::Event> EventSP;
339 typedef std::shared_ptr<lldb_private::EventData> EventDataSP;
340 typedef std::shared_ptr<lldb_private::EventDataStructuredData>
341 EventDataStructuredDataSP;
342 typedef std::shared_ptr<lldb_private::ExecutionContextRef>
343 ExecutionContextRefSP;
344 typedef std::shared_ptr<lldb_private::ExpressionVariable> ExpressionVariableSP;
345 typedef std::shared_ptr<lldb_private::File> FileSP;
346 typedef std::shared_ptr<lldb_private::Function> FunctionSP;
347 typedef std::shared_ptr<lldb_private::FunctionCaller> FunctionCallerSP;
348 typedef std::shared_ptr<lldb_private::FuncUnwinders> FuncUnwindersSP;
349 typedef std::unique_ptr<lldb_private::GoASTContext> GoASTContextUP;
350 typedef std::shared_ptr<lldb_private::InlineFunctionInfo> InlineFunctionInfoSP;
351 typedef std::shared_ptr<lldb_private::Instruction> InstructionSP;
352 typedef std::shared_ptr<lldb_private::InstrumentationRuntime>
353 InstrumentationRuntimeSP;
354 typedef std::shared_ptr<lldb_private::IOHandler> IOHandlerSP;
355 typedef std::shared_ptr<lldb_private::IOObject> IOObjectSP;
356 typedef std::shared_ptr<lldb_private::IRExecutionUnit> IRExecutionUnitSP;
357 typedef std::shared_ptr<lldb_private::JITLoader> JITLoaderSP;
358 typedef std::unique_ptr<lldb_private::JITLoaderList> JITLoaderListUP;
359 typedef std::shared_ptr<lldb_private::LanguageRuntime> LanguageRuntimeSP;
360 typedef std::shared_ptr<lldb_private::SystemRuntime> SystemRuntimeSP;
361 typedef std::unique_ptr<lldb_private::SystemRuntime> SystemRuntimeUP;
362 typedef std::shared_ptr<lldb_private::LineTable> LineTableSP;
363 typedef std::shared_ptr<lldb_private::Listener> ListenerSP;
364 typedef std::weak_ptr<lldb_private::Listener> ListenerWP;
365 typedef std::shared_ptr<lldb_private::LogChannel> LogChannelSP;
366 typedef std::shared_ptr<lldb_private::MemoryHistory> MemoryHistorySP;
367 typedef std::shared_ptr<lldb_private::MemoryRegionInfo> MemoryRegionInfoSP;
368 typedef std::unique_ptr<lldb_private::MemoryRegionInfo> MemoryRegionInfoUP;
369 typedef std::shared_ptr<lldb_private::Module> ModuleSP;
370 typedef std::weak_ptr<lldb_private::Module> ModuleWP;
371 typedef std::shared_ptr<lldb_private::ObjectFile> ObjectFileSP;
372 typedef std::weak_ptr<lldb_private::ObjectFile> ObjectFileWP;
373 typedef std::shared_ptr<lldb_private::ObjectFileJITDelegate>
374 ObjectFileJITDelegateSP;
375 typedef std::weak_ptr<lldb_private::ObjectFileJITDelegate>
376 ObjectFileJITDelegateWP;
377 typedef std::unique_ptr<lldb_private::OperatingSystem> OperatingSystemUP;
378 typedef std::shared_ptr<lldb_private::OptionValue> OptionValueSP;
379 typedef std::weak_ptr<lldb_private::OptionValue> OptionValueWP;
380 typedef std::shared_ptr<lldb_private::OptionValueArch> OptionValueArchSP;
381 typedef std::shared_ptr<lldb_private::OptionValueArgs> OptionValueArgsSP;
382 typedef std::shared_ptr<lldb_private::OptionValueArray> OptionValueArraySP;
383 typedef std::shared_ptr<lldb_private::OptionValueBoolean> OptionValueBooleanSP;
384 typedef std::shared_ptr<lldb_private::OptionValueDictionary>
385 OptionValueDictionarySP;
386 typedef std::shared_ptr<lldb_private::OptionValueFileSpec>
387 OptionValueFileSpecSP;
388 typedef std::shared_ptr<lldb_private::OptionValueFileSpecList>
389 OptionValueFileSpecListSP;
390 typedef std::shared_ptr<lldb_private::OptionValueFormat> OptionValueFormatSP;
391 typedef std::shared_ptr<lldb_private::OptionValuePathMappings>
392 OptionValuePathMappingsSP;
393 typedef std::shared_ptr<lldb_private::OptionValueProperties>
394 OptionValuePropertiesSP;
395 typedef std::shared_ptr<lldb_private::OptionValueRegex> OptionValueRegexSP;
396 typedef std::shared_ptr<lldb_private::OptionValueSInt64> OptionValueSInt64SP;
397 typedef std::shared_ptr<lldb_private::OptionValueString> OptionValueStringSP;
398 typedef std::shared_ptr<lldb_private::OptionValueUInt64> OptionValueUInt64SP;
399 typedef std::shared_ptr<lldb_private::OptionValueUUID> OptionValueUUIDSP;
400 typedef std::shared_ptr<lldb_private::Platform> PlatformSP;
401 typedef std::shared_ptr<lldb_private::Process> ProcessSP;
402 typedef std::shared_ptr<lldb_private::ProcessAttachInfo> ProcessAttachInfoSP;
403 typedef std::shared_ptr<lldb_private::ProcessLaunchInfo> ProcessLaunchInfoSP;
404 typedef std::weak_ptr<lldb_private::Process> ProcessWP;
405 typedef std::shared_ptr<lldb_private::Property> PropertySP;
406 typedef std::shared_ptr<lldb_private::RegisterCheckpoint> RegisterCheckpointSP;
407 typedef std::shared_ptr<lldb_private::RegisterContext> RegisterContextSP;
408 typedef std::shared_ptr<lldb_private::RegularExpression> RegularExpressionSP;
409 typedef std::shared_ptr<lldb_private::Queue> QueueSP;
410 typedef std::weak_ptr<lldb_private::Queue> QueueWP;
411 typedef std::shared_ptr<lldb_private::QueueItem> QueueItemSP;
412 typedef std::shared_ptr<lldb_private::REPL> REPLSP;
413 typedef std::shared_ptr<lldb_private::ScriptSummaryFormat>
414 ScriptSummaryFormatSP;
415 typedef std::shared_ptr<lldb_private::ScriptInterpreter> ScriptInterpreterSP;
416 typedef std::unique_ptr<lldb_private::ScriptInterpreter> ScriptInterpreterUP;
417 typedef std::shared_ptr<lldb_private::Section> SectionSP;
418 typedef std::unique_ptr<lldb_private::SectionList> SectionListUP;
419 typedef std::weak_ptr<lldb_private::Section> SectionWP;
420 typedef std::shared_ptr<lldb_private::SectionLoadList> SectionLoadListSP;
421 typedef std::shared_ptr<lldb_private::SearchFilter> SearchFilterSP;
422 typedef std::shared_ptr<lldb_private::Settings> SettingsSP;
423 typedef std::unique_ptr<lldb_private::SourceManager> SourceManagerUP;
424 typedef std::shared_ptr<lldb_private::StackFrame> StackFrameSP;
425 typedef std::unique_ptr<lldb_private::StackFrame> StackFrameUP;
426 typedef std::weak_ptr<lldb_private::StackFrame> StackFrameWP;
427 typedef std::shared_ptr<lldb_private::StackFrameList> StackFrameListSP;
428 typedef std::shared_ptr<lldb_private::StopInfo> StopInfoSP;
429 typedef std::shared_ptr<lldb_private::StoppointLocation> StoppointLocationSP;
430 typedef std::shared_ptr<lldb_private::Stream> StreamSP;
431 typedef std::weak_ptr<lldb_private::Stream> StreamWP;
432 typedef std::shared_ptr<lldb_private::StreamFile> StreamFileSP;
433 typedef std::shared_ptr<lldb_private::StringSummaryFormat>
434 StringTypeSummaryImplSP;
435 typedef std::shared_ptr<lldb_private::StructuredDataPlugin>
436 StructuredDataPluginSP;
437 typedef std::weak_ptr<lldb_private::StructuredDataPlugin>
438 StructuredDataPluginWP;
439 typedef std::shared_ptr<lldb_private::SymbolFile> SymbolFileSP;
440 typedef std::shared_ptr<lldb_private::SymbolFileType> SymbolFileTypeSP;
441 typedef std::weak_ptr<lldb_private::SymbolFileType> SymbolFileTypeWP;
442 typedef std::shared_ptr<lldb_private::SymbolContextSpecifier>
443 SymbolContextSpecifierSP;
444 typedef std::unique_ptr<lldb_private::SymbolVendor> SymbolVendorUP;
445 typedef std::shared_ptr<lldb_private::SyntheticChildren> SyntheticChildrenSP;
446 typedef std::shared_ptr<lldb_private::SyntheticChildrenFrontEnd>
447 SyntheticChildrenFrontEndSP;
448 typedef std::shared_ptr<lldb_private::Target> TargetSP;
449 typedef std::weak_ptr<lldb_private::Target> TargetWP;
450 typedef std::shared_ptr<lldb_private::TargetProperties> TargetPropertiesSP;
451 typedef std::shared_ptr<lldb_private::Thread> ThreadSP;
452 typedef std::weak_ptr<lldb_private::Thread> ThreadWP;
453 typedef std::shared_ptr<lldb_private::ThreadCollection> ThreadCollectionSP;
454 typedef std::shared_ptr<lldb_private::ThreadPlan> ThreadPlanSP;
455 typedef std::shared_ptr<lldb_private::ThreadPlanTracer> ThreadPlanTracerSP;
456 typedef std::shared_ptr<lldb_private::Type> TypeSP;
457 typedef std::weak_ptr<lldb_private::Type> TypeWP;
458 typedef std::shared_ptr<lldb_private::TypeCategoryImpl> TypeCategoryImplSP;
459 typedef std::shared_ptr<lldb_private::TypeImpl> TypeImplSP;
460 typedef std::shared_ptr<lldb_private::TypeMemberFunctionImpl>
461 TypeMemberFunctionImplSP;
462 typedef std::shared_ptr<lldb_private::TypeEnumMemberImpl> TypeEnumMemberImplSP;
463 typedef std::shared_ptr<lldb_private::TypeFilterImpl> TypeFilterImplSP;
464 typedef std::shared_ptr<lldb_private::TypeSystem> TypeSystemSP;
465 typedef std::shared_ptr<lldb_private::TypeFormatImpl> TypeFormatImplSP;
466 typedef std::shared_ptr<lldb_private::TypeNameSpecifierImpl>
467 TypeNameSpecifierImplSP;
468 typedef std::shared_ptr<lldb_private::TypeSummaryImpl> TypeSummaryImplSP;
469 typedef std::shared_ptr<lldb_private::TypeSummaryOptions> TypeSummaryOptionsSP;
470 typedef std::shared_ptr<lldb_private::TypeValidatorImpl> TypeValidatorImplSP;
471 #ifndef LLDB_DISABLE_PYTHON
472 typedef std::shared_ptr<lldb_private::ScriptedSyntheticChildren>
473 ScriptedSyntheticChildrenSP;
475 typedef std::shared_ptr<lldb_private::UnixSignals> UnixSignalsSP;
476 typedef std::weak_ptr<lldb_private::UnixSignals> UnixSignalsWP;
477 typedef std::shared_ptr<lldb_private::UnwindAssembly> UnwindAssemblySP;
478 typedef std::shared_ptr<lldb_private::UnwindPlan> UnwindPlanSP;
479 typedef std::shared_ptr<lldb_private::UtilityFunction> UtilityFunctionSP;
480 typedef lldb_private::SharingPtr<lldb_private::ValueObject> ValueObjectSP;
481 typedef std::shared_ptr<lldb_private::Value> ValueSP;
482 typedef std::shared_ptr<lldb_private::ValueList> ValueListSP;
483 typedef std::shared_ptr<lldb_private::Variable> VariableSP;
484 typedef std::shared_ptr<lldb_private::VariableList> VariableListSP;
485 typedef std::shared_ptr<lldb_private::ValueObjectList> ValueObjectListSP;
486 typedef std::shared_ptr<lldb_private::Watchpoint> WatchpointSP;
490 #endif // #if defined(__cplusplus)
491 #endif // LLDB_lldb_forward_h_