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;
29 class ASTResultSynthesizer;
34 class BreakpointIDList;
36 class BreakpointLocation;
37 class BreakpointLocationCollection;
38 class BreakpointLocationList;
39 class BreakpointOptions;
40 class BreakpointResolver;
42 class BreakpointSiteList;
43 class BroadcastEventSpec;
45 class BroadcasterManager;
46 class CPPLanguageRuntime;
47 class ClangASTContext;
48 class ClangASTImporter;
49 class ClangASTMetadata;
52 class ClangNamespaceDecl;
53 class ClangExpression;
54 class ClangExpressionDeclMap;
55 class ClangExpressionParser;
56 class ClangExpressionVariable;
57 class ClangExpressionVariableList;
58 class ClangExpressionVariableList;
59 class ClangExpressionVariables;
61 class ClangPersistentVariables;
62 class ClangUserExpression;
63 class ClangUtilityFunction;
64 class CommandInterpreter;
65 class CommandInterpreterRunOptions;
67 class CommandReturnObject;
69 class CompactUnwindInfo;
73 class ConnectionFileDescriptor;
75 class CXXSyntheticChildren;
76 class DWARFCallFrameInfo;
77 class DWARFExpression;
84 struct DumpValueObjectOptions;
87 class EmulateInstruction;
89 class EvaluateExpressionOptions;
92 class ExecutionContext;
93 class ExecutionContextRef;
94 class ExecutionContextRefLocker;
95 class ExecutionContextScope;
100 class TypeCategoryImpl;
102 class FormattersMatchCandidate;
106 class InlineFunctionInfo;
108 class InstructionList;
109 class InstrumentationRuntime;
112 class IRExecutionUnit;
114 class LanguageRuntime;
126 class ModuleSpecList;
128 struct NameSearchContext;
129 class ObjCLanguageRuntime;
130 class ObjectContainer;
132 class OptionGroupOptions;
133 class OptionGroupPlatform;
135 class ObjectFileJITDelegate;
136 class OperatingSystem;
139 class OptionValueArch;
140 class OptionValueArgs;
141 class OptionValueArray;
142 class OptionValueBoolean;
143 class OptionValueChar;
144 class OptionValueDictionary;
145 class OptionValueEnumeration;
146 class OptionValueFileSpec;
147 class OptionValueFileSpecList;
148 class OptionValueFormat;
149 class OptionValuePathMappings;
150 class OptionValueProperties;
151 class OptionValueRegex;
152 class OptionValueSInt64;
153 class OptionValueString;
154 class OptionValueUInt64;
155 class OptionValueUUID;
157 class PathMappingList;
160 class ProcessAttachInfo;
163 class ProcessInstanceInfo;
164 class ProcessInstanceInfoList;
165 class ProcessInstanceInfoMatch;
166 class ProcessLaunchInfo;
168 struct PropertyDefinition;
170 class PythonDictionary;
174 class RegisterCheckpoint;
175 class RegisterContext;
176 class RegisterLocation;
177 class RegisterLocationList;
179 class RegularExpression;
181 class ScriptInterpreter;
182 class ScriptInterpreterLocker;
183 class ScriptInterpreterObject;
184 #ifndef LLDB_DISABLE_PYTHON
185 class ScriptInterpreterPython;
186 struct ScriptSummaryFormat;
192 class SectionLoadHistory;
193 class SectionLoadList;
196 class SourceManagerImpl;
198 class StackFrameImpl;
199 class StackFrameList;
203 class StoppointCallbackContext;
204 class StoppointLocation;
206 template <unsigned N> class StreamBuffer;
210 struct StringSummaryFormat;
211 class TypeSummaryImpl;
212 class TypeSummaryOptions;
215 class SymbolContextList;
216 class SymbolContextScope;
217 class SymbolContextSpecifier;
219 class SymbolFileType;
222 class SyntheticChildren;
223 class SyntheticChildrenFrontEnd;
224 class TypeFilterImpl;
225 #ifndef LLDB_DISABLE_PYTHON
226 class ScriptedSyntheticChildren;
234 class ThreadCollection;
237 class ThreadPlanBase;
238 class ThreadPlanRunToAddress;
239 class ThreadPlanStepInstruction;
240 class ThreadPlanStepOut;
241 class ThreadPlanStepOverBreakpoint;
242 class ThreadPlanStepRange;
243 class ThreadPlanStepThrough;
244 class ThreadPlanTracer;
249 class TypeCategoryMap;
253 class TypeMemberImpl;
254 class TypeMemberFunctionImpl;
255 class TypeEnumMemberImpl;
256 class TypeEnumMemberListImpl;
257 class TypeFormatImpl;
258 class TypeNameSpecifierImpl;
260 class TypeValidatorImpl;
264 class UnwindAssembly;
271 class ValueObjectChild;
272 class ValueObjectConstResult;
273 class ValueObjectConstResultChild;
274 class ValueObjectConstResultImpl;
275 class ValueObjectList;
276 class ValueObjectPrinter;
280 class WatchpointList;
281 class WatchpointOptions;
284 } // namespace lldb_private
286 //----------------------------------------------------------------------
287 // lldb forward declarations
288 //----------------------------------------------------------------------
291 typedef std::shared_ptr<lldb_private::ABI> ABISP;
292 typedef std::shared_ptr<lldb_private::Baton> BatonSP;
293 typedef std::shared_ptr<lldb_private::Block> BlockSP;
294 typedef std::shared_ptr<lldb_private::Breakpoint> BreakpointSP;
295 typedef std::weak_ptr<lldb_private::Breakpoint> BreakpointWP;
296 typedef std::shared_ptr<lldb_private::BreakpointSite> BreakpointSiteSP;
297 typedef std::weak_ptr<lldb_private::BreakpointSite> BreakpointSiteWP;
298 typedef std::shared_ptr<lldb_private::BreakpointLocation> BreakpointLocationSP;
299 typedef std::weak_ptr<lldb_private::BreakpointLocation> BreakpointLocationWP;
300 typedef std::shared_ptr<lldb_private::BreakpointResolver> BreakpointResolverSP;
301 typedef std::shared_ptr<lldb_private::Broadcaster> BroadcasterSP;
302 typedef std::shared_ptr<lldb_private::ClangExpressionVariable> ClangExpressionVariableSP;
303 typedef std::shared_ptr<lldb_private::CommandObject> CommandObjectSP;
304 typedef std::shared_ptr<lldb_private::Communication> CommunicationSP;
305 typedef std::shared_ptr<lldb_private::Connection> ConnectionSP;
306 typedef std::shared_ptr<lldb_private::CompileUnit> CompUnitSP;
307 typedef std::shared_ptr<lldb_private::DataBuffer> DataBufferSP;
308 typedef std::shared_ptr<lldb_private::DataExtractor> DataExtractorSP;
309 typedef std::shared_ptr<lldb_private::Debugger> DebuggerSP;
310 typedef std::weak_ptr<lldb_private::Debugger> DebuggerWP;
311 typedef std::shared_ptr<lldb_private::Disassembler> DisassemblerSP;
312 typedef std::shared_ptr<lldb_private::DynamicLoader> DynamicLoaderSP;
313 typedef std::shared_ptr<lldb_private::Event> EventSP;
314 typedef std::shared_ptr<lldb_private::ExecutionContextRef> ExecutionContextRefSP;
315 typedef std::shared_ptr<lldb_private::File> FileSP;
316 typedef std::shared_ptr<lldb_private::Function> FunctionSP;
317 typedef std::shared_ptr<lldb_private::FuncUnwinders> FuncUnwindersSP;
318 typedef std::shared_ptr<lldb_private::InlineFunctionInfo> InlineFunctionInfoSP;
319 typedef std::shared_ptr<lldb_private::Instruction> InstructionSP;
320 typedef std::shared_ptr<lldb_private::InstrumentationRuntime> InstrumentationRuntimeSP;
321 typedef std::shared_ptr<lldb_private::IOHandler> IOHandlerSP;
322 typedef std::shared_ptr<lldb_private::IOObject> IOObjectSP;
323 typedef std::shared_ptr<lldb_private::JITLoader> JITLoaderSP;
324 typedef std::shared_ptr<lldb_private::LanguageRuntime> LanguageRuntimeSP;
325 typedef std::shared_ptr<lldb_private::SystemRuntime> SystemRuntimeSP;
326 typedef std::shared_ptr<lldb_private::LineTable> LineTableSP;
327 typedef std::shared_ptr<lldb_private::Listener> ListenerSP;
328 typedef std::shared_ptr<lldb_private::LogChannel> LogChannelSP;
329 typedef std::shared_ptr<lldb_private::MemoryHistory> MemoryHistorySP;
330 typedef std::shared_ptr<lldb_private::Module> ModuleSP;
331 typedef std::weak_ptr<lldb_private::Module> ModuleWP;
332 typedef std::shared_ptr<lldb_private::ObjectFile> ObjectFileSP;
333 typedef std::weak_ptr<lldb_private::ObjectFile> ObjectFileWP;
334 typedef std::shared_ptr<lldb_private::ObjectFileJITDelegate> ObjectFileJITDelegateSP;
335 typedef std::weak_ptr<lldb_private::ObjectFileJITDelegate> ObjectFileJITDelegateWP;
336 typedef std::shared_ptr<lldb_private::OptionValue> OptionValueSP;
337 typedef std::weak_ptr<lldb_private::OptionValue> OptionValueWP;
338 typedef std::shared_ptr<lldb_private::OptionValueArch> OptionValueArchSP;
339 typedef std::shared_ptr<lldb_private::OptionValueArgs> OptionValueArgsSP;
340 typedef std::shared_ptr<lldb_private::OptionValueArray> OptionValueArraySP;
341 typedef std::shared_ptr<lldb_private::OptionValueBoolean> OptionValueBooleanSP;
342 typedef std::shared_ptr<lldb_private::OptionValueDictionary> OptionValueDictionarySP;
343 typedef std::shared_ptr<lldb_private::OptionValueFileSpec> OptionValueFileSpecSP;
344 typedef std::shared_ptr<lldb_private::OptionValueFileSpecList> OptionValueFileSpecListSP;
345 typedef std::shared_ptr<lldb_private::OptionValueFormat> OptionValueFormatSP;
346 typedef std::shared_ptr<lldb_private::OptionValuePathMappings> OptionValuePathMappingsSP;
347 typedef std::shared_ptr<lldb_private::OptionValueProperties> OptionValuePropertiesSP;
348 typedef std::shared_ptr<lldb_private::OptionValueRegex> OptionValueRegexSP;
349 typedef std::shared_ptr<lldb_private::OptionValueSInt64> OptionValueSInt64SP;
350 typedef std::shared_ptr<lldb_private::OptionValueString> OptionValueStringSP;
351 typedef std::shared_ptr<lldb_private::OptionValueUInt64> OptionValueUInt64SP;
352 typedef std::shared_ptr<lldb_private::OptionValueUUID> OptionValueUUIDSP;
353 typedef std::shared_ptr<lldb_private::Platform> PlatformSP;
354 typedef std::shared_ptr<lldb_private::Process> ProcessSP;
355 typedef std::shared_ptr<lldb_private::ProcessAttachInfo> ProcessAttachInfoSP;
356 typedef std::shared_ptr<lldb_private::ProcessLaunchInfo> ProcessLaunchInfoSP;
357 typedef std::weak_ptr<lldb_private::Process> ProcessWP;
358 typedef std::shared_ptr<lldb_private::Property> PropertySP;
359 typedef std::shared_ptr<lldb_private::RegisterCheckpoint> RegisterCheckpointSP;
360 typedef std::shared_ptr<lldb_private::RegisterContext> RegisterContextSP;
361 typedef std::shared_ptr<lldb_private::RegularExpression> RegularExpressionSP;
362 typedef std::shared_ptr<lldb_private::Queue> QueueSP;
363 typedef std::weak_ptr<lldb_private::Queue> QueueWP;
364 typedef std::shared_ptr<lldb_private::QueueItem> QueueItemSP;
365 typedef std::shared_ptr<lldb_private::ScriptInterpreterObject> ScriptInterpreterObjectSP;
366 #ifndef LLDB_DISABLE_PYTHON
367 typedef std::shared_ptr<lldb_private::ScriptSummaryFormat> ScriptSummaryFormatSP;
368 #endif // #ifndef LLDB_DISABLE_PYTHON
369 typedef std::shared_ptr<lldb_private::Section> SectionSP;
370 typedef std::weak_ptr<lldb_private::Section> SectionWP;
371 typedef std::shared_ptr<lldb_private::SectionLoadList> SectionLoadListSP;
372 typedef std::shared_ptr<lldb_private::SearchFilter> SearchFilterSP;
373 typedef std::shared_ptr<lldb_private::Settings> SettingsSP;
374 typedef std::shared_ptr<lldb_private::StackFrame> StackFrameSP;
375 typedef std::unique_ptr<lldb_private::StackFrame> StackFrameUP;
376 typedef std::weak_ptr<lldb_private::StackFrame> StackFrameWP;
377 typedef std::shared_ptr<lldb_private::StackFrameList> StackFrameListSP;
378 typedef std::shared_ptr<lldb_private::StopInfo> StopInfoSP;
379 typedef std::shared_ptr<lldb_private::StoppointLocation> StoppointLocationSP;
380 typedef std::shared_ptr<lldb_private::Stream> StreamSP;
381 typedef std::weak_ptr<lldb_private::Stream> StreamWP;
382 typedef std::shared_ptr<lldb_private::StreamFile> StreamFileSP;
383 typedef std::shared_ptr<lldb_private::StringSummaryFormat> StringTypeSummaryImplSP;
384 typedef std::shared_ptr<lldb_private::SymbolFile> SymbolFileSP;
385 typedef std::shared_ptr<lldb_private::SymbolFileType> SymbolFileTypeSP;
386 typedef std::weak_ptr<lldb_private::SymbolFileType> SymbolFileTypeWP;
387 typedef std::shared_ptr<lldb_private::SymbolContextSpecifier> SymbolContextSpecifierSP;
388 typedef std::shared_ptr<lldb_private::SyntheticChildren> SyntheticChildrenSP;
389 typedef std::shared_ptr<lldb_private::SyntheticChildrenFrontEnd> SyntheticChildrenFrontEndSP;
390 typedef std::shared_ptr<lldb_private::Target> TargetSP;
391 typedef std::weak_ptr<lldb_private::Target> TargetWP;
392 typedef std::shared_ptr<lldb_private::Thread> ThreadSP;
393 typedef std::weak_ptr<lldb_private::Thread> ThreadWP;
394 typedef std::shared_ptr<lldb_private::ThreadCollection> ThreadCollectionSP;
395 typedef std::shared_ptr<lldb_private::ThreadPlan> ThreadPlanSP;
396 typedef std::shared_ptr<lldb_private::ThreadPlanTracer> ThreadPlanTracerSP;
397 typedef std::shared_ptr<lldb_private::Type> TypeSP;
398 typedef std::weak_ptr<lldb_private::Type> TypeWP;
399 typedef std::shared_ptr<lldb_private::TypeCategoryImpl> TypeCategoryImplSP;
400 typedef std::shared_ptr<lldb_private::TypeImpl> TypeImplSP;
401 typedef std::shared_ptr<lldb_private::TypeMemberFunctionImpl> TypeMemberFunctionImplSP;
402 typedef std::shared_ptr<lldb_private::TypeEnumMemberImpl> TypeEnumMemberImplSP;
403 typedef std::shared_ptr<lldb_private::TypeFilterImpl> TypeFilterImplSP;
404 typedef std::shared_ptr<lldb_private::TypeFormatImpl> TypeFormatImplSP;
405 typedef std::shared_ptr<lldb_private::TypeNameSpecifierImpl> TypeNameSpecifierImplSP;
406 typedef std::shared_ptr<lldb_private::TypeSummaryImpl> TypeSummaryImplSP;
407 typedef std::shared_ptr<lldb_private::TypeSummaryOptions> TypeSummaryOptionsSP;
408 typedef std::shared_ptr<lldb_private::TypeValidatorImpl> TypeValidatorImplSP;
409 #ifndef LLDB_DISABLE_PYTHON
410 typedef std::shared_ptr<lldb_private::ScriptedSyntheticChildren> ScriptedSyntheticChildrenSP;
412 typedef std::shared_ptr<lldb_private::UnwindAssembly> UnwindAssemblySP;
413 typedef std::shared_ptr<lldb_private::UnwindPlan> UnwindPlanSP;
414 typedef lldb_private::SharingPtr<lldb_private::ValueObject> ValueObjectSP;
415 typedef std::shared_ptr<lldb_private::Value> ValueSP;
416 typedef std::shared_ptr<lldb_private::ValueList> ValueListSP;
417 typedef std::shared_ptr<lldb_private::Variable> VariableSP;
418 typedef std::shared_ptr<lldb_private::VariableList> VariableListSP;
419 typedef std::shared_ptr<lldb_private::ValueObjectList> ValueObjectListSP;
420 typedef std::shared_ptr<lldb_private::Watchpoint> WatchpointSP;
425 #endif // #if defined(__cplusplus)
426 #endif // LLDB_lldb_forward_h_