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;
66 class CommandReturnObject;
71 class ConnectionFileDescriptor;
73 class CXXSyntheticChildren;
74 class DWARFCallFrameInfo;
75 class DWARFExpression;
82 struct DumpValueObjectOptions;
85 class EmulateInstruction;
87 class EvaluateExpressionOptions;
90 class ExecutionContext;
91 class ExecutionContextRef;
92 class ExecutionContextRefLocker;
93 class ExecutionContextScope;
98 class TypeCategoryImpl;
100 class FormattersMatchCandidate;
104 class InlineFunctionInfo;
106 class InstructionList;
109 class IRExecutionUnit;
111 class LanguageRuntime;
122 class ModuleSpecList;
124 struct NameSearchContext;
125 class ObjCLanguageRuntime;
126 class ObjectContainer;
128 class OptionGroupOptions;
129 class OptionGroupPlatform;
131 class ObjectFileJITDelegate;
132 class OperatingSystem;
135 class OptionValueArch;
136 class OptionValueArgs;
137 class OptionValueArray;
138 class OptionValueBoolean;
139 class OptionValueDictionary;
140 class OptionValueEnumeration;
141 class OptionValueFileSpec;
142 class OptionValueFileSpecList;
143 class OptionValueFormat;
144 class OptionValuePathMappings;
145 class OptionValueProperties;
146 class OptionValueRegex;
147 class OptionValueSInt64;
148 class OptionValueString;
149 class OptionValueUInt64;
150 class OptionValueUUID;
152 class PathMappingList;
155 class ProcessAttachInfo;
158 class ProcessInstanceInfo;
159 class ProcessInstanceInfoList;
160 class ProcessInstanceInfoMatch;
161 class ProcessLaunchInfo;
163 struct PropertyDefinition;
165 class PythonDictionary;
169 class RegisterCheckpoint;
170 class RegisterContext;
171 class RegisterLocation;
172 class RegisterLocationList;
174 class RegularExpression;
176 class ScriptInterpreter;
177 class ScriptInterpreterLocker;
178 class ScriptInterpreterObject;
179 #ifndef LLDB_DISABLE_PYTHON
180 class ScriptInterpreterPython;
181 struct ScriptSummaryFormat;
187 class SectionLoadHistory;
188 class SectionLoadList;
191 class SourceManagerImpl;
193 class StackFrameImpl;
194 class StackFrameList;
198 class StoppointCallbackContext;
199 class StoppointLocation;
201 template <unsigned N> class StreamBuffer;
205 struct StringSummaryFormat;
206 class TypeSummaryImpl;
209 class SymbolContextList;
210 class SymbolContextScope;
211 class SymbolContextSpecifier;
213 class SymbolFileType;
216 class SyntheticChildren;
217 class SyntheticChildrenFrontEnd;
218 class TypeFilterImpl;
219 #ifndef LLDB_DISABLE_PYTHON
220 class ScriptedSyntheticChildren;
230 class ThreadPlanBase;
231 class ThreadPlanRunToAddress;
232 class ThreadPlanStepInstruction;
233 class ThreadPlanStepOut;
234 class ThreadPlanStepOverBreakpoint;
235 class ThreadPlanStepRange;
236 class ThreadPlanStepThrough;
237 class ThreadPlanTracer;
242 class TypeCategoryMap;
246 class TypeMemberImpl;
247 class TypeEnumMemberImpl;
248 class TypeEnumMemberListImpl;
249 class TypeNameSpecifierImpl;
254 class UnwindAssembly;
259 class TypeFormatImpl;
262 class ValueObjectChild;
263 class ValueObjectConstResult;
264 class ValueObjectConstResultChild;
265 class ValueObjectConstResultImpl;
266 class ValueObjectList;
267 class ValueObjectPrinter;
271 class WatchpointList;
272 class WatchpointOptions;
275 } // namespace lldb_private
277 //----------------------------------------------------------------------
278 // lldb forward declarations
279 //----------------------------------------------------------------------
282 typedef std::shared_ptr<lldb_private::ABI> ABISP;
283 typedef std::shared_ptr<lldb_private::Baton> BatonSP;
284 typedef std::shared_ptr<lldb_private::Block> BlockSP;
285 typedef std::shared_ptr<lldb_private::Breakpoint> BreakpointSP;
286 typedef std::weak_ptr<lldb_private::Breakpoint> BreakpointWP;
287 typedef std::shared_ptr<lldb_private::BreakpointSite> BreakpointSiteSP;
288 typedef std::weak_ptr<lldb_private::BreakpointSite> BreakpointSiteWP;
289 typedef std::shared_ptr<lldb_private::BreakpointLocation> BreakpointLocationSP;
290 typedef std::weak_ptr<lldb_private::BreakpointLocation> BreakpointLocationWP;
291 typedef std::shared_ptr<lldb_private::BreakpointResolver> BreakpointResolverSP;
292 typedef std::shared_ptr<lldb_private::Broadcaster> BroadcasterSP;
293 typedef std::shared_ptr<lldb_private::ClangExpressionVariable> ClangExpressionVariableSP;
294 typedef std::shared_ptr<lldb_private::CommandObject> CommandObjectSP;
295 typedef std::shared_ptr<lldb_private::Communication> CommunicationSP;
296 typedef std::shared_ptr<lldb_private::Connection> ConnectionSP;
297 typedef std::shared_ptr<lldb_private::CompileUnit> CompUnitSP;
298 typedef std::shared_ptr<lldb_private::DataBuffer> DataBufferSP;
299 typedef std::shared_ptr<lldb_private::DataExtractor> DataExtractorSP;
300 typedef std::shared_ptr<lldb_private::Debugger> DebuggerSP;
301 typedef std::weak_ptr<lldb_private::Debugger> DebuggerWP;
302 typedef std::shared_ptr<lldb_private::Disassembler> DisassemblerSP;
303 typedef std::shared_ptr<lldb_private::DynamicLoader> DynamicLoaderSP;
304 typedef std::shared_ptr<lldb_private::Event> EventSP;
305 typedef std::shared_ptr<lldb_private::ExecutionContextRef> ExecutionContextRefSP;
306 typedef std::shared_ptr<lldb_private::File> FileSP;
307 typedef std::shared_ptr<lldb_private::Function> FunctionSP;
308 typedef std::shared_ptr<lldb_private::FuncUnwinders> FuncUnwindersSP;
309 typedef std::shared_ptr<lldb_private::InlineFunctionInfo> InlineFunctionInfoSP;
310 typedef std::shared_ptr<lldb_private::Instruction> InstructionSP;
311 typedef std::shared_ptr<lldb_private::IOHandler> IOHandlerSP;
312 typedef std::shared_ptr<lldb_private::IOObject> IOObjectSP;
313 typedef std::shared_ptr<lldb_private::JITLoader> JITLoaderSP;
314 typedef std::shared_ptr<lldb_private::LanguageRuntime> LanguageRuntimeSP;
315 typedef std::shared_ptr<lldb_private::SystemRuntime> SystemRuntimeSP;
316 typedef std::shared_ptr<lldb_private::LineTable> LineTableSP;
317 typedef std::shared_ptr<lldb_private::Listener> ListenerSP;
318 typedef std::shared_ptr<lldb_private::LogChannel> LogChannelSP;
319 typedef std::shared_ptr<lldb_private::Module> ModuleSP;
320 typedef std::weak_ptr<lldb_private::Module> ModuleWP;
321 typedef std::shared_ptr<lldb_private::ObjectFile> ObjectFileSP;
322 typedef std::weak_ptr<lldb_private::ObjectFile> ObjectFileWP;
323 typedef std::shared_ptr<lldb_private::ObjectFileJITDelegate> ObjectFileJITDelegateSP;
324 typedef std::weak_ptr<lldb_private::ObjectFileJITDelegate> ObjectFileJITDelegateWP;
325 typedef std::shared_ptr<lldb_private::OptionValue> OptionValueSP;
326 typedef std::weak_ptr<lldb_private::OptionValue> OptionValueWP;
327 typedef std::shared_ptr<lldb_private::OptionValueArch> OptionValueArchSP;
328 typedef std::shared_ptr<lldb_private::OptionValueArgs> OptionValueArgsSP;
329 typedef std::shared_ptr<lldb_private::OptionValueArray> OptionValueArraySP;
330 typedef std::shared_ptr<lldb_private::OptionValueBoolean> OptionValueBooleanSP;
331 typedef std::shared_ptr<lldb_private::OptionValueDictionary> OptionValueDictionarySP;
332 typedef std::shared_ptr<lldb_private::OptionValueFileSpec> OptionValueFileSpecSP;
333 typedef std::shared_ptr<lldb_private::OptionValueFileSpecList> OptionValueFileSpecListSP;
334 typedef std::shared_ptr<lldb_private::OptionValueFormat> OptionValueFormatSP;
335 typedef std::shared_ptr<lldb_private::OptionValuePathMappings> OptionValuePathMappingsSP;
336 typedef std::shared_ptr<lldb_private::OptionValueProperties> OptionValuePropertiesSP;
337 typedef std::shared_ptr<lldb_private::OptionValueRegex> OptionValueRegexSP;
338 typedef std::shared_ptr<lldb_private::OptionValueSInt64> OptionValueSInt64SP;
339 typedef std::shared_ptr<lldb_private::OptionValueString> OptionValueStringSP;
340 typedef std::shared_ptr<lldb_private::OptionValueUInt64> OptionValueUInt64SP;
341 typedef std::shared_ptr<lldb_private::OptionValueUUID> OptionValueUUIDSP;
342 typedef std::shared_ptr<lldb_private::Platform> PlatformSP;
343 typedef std::shared_ptr<lldb_private::Process> ProcessSP;
344 typedef std::shared_ptr<lldb_private::ProcessAttachInfo> ProcessAttachInfoSP;
345 typedef std::shared_ptr<lldb_private::ProcessLaunchInfo> ProcessLaunchInfoSP;
346 typedef std::weak_ptr<lldb_private::Process> ProcessWP;
347 typedef std::shared_ptr<lldb_private::Property> PropertySP;
348 typedef std::shared_ptr<lldb_private::RegisterCheckpoint> RegisterCheckpointSP;
349 typedef std::shared_ptr<lldb_private::RegisterContext> RegisterContextSP;
350 typedef std::shared_ptr<lldb_private::RegularExpression> RegularExpressionSP;
351 typedef std::shared_ptr<lldb_private::Queue> QueueSP;
352 typedef std::weak_ptr<lldb_private::Queue> QueueWP;
353 typedef std::shared_ptr<lldb_private::QueueItem> QueueItemSP;
354 typedef std::shared_ptr<lldb_private::ScriptInterpreterObject> ScriptInterpreterObjectSP;
355 #ifndef LLDB_DISABLE_PYTHON
356 typedef std::shared_ptr<lldb_private::ScriptSummaryFormat> ScriptSummaryFormatSP;
357 #endif // #ifndef LLDB_DISABLE_PYTHON
358 typedef std::shared_ptr<lldb_private::Section> SectionSP;
359 typedef std::weak_ptr<lldb_private::Section> SectionWP;
360 typedef std::shared_ptr<lldb_private::SectionLoadList> SectionLoadListSP;
361 typedef std::shared_ptr<lldb_private::SearchFilter> SearchFilterSP;
362 typedef std::shared_ptr<lldb_private::Settings> SettingsSP;
363 typedef std::shared_ptr<lldb_private::StackFrame> StackFrameSP;
364 typedef std::weak_ptr<lldb_private::StackFrame> StackFrameWP;
365 typedef std::shared_ptr<lldb_private::StackFrameList> StackFrameListSP;
366 typedef std::shared_ptr<lldb_private::StopInfo> StopInfoSP;
367 typedef std::shared_ptr<lldb_private::StoppointLocation> StoppointLocationSP;
368 typedef std::shared_ptr<lldb_private::Stream> StreamSP;
369 typedef std::weak_ptr<lldb_private::Stream> StreamWP;
370 typedef std::shared_ptr<lldb_private::StreamFile> StreamFileSP;
371 typedef std::shared_ptr<lldb_private::StringSummaryFormat> StringTypeSummaryImplSP;
372 typedef std::shared_ptr<lldb_private::SymbolFile> SymbolFileSP;
373 typedef std::shared_ptr<lldb_private::SymbolFileType> SymbolFileTypeSP;
374 typedef std::weak_ptr<lldb_private::SymbolFileType> SymbolFileTypeWP;
375 typedef std::shared_ptr<lldb_private::SymbolContextSpecifier> SymbolContextSpecifierSP;
376 typedef std::shared_ptr<lldb_private::SyntheticChildren> SyntheticChildrenSP;
377 typedef std::shared_ptr<lldb_private::SyntheticChildrenFrontEnd> SyntheticChildrenFrontEndSP;
378 typedef std::shared_ptr<lldb_private::Target> TargetSP;
379 typedef std::weak_ptr<lldb_private::Target> TargetWP;
380 typedef std::shared_ptr<lldb_private::Thread> ThreadSP;
381 typedef std::weak_ptr<lldb_private::Thread> ThreadWP;
382 typedef std::shared_ptr<lldb_private::ThreadPlan> ThreadPlanSP;
383 typedef std::shared_ptr<lldb_private::ThreadPlanTracer> ThreadPlanTracerSP;
384 typedef std::shared_ptr<lldb_private::Type> TypeSP;
385 typedef std::weak_ptr<lldb_private::Type> TypeWP;
386 typedef std::shared_ptr<lldb_private::TypeCategoryImpl> TypeCategoryImplSP;
387 typedef std::shared_ptr<lldb_private::TypeImpl> TypeImplSP;
388 typedef std::shared_ptr<lldb_private::TypeEnumMemberImpl> TypeEnumMemberImplSP;
389 typedef std::shared_ptr<lldb_private::TypeFilterImpl> TypeFilterImplSP;
390 typedef std::shared_ptr<lldb_private::TypeFormatImpl> TypeFormatImplSP;
391 typedef std::shared_ptr<lldb_private::TypeNameSpecifierImpl> TypeNameSpecifierImplSP;
392 typedef std::shared_ptr<lldb_private::TypeSummaryImpl> TypeSummaryImplSP;
393 #ifndef LLDB_DISABLE_PYTHON
394 typedef std::shared_ptr<lldb_private::ScriptedSyntheticChildren> ScriptedSyntheticChildrenSP;
396 typedef std::shared_ptr<lldb_private::UnwindAssembly> UnwindAssemblySP;
397 typedef std::shared_ptr<lldb_private::UnwindPlan> UnwindPlanSP;
398 typedef lldb_private::SharingPtr<lldb_private::ValueObject> ValueObjectSP;
399 typedef std::shared_ptr<lldb_private::Value> ValueSP;
400 typedef std::shared_ptr<lldb_private::ValueList> ValueListSP;
401 typedef std::shared_ptr<lldb_private::Variable> VariableSP;
402 typedef std::shared_ptr<lldb_private::VariableList> VariableListSP;
403 typedef std::shared_ptr<lldb_private::ValueObjectList> ValueObjectListSP;
404 typedef std::shared_ptr<lldb_private::Watchpoint> WatchpointSP;
409 #endif // #if defined(__cplusplus)
410 #endif // LLDB_lldb_forward_h_