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;
42 class BreakpointOptionGroup;
43 class BreakpointOptions;
44 class BreakpointResolver;
46 class BreakpointSiteList;
47 class BroadcastEventSpec;
49 class BroadcasterManager;
50 class CPPLanguageRuntime;
51 class ClangASTContext;
52 class ClangASTImporter;
53 class ClangASTMetadata;
55 class ClangExpressionDeclMap;
56 class ClangExpressionParser;
57 class ClangExpressionVariable;
58 class ClangExpressionVariables;
59 class ClangModulesDeclVendor;
60 class ClangPersistentVariables;
61 class CommandInterpreter;
62 class CommandInterpreterRunOptions;
64 class CommandObjectMultiword;
65 class CommandReturnObject;
67 class CompactUnwindInfo;
68 struct CompilerContext;
70 class CompilerDeclContext;
75 class ConnectionFileDescriptor;
77 class CXXSyntheticChildren;
78 class DWARFCallFrameInfo;
79 class DWARFExpression;
85 class DiagnosticManager;
87 class DumpValueObjectOptions;
88 class DynamicCheckerFunctions;
91 class EmulateInstruction;
93 class EvaluateExpressionOptions;
96 class EventDataStructuredData;
97 class ExecutionContext;
98 class ExecutionContextRef;
99 class ExecutionContextRefLocker;
100 class ExecutionContextScope;
102 class ExpressionVariable;
103 class ExpressionVariableList;
104 class ExpressionTypeSystemHelper;
110 class TypeCategoryImpl;
112 class FormattersMatchCandidate;
116 class InlineFunctionInfo;
118 class InstructionList;
119 class InstrumentationRuntime;
122 class IRExecutionUnit;
126 class LanguageCategory;
127 class LanguageRuntime;
128 class MemoryRegionInfo;
138 class ModuleSpecList;
140 struct NameSearchContext;
141 class ObjCLanguageRuntime;
142 class ObjCRuntimeSyntheticProvider;
143 class ObjectContainer;
145 class OptionGroupOptions;
146 class OptionGroupPlatform;
148 class ObjectFileJITDelegate;
149 class OperatingSystem;
152 class OptionValueArch;
153 class OptionValueArgs;
154 class OptionValueArray;
155 class OptionValueBoolean;
156 class OptionValueChar;
157 class OptionValueDictionary;
158 class OptionValueEnumeration;
159 class OptionValueFileSpec;
160 class OptionValueFileSpecList;
161 class OptionValueFormat;
162 class OptionValueLanguage;
163 class OptionValueFormatEntity;
164 class OptionValuePathMappings;
165 class OptionValueProperties;
166 class OptionValueRegex;
167 class OptionValueSInt64;
168 class OptionValueString;
169 class OptionValueUInt64;
170 class OptionValueUUID;
172 class PathMappingList;
173 class FunctionCaller;
174 class PersistentExpressionState;
177 class ProcessAttachInfo;
180 class ProcessInstanceInfo;
181 class ProcessInstanceInfoList;
182 class ProcessInstanceInfoMatch;
183 class ProcessLaunchInfo;
185 struct PropertyDefinition;
186 class RegisterCheckpoint;
187 class RegisterContext;
188 class RegisterLocation;
189 class RegisterLocationList;
191 class RegularExpression;
194 class ScriptInterpreter;
195 class ScriptInterpreterLocker;
196 struct ScriptSummaryFormat;
201 class SectionLoadHistory;
202 class SectionLoadList;
205 class SourceManagerImpl;
207 class StackFrameImpl;
208 class StackFrameList;
212 class StoppointCallbackContext;
213 class StoppointLocation;
215 template <unsigned N> class StreamBuffer;
219 struct StringSummaryFormat;
220 class StructuredDataImpl;
221 class StructuredDataPlugin;
223 class TypeSummaryImpl;
224 class TypeSummaryOptions;
227 class SymbolContextList;
228 class SymbolContextScope;
229 class SymbolContextSpecifier;
231 class SymbolFileType;
234 class SyntheticChildren;
235 class SyntheticChildrenFrontEnd;
236 class TypeFilterImpl;
238 #ifndef LLDB_DISABLE_PYTHON
239 class ScriptedSyntheticChildren;
246 class TargetProperties;
248 class ThreadCollection;
251 class ThreadPlanBase;
252 class ThreadPlanRunToAddress;
253 class ThreadPlanStepInstruction;
254 class ThreadPlanStepOut;
255 class ThreadPlanStepOverBreakpoint;
256 class ThreadPlanStepRange;
257 class ThreadPlanStepThrough;
258 class ThreadPlanTracer;
263 class TypeCategoryMap;
268 class TypeMemberImpl;
269 class TypeMemberFunctionImpl;
270 class TypeEnumMemberImpl;
271 class TypeEnumMemberListImpl;
272 class TypeFormatImpl;
273 class TypeNameSpecifierImpl;
275 class TypeValidatorImpl;
279 class UnwindAssembly;
282 class UserExpression;
283 class UtilityFunction;
288 class ValueObjectChild;
289 class ValueObjectConstResult;
290 class ValueObjectConstResultChild;
291 class ValueObjectConstResultImpl;
292 class ValueObjectList;
293 class ValueObjectPrinter;
297 class WatchpointList;
298 class WatchpointOptions;
301 } // namespace lldb_private
303 //----------------------------------------------------------------------
304 // lldb forward declarations
305 //----------------------------------------------------------------------
308 typedef std::shared_ptr<lldb_private::ABI> ABISP;
309 typedef std::shared_ptr<lldb_private::Baton> BatonSP;
310 typedef std::shared_ptr<lldb_private::Block> BlockSP;
311 typedef std::shared_ptr<lldb_private::Breakpoint> BreakpointSP;
312 typedef std::weak_ptr<lldb_private::Breakpoint> BreakpointWP;
313 typedef std::shared_ptr<lldb_private::BreakpointSite> BreakpointSiteSP;
314 typedef std::weak_ptr<lldb_private::BreakpointSite> BreakpointSiteWP;
315 typedef std::shared_ptr<lldb_private::BreakpointLocation> BreakpointLocationSP;
316 typedef std::weak_ptr<lldb_private::BreakpointLocation> BreakpointLocationWP;
317 typedef std::shared_ptr<lldb_private::BreakpointResolver> BreakpointResolverSP;
318 typedef std::shared_ptr<lldb_private::Broadcaster> BroadcasterSP;
319 typedef std::shared_ptr<lldb_private::BroadcasterManager> BroadcasterManagerSP;
320 typedef std::weak_ptr<lldb_private::BroadcasterManager> BroadcasterManagerWP;
321 typedef std::unique_ptr<lldb_private::ClangASTContext> ClangASTContextUP;
322 typedef std::shared_ptr<lldb_private::ClangASTImporter> ClangASTImporterSP;
323 typedef std::unique_ptr<lldb_private::ClangModulesDeclVendor>
324 ClangModulesDeclVendorUP;
325 typedef std::unique_ptr<lldb_private::ClangPersistentVariables>
326 ClangPersistentVariablesUP;
327 typedef std::shared_ptr<lldb_private::UserExpression> UserExpressionSP;
328 typedef std::shared_ptr<lldb_private::CommandObject> CommandObjectSP;
329 typedef std::shared_ptr<lldb_private::Communication> CommunicationSP;
330 typedef std::shared_ptr<lldb_private::Connection> ConnectionSP;
331 typedef std::shared_ptr<lldb_private::CompileUnit> CompUnitSP;
332 typedef std::shared_ptr<lldb_private::DataBuffer> DataBufferSP;
333 typedef std::shared_ptr<lldb_private::DataExtractor> DataExtractorSP;
334 typedef std::shared_ptr<lldb_private::Debugger> DebuggerSP;
335 typedef std::weak_ptr<lldb_private::Debugger> DebuggerWP;
336 typedef std::shared_ptr<lldb_private::Disassembler> DisassemblerSP;
337 typedef std::unique_ptr<lldb_private::DynamicCheckerFunctions>
338 DynamicCheckerFunctionsUP;
339 typedef std::shared_ptr<lldb_private::DynamicLoader> DynamicLoaderSP;
340 typedef std::unique_ptr<lldb_private::DynamicLoader> DynamicLoaderUP;
341 typedef std::shared_ptr<lldb_private::Event> EventSP;
342 typedef std::shared_ptr<lldb_private::EventData> EventDataSP;
343 typedef std::shared_ptr<lldb_private::EventDataStructuredData>
344 EventDataStructuredDataSP;
345 typedef std::shared_ptr<lldb_private::ExecutionContextRef>
346 ExecutionContextRefSP;
347 typedef std::shared_ptr<lldb_private::ExpressionVariable> ExpressionVariableSP;
348 typedef std::shared_ptr<lldb_private::File> FileSP;
349 typedef std::shared_ptr<lldb_private::Function> FunctionSP;
350 typedef std::shared_ptr<lldb_private::FunctionCaller> FunctionCallerSP;
351 typedef std::shared_ptr<lldb_private::FuncUnwinders> FuncUnwindersSP;
352 typedef std::unique_ptr<lldb_private::GoASTContext> GoASTContextUP;
353 typedef std::shared_ptr<lldb_private::InlineFunctionInfo> InlineFunctionInfoSP;
354 typedef std::shared_ptr<lldb_private::Instruction> InstructionSP;
355 typedef std::shared_ptr<lldb_private::InstrumentationRuntime>
356 InstrumentationRuntimeSP;
357 typedef std::shared_ptr<lldb_private::IOHandler> IOHandlerSP;
358 typedef std::shared_ptr<lldb_private::IOObject> IOObjectSP;
359 typedef std::shared_ptr<lldb_private::IRExecutionUnit> IRExecutionUnitSP;
360 typedef std::shared_ptr<lldb_private::JITLoader> JITLoaderSP;
361 typedef std::unique_ptr<lldb_private::JITLoaderList> JITLoaderListUP;
362 typedef std::shared_ptr<lldb_private::LanguageRuntime> LanguageRuntimeSP;
363 typedef std::shared_ptr<lldb_private::SystemRuntime> SystemRuntimeSP;
364 typedef std::unique_ptr<lldb_private::SystemRuntime> SystemRuntimeUP;
365 typedef std::shared_ptr<lldb_private::LineTable> LineTableSP;
366 typedef std::shared_ptr<lldb_private::Listener> ListenerSP;
367 typedef std::weak_ptr<lldb_private::Listener> ListenerWP;
368 typedef std::shared_ptr<lldb_private::MemoryHistory> MemoryHistorySP;
369 typedef std::shared_ptr<lldb_private::MemoryRegionInfo> MemoryRegionInfoSP;
370 typedef std::unique_ptr<lldb_private::MemoryRegionInfo> MemoryRegionInfoUP;
371 typedef std::shared_ptr<lldb_private::Module> ModuleSP;
372 typedef std::weak_ptr<lldb_private::Module> ModuleWP;
373 typedef std::shared_ptr<lldb_private::ObjectFile> ObjectFileSP;
374 typedef std::weak_ptr<lldb_private::ObjectFile> ObjectFileWP;
375 typedef std::shared_ptr<lldb_private::ObjectFileJITDelegate>
376 ObjectFileJITDelegateSP;
377 typedef std::weak_ptr<lldb_private::ObjectFileJITDelegate>
378 ObjectFileJITDelegateWP;
379 typedef std::unique_ptr<lldb_private::OperatingSystem> OperatingSystemUP;
380 typedef std::shared_ptr<lldb_private::OptionValue> OptionValueSP;
381 typedef std::weak_ptr<lldb_private::OptionValue> OptionValueWP;
382 typedef std::shared_ptr<lldb_private::OptionValueArch> OptionValueArchSP;
383 typedef std::shared_ptr<lldb_private::OptionValueArgs> OptionValueArgsSP;
384 typedef std::shared_ptr<lldb_private::OptionValueArray> OptionValueArraySP;
385 typedef std::shared_ptr<lldb_private::OptionValueBoolean> OptionValueBooleanSP;
386 typedef std::shared_ptr<lldb_private::OptionValueDictionary>
387 OptionValueDictionarySP;
388 typedef std::shared_ptr<lldb_private::OptionValueFileSpec>
389 OptionValueFileSpecSP;
390 typedef std::shared_ptr<lldb_private::OptionValueFileSpecList>
391 OptionValueFileSpecListSP;
392 typedef std::shared_ptr<lldb_private::OptionValueFormat> OptionValueFormatSP;
393 typedef std::shared_ptr<lldb_private::OptionValuePathMappings>
394 OptionValuePathMappingsSP;
395 typedef std::shared_ptr<lldb_private::OptionValueProperties>
396 OptionValuePropertiesSP;
397 typedef std::shared_ptr<lldb_private::OptionValueRegex> OptionValueRegexSP;
398 typedef std::shared_ptr<lldb_private::OptionValueSInt64> OptionValueSInt64SP;
399 typedef std::shared_ptr<lldb_private::OptionValueString> OptionValueStringSP;
400 typedef std::shared_ptr<lldb_private::OptionValueUInt64> OptionValueUInt64SP;
401 typedef std::shared_ptr<lldb_private::OptionValueUUID> OptionValueUUIDSP;
402 typedef std::shared_ptr<lldb_private::Platform> PlatformSP;
403 typedef std::shared_ptr<lldb_private::Process> ProcessSP;
404 typedef std::shared_ptr<lldb_private::ProcessAttachInfo> ProcessAttachInfoSP;
405 typedef std::shared_ptr<lldb_private::ProcessLaunchInfo> ProcessLaunchInfoSP;
406 typedef std::weak_ptr<lldb_private::Process> ProcessWP;
407 typedef std::shared_ptr<lldb_private::Property> PropertySP;
408 typedef std::shared_ptr<lldb_private::RegisterCheckpoint> RegisterCheckpointSP;
409 typedef std::shared_ptr<lldb_private::RegisterContext> RegisterContextSP;
410 typedef std::shared_ptr<lldb_private::RegularExpression> RegularExpressionSP;
411 typedef std::shared_ptr<lldb_private::Queue> QueueSP;
412 typedef std::weak_ptr<lldb_private::Queue> QueueWP;
413 typedef std::shared_ptr<lldb_private::QueueItem> QueueItemSP;
414 typedef std::shared_ptr<lldb_private::REPL> REPLSP;
415 typedef std::shared_ptr<lldb_private::ScriptSummaryFormat>
416 ScriptSummaryFormatSP;
417 typedef std::shared_ptr<lldb_private::ScriptInterpreter> ScriptInterpreterSP;
418 typedef std::unique_ptr<lldb_private::ScriptInterpreter> ScriptInterpreterUP;
419 typedef std::shared_ptr<lldb_private::Section> SectionSP;
420 typedef std::unique_ptr<lldb_private::SectionList> SectionListUP;
421 typedef std::weak_ptr<lldb_private::Section> SectionWP;
422 typedef std::shared_ptr<lldb_private::SectionLoadList> SectionLoadListSP;
423 typedef std::shared_ptr<lldb_private::SearchFilter> SearchFilterSP;
424 typedef std::shared_ptr<lldb_private::Settings> SettingsSP;
425 typedef std::unique_ptr<lldb_private::SourceManager> SourceManagerUP;
426 typedef std::shared_ptr<lldb_private::StackFrame> StackFrameSP;
427 typedef std::unique_ptr<lldb_private::StackFrame> StackFrameUP;
428 typedef std::weak_ptr<lldb_private::StackFrame> StackFrameWP;
429 typedef std::shared_ptr<lldb_private::StackFrameList> StackFrameListSP;
430 typedef std::shared_ptr<lldb_private::StopInfo> StopInfoSP;
431 typedef std::shared_ptr<lldb_private::StoppointLocation> StoppointLocationSP;
432 typedef std::shared_ptr<lldb_private::Stream> StreamSP;
433 typedef std::weak_ptr<lldb_private::Stream> StreamWP;
434 typedef std::shared_ptr<lldb_private::StreamFile> StreamFileSP;
435 typedef std::shared_ptr<lldb_private::StringSummaryFormat>
436 StringTypeSummaryImplSP;
437 typedef std::unique_ptr<lldb_private::StructuredDataImpl> StructuredDataImplUP;
438 typedef std::shared_ptr<lldb_private::StructuredDataPlugin>
439 StructuredDataPluginSP;
440 typedef std::weak_ptr<lldb_private::StructuredDataPlugin>
441 StructuredDataPluginWP;
442 typedef std::shared_ptr<lldb_private::SymbolFile> SymbolFileSP;
443 typedef std::shared_ptr<lldb_private::SymbolFileType> SymbolFileTypeSP;
444 typedef std::weak_ptr<lldb_private::SymbolFileType> SymbolFileTypeWP;
445 typedef std::shared_ptr<lldb_private::SymbolContextSpecifier>
446 SymbolContextSpecifierSP;
447 typedef std::unique_ptr<lldb_private::SymbolVendor> SymbolVendorUP;
448 typedef std::shared_ptr<lldb_private::SyntheticChildren> SyntheticChildrenSP;
449 typedef std::shared_ptr<lldb_private::SyntheticChildrenFrontEnd>
450 SyntheticChildrenFrontEndSP;
451 typedef std::shared_ptr<lldb_private::Target> TargetSP;
452 typedef std::weak_ptr<lldb_private::Target> TargetWP;
453 typedef std::shared_ptr<lldb_private::TargetProperties> TargetPropertiesSP;
454 typedef std::shared_ptr<lldb_private::Thread> ThreadSP;
455 typedef std::weak_ptr<lldb_private::Thread> ThreadWP;
456 typedef std::shared_ptr<lldb_private::ThreadCollection> ThreadCollectionSP;
457 typedef std::shared_ptr<lldb_private::ThreadPlan> ThreadPlanSP;
458 typedef std::shared_ptr<lldb_private::ThreadPlanTracer> ThreadPlanTracerSP;
459 typedef std::shared_ptr<lldb_private::TraceOptions> TraceOptionsSP;
460 typedef std::shared_ptr<lldb_private::Type> TypeSP;
461 typedef std::weak_ptr<lldb_private::Type> TypeWP;
462 typedef std::shared_ptr<lldb_private::TypeCategoryImpl> TypeCategoryImplSP;
463 typedef std::shared_ptr<lldb_private::TypeImpl> TypeImplSP;
464 typedef std::shared_ptr<lldb_private::TypeMemberFunctionImpl>
465 TypeMemberFunctionImplSP;
466 typedef std::shared_ptr<lldb_private::TypeEnumMemberImpl> TypeEnumMemberImplSP;
467 typedef std::shared_ptr<lldb_private::TypeFilterImpl> TypeFilterImplSP;
468 typedef std::shared_ptr<lldb_private::TypeSystem> TypeSystemSP;
469 typedef std::shared_ptr<lldb_private::TypeFormatImpl> TypeFormatImplSP;
470 typedef std::shared_ptr<lldb_private::TypeNameSpecifierImpl>
471 TypeNameSpecifierImplSP;
472 typedef std::shared_ptr<lldb_private::TypeSummaryImpl> TypeSummaryImplSP;
473 typedef std::shared_ptr<lldb_private::TypeSummaryOptions> TypeSummaryOptionsSP;
474 typedef std::shared_ptr<lldb_private::TypeValidatorImpl> TypeValidatorImplSP;
475 #ifndef LLDB_DISABLE_PYTHON
476 typedef std::shared_ptr<lldb_private::ScriptedSyntheticChildren>
477 ScriptedSyntheticChildrenSP;
479 typedef std::shared_ptr<lldb_private::UnixSignals> UnixSignalsSP;
480 typedef std::weak_ptr<lldb_private::UnixSignals> UnixSignalsWP;
481 typedef std::shared_ptr<lldb_private::UnwindAssembly> UnwindAssemblySP;
482 typedef std::shared_ptr<lldb_private::UnwindPlan> UnwindPlanSP;
483 typedef std::shared_ptr<lldb_private::UtilityFunction> UtilityFunctionSP;
484 typedef lldb_private::SharingPtr<lldb_private::ValueObject> ValueObjectSP;
485 typedef std::shared_ptr<lldb_private::Value> ValueSP;
486 typedef std::shared_ptr<lldb_private::ValueList> ValueListSP;
487 typedef std::shared_ptr<lldb_private::Variable> VariableSP;
488 typedef std::shared_ptr<lldb_private::VariableList> VariableListSP;
489 typedef std::shared_ptr<lldb_private::ValueObjectList> ValueObjectListSP;
490 typedef std::shared_ptr<lldb_private::Watchpoint> WatchpointSP;
494 #endif // #if defined(__cplusplus)
495 #endif // LLDB_lldb_forward_h_