1 //===-- lldb-forward.h ------------------------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #ifndef LLDB_lldb_forward_h_
11 #define LLDB_lldb_forward_h_
12 
13 #if defined(__cplusplus)
14 
15 #include "lldb/Utility/SharingPtr.h"
16 
17 //----------------------------------------------------------------------
18 // lldb forward declarations
19 //----------------------------------------------------------------------
20 namespace lldb_private {
21 
22 class   ABI;
23 class   Address;
24 class   AddressImpl;
25 class   AddressRange;
26 class   AddressResolver;
27 class   ArchSpec;
28 class   Args;
29 class   ASTResultSynthesizer;
30 class   Baton;
31 class   Block;
32 class   Breakpoint;
33 class   BreakpointID;
34 class   BreakpointIDList;
35 class   BreakpointList;
36 class   BreakpointLocation;
37 class   BreakpointLocationCollection;
38 class   BreakpointLocationList;
39 class   BreakpointOptions;
40 class   BreakpointResolver;
41 class   BreakpointSite;
42 class   BreakpointSiteList;
43 class   BroadcastEventSpec;
44 class   Broadcaster;
45 class   BroadcasterManager;
46 class   CPPLanguageRuntime;
47 class   ClangASTContext;
48 class   ClangASTImporter;
49 class   ClangASTMetadata;
50 class   ClangASTSource;
51 class   ClangASTType;
52 class   ClangNamespaceDecl;
53 class   ClangExpression;
54 class   ClangExpressionDeclMap;
55 class   ClangExpressionParser;
56 class   ClangExpressionVariable;
57 class   ClangExpressionVariableList;
58 class   ClangExpressionVariableList;
59 class   ClangExpressionVariables;
60 class   ClangFunction;
61 class   ClangPersistentVariables;
62 class   ClangUserExpression;
63 class   ClangUtilityFunction;
64 class   CommandInterpreter;
65 class   CommandObject;
66 class   CommandReturnObject;
67 class   Communication;
68 class   CompileUnit;
69 class   Condition;
70 class   Connection;
71 class   ConnectionFileDescriptor;
72 class   ConstString;
73 class   CXXSyntheticChildren;
74 class   DWARFCallFrameInfo;
75 class   DWARFExpression;
76 class   DataBuffer;
77 class   DataEncoder;
78 class   DataExtractor;
79 class   Debugger;
80 class   Declaration;
81 class   Disassembler;
82 class   DynamicLibrary;
83 class   DynamicLoader;
84 class   EmulateInstruction;
85 class   Error;
86 class   EvaluateExpressionOptions;
87 class   Event;
88 class   EventData;
89 class   ExecutionContext;
90 class   ExecutionContextRef;
91 class   ExecutionContextRefLocker;
92 class   ExecutionContextScope;
93 class   FileSpec;
94 class   FileSpecList;
95 class   Flags;
96 class   TypeCategoryImpl;
97 class   FormatManager;
98 class   FuncUnwinders;
99 class   Function;
100 class   FunctionInfo;
101 class   InlineFunctionInfo;
102 class   InputReader;
103 class   Instruction;
104 class   InstructionList;
105 class   IRExecutionUnit;
106 class   LanguageRuntime;
107 class   LineTable;
108 class   Listener;
109 class   Log;
110 class   LogChannel;
111 class   Mangled;
112 class   Materializer;
113 class   Module;
114 class   ModuleList;
115 class   ModuleSpec;
116 class   ModuleSpecList;
117 class   Mutex;
118 struct  NameSearchContext;
119 class   ObjCLanguageRuntime;
120 class   ObjectContainer;
121 class   OptionGroup;
122 class   OptionGroupPlatform;
123 class   ObjectFile;
124 class   OperatingSystem;
125 class   Options;
126 class   OptionValue;
127 class   OptionValueArch;
128 class   OptionValueArgs;
129 class   OptionValueArray;
130 class   OptionValueBoolean;
131 class   OptionValueDictionary;
132 class   OptionValueEnumeration;
133 class   OptionValueFileSpec;
134 class   OptionValueFileSpecList;
135 class   OptionValueFormat;
136 class   OptionValuePathMappings;
137 class   OptionValueProperties;
138 class   OptionValueRegex;
139 class   OptionValueSInt64;
140 class   OptionValueString;
141 class   OptionValueUInt64;
142 class   OptionValueUUID;
143 class   NamedOption;
144 class   PathMappingList;
145 class   Platform;
146 class   Process;
147 class   ProcessAttachInfo;
148 class   ProcessModID;
149 class   ProcessInfo;
150 class   ProcessInstanceInfo;
151 class   ProcessInstanceInfoList;
152 class   ProcessInstanceInfoMatch;
153 class   ProcessLaunchInfo;
154 class   Property;
155 struct  PropertyDefinition;
156 class   PythonArray;
157 class   PythonDictionary;
158 class   PythonInteger;
159 class   PythonObject;
160 class   PythonString;
161 class   RegisterContext;
162 class   RegisterLocation;
163 class   RegisterLocationList;
164 class   RegisterValue;
165 class   RegularExpression;
166 class   Scalar;
167 class   ScriptInterpreter;
168 class   ScriptInterpreterLocker;
169 class   ScriptInterpreterObject;
170 #ifndef LLDB_DISABLE_PYTHON
171 class   ScriptInterpreterPython;
172 struct  ScriptSummaryFormat;
173 #endif
174 class   SearchFilter;
175 class   Section;
176 class   SectionImpl;
177 class   SectionList;
178 class   Settings;
179 class   SourceManager;
180 class   SourceManagerImpl;
181 class   StackFrame;
182 class   StackFrameImpl;
183 class   StackFrameList;
184 class   StackID;
185 class   StopInfo;
186 class   Stoppoint;
187 class   StoppointCallbackContext;
188 class   StoppointLocation;
189 class   Stream;
190 template <unsigned N> class StreamBuffer;
191 class   StreamFile;
192 class   StreamString;
193 class   StringList;
194 struct  StringSummaryFormat;
195 class   TypeSummaryImpl;
196 class   Symbol;
197 class   SymbolContext;
198 class   SymbolContextList;
199 class   SymbolContextScope;
200 class   SymbolContextSpecifier;
201 class   SymbolFile;
202 class   SymbolFileType;
203 class   SymbolVendor;
204 class   Symtab;
205 class   SyntheticChildren;
206 class   SyntheticChildrenFrontEnd;
207 class   TypeFilterImpl;
208 #ifndef LLDB_DISABLE_PYTHON
209 class   ScriptedSyntheticChildren;
210 #endif
211 class   Target;
212 class   TargetList;
213 class   Thread;
214 class   ThreadList;
215 class   ThreadPlan;
216 class   ThreadPlanBase;
217 class   ThreadPlanRunToAddress;
218 class   ThreadPlanStepInstruction;
219 class   ThreadPlanStepOut;
220 class   ThreadPlanStepOverBreakpoint;
221 class   ThreadPlanStepRange;
222 class   ThreadPlanStepThrough;
223 class   ThreadPlanTracer;
224 class   ThreadSpec;
225 class   TimeValue;
226 class   Type;
227 class   TypeCategoryMap;
228 class   TypeImpl;
229 class   TypeAndOrName;
230 class   TypeList;
231 class   TypeListImpl;
232 class   TypeMemberImpl;
233 class   TypeNameSpecifierImpl;
234 class   UUID;
235 class   Unwind;
236 class   UnwindAssembly;
237 class   UnwindPlan;
238 class   UnwindTable;
239 class   VMRange;
240 class   Value;
241 class   TypeFormatImpl;
242 class   ValueList;
243 class   ValueObject;
244 class   ValueObjectChild;
245 class   ValueObjectConstResult;
246 class   ValueObjectConstResultChild;
247 class   ValueObjectConstResultImpl;
248 class   ValueObjectList;
249 class   Variable;
250 class   VariableList;
251 class   Watchpoint;
252 class   WatchpointList;
253 class   WatchpointOptions;
254 struct  LineEntry;
255 
256 } // namespace lldb_private
257 
258 //----------------------------------------------------------------------
259 // lldb forward declarations
260 //----------------------------------------------------------------------
261 namespace lldb {
262 
263     typedef std::shared_ptr<lldb_private::ABI> ABISP;
264     typedef std::shared_ptr<lldb_private::Baton> BatonSP;
265     typedef std::shared_ptr<lldb_private::Block> BlockSP;
266     typedef std::shared_ptr<lldb_private::Breakpoint> BreakpointSP;
267     typedef std::weak_ptr<lldb_private::Breakpoint> BreakpointWP;
268     typedef std::shared_ptr<lldb_private::BreakpointSite> BreakpointSiteSP;
269     typedef std::weak_ptr<lldb_private::BreakpointSite> BreakpointSiteWP;
270     typedef std::shared_ptr<lldb_private::BreakpointLocation> BreakpointLocationSP;
271     typedef std::weak_ptr<lldb_private::BreakpointLocation> BreakpointLocationWP;
272     typedef std::shared_ptr<lldb_private::BreakpointResolver> BreakpointResolverSP;
273     typedef std::shared_ptr<lldb_private::Broadcaster> BroadcasterSP;
274     typedef std::shared_ptr<lldb_private::ClangExpressionVariable> ClangExpressionVariableSP;
275     typedef std::shared_ptr<lldb_private::CommandObject> CommandObjectSP;
276     typedef std::shared_ptr<lldb_private::Communication> CommunicationSP;
277     typedef std::shared_ptr<lldb_private::Connection> ConnectionSP;
278     typedef std::shared_ptr<lldb_private::CompileUnit> CompUnitSP;
279     typedef std::shared_ptr<lldb_private::DataBuffer> DataBufferSP;
280     typedef std::shared_ptr<lldb_private::DataExtractor> DataExtractorSP;
281     typedef std::shared_ptr<lldb_private::Debugger> DebuggerSP;
282     typedef std::weak_ptr<lldb_private::Debugger> DebuggerWP;
283     typedef std::shared_ptr<lldb_private::Disassembler> DisassemblerSP;
284     typedef std::shared_ptr<lldb_private::DynamicLibrary> DynamicLibrarySP;
285     typedef std::shared_ptr<lldb_private::DynamicLoader> DynamicLoaderSP;
286     typedef std::shared_ptr<lldb_private::Event> EventSP;
287     typedef std::shared_ptr<lldb_private::ExecutionContextRef> ExecutionContextRefSP;
288     typedef std::shared_ptr<lldb_private::Function> FunctionSP;
289     typedef std::shared_ptr<lldb_private::FuncUnwinders> FuncUnwindersSP;
290     typedef std::shared_ptr<lldb_private::InlineFunctionInfo> InlineFunctionInfoSP;
291     typedef std::shared_ptr<lldb_private::InputReader> InputReaderSP;
292     typedef std::shared_ptr<lldb_private::Instruction> InstructionSP;
293     typedef std::shared_ptr<lldb_private::LanguageRuntime> LanguageRuntimeSP;
294     typedef std::shared_ptr<lldb_private::LineTable> LineTableSP;
295     typedef std::shared_ptr<lldb_private::Listener> ListenerSP;
296     typedef std::shared_ptr<lldb_private::LogChannel> LogChannelSP;
297     typedef std::shared_ptr<lldb_private::Module> ModuleSP;
298     typedef std::weak_ptr<lldb_private::Module> ModuleWP;
299     typedef std::shared_ptr<lldb_private::ObjectFile> ObjectFileSP;
300     typedef std::weak_ptr<lldb_private::ObjectFile> ObjectFileWP;
301     typedef std::shared_ptr<lldb_private::OptionValue> OptionValueSP;
302     typedef std::weak_ptr<lldb_private::OptionValue> OptionValueWP;
303     typedef std::shared_ptr<lldb_private::OptionValueArch> OptionValueArchSP;
304     typedef std::shared_ptr<lldb_private::OptionValueArgs> OptionValueArgsSP;
305     typedef std::shared_ptr<lldb_private::OptionValueArray> OptionValueArraySP;
306     typedef std::shared_ptr<lldb_private::OptionValueBoolean> OptionValueBooleanSP;
307     typedef std::shared_ptr<lldb_private::OptionValueDictionary> OptionValueDictionarySP;
308     typedef std::shared_ptr<lldb_private::OptionValueFileSpec> OptionValueFileSpecSP;
309     typedef std::shared_ptr<lldb_private::OptionValueFileSpecList> OptionValueFileSpecListSP;
310     typedef std::shared_ptr<lldb_private::OptionValueFormat> OptionValueFormatSP;
311     typedef std::shared_ptr<lldb_private::OptionValuePathMappings> OptionValuePathMappingsSP;
312     typedef std::shared_ptr<lldb_private::OptionValueProperties> OptionValuePropertiesSP;
313     typedef std::shared_ptr<lldb_private::OptionValueRegex> OptionValueRegexSP;
314     typedef std::shared_ptr<lldb_private::OptionValueSInt64> OptionValueSInt64SP;
315     typedef std::shared_ptr<lldb_private::OptionValueString> OptionValueStringSP;
316     typedef std::shared_ptr<lldb_private::OptionValueUInt64> OptionValueUInt64SP;
317     typedef std::shared_ptr<lldb_private::OptionValueUUID> OptionValueUUIDSP;
318     typedef std::shared_ptr<lldb_private::Platform> PlatformSP;
319     typedef std::shared_ptr<lldb_private::Process> ProcessSP;
320     typedef std::shared_ptr<lldb_private::ProcessAttachInfo> ProcessAttachInfoSP;
321     typedef std::shared_ptr<lldb_private::ProcessLaunchInfo> ProcessLaunchInfoSP;
322     typedef std::weak_ptr<lldb_private::Process> ProcessWP;
323     typedef std::shared_ptr<lldb_private::Property> PropertySP;
324     typedef std::shared_ptr<lldb_private::RegisterContext> RegisterContextSP;
325     typedef std::shared_ptr<lldb_private::RegularExpression> RegularExpressionSP;
326     typedef std::shared_ptr<lldb_private::ScriptInterpreterObject> ScriptInterpreterObjectSP;
327 #ifndef LLDB_DISABLE_PYTHON
328     typedef std::shared_ptr<lldb_private::ScriptSummaryFormat> ScriptSummaryFormatSP;
329 #endif // #ifndef LLDB_DISABLE_PYTHON
330     typedef std::shared_ptr<lldb_private::Section> SectionSP;
331     typedef std::weak_ptr<lldb_private::Section> SectionWP;
332     typedef std::shared_ptr<lldb_private::SearchFilter> SearchFilterSP;
333     typedef std::shared_ptr<lldb_private::Settings> SettingsSP;
334     typedef std::shared_ptr<lldb_private::StackFrame> StackFrameSP;
335     typedef std::weak_ptr<lldb_private::StackFrame> StackFrameWP;
336     typedef std::shared_ptr<lldb_private::StackFrameList> StackFrameListSP;
337     typedef std::shared_ptr<lldb_private::StopInfo> StopInfoSP;
338     typedef std::shared_ptr<lldb_private::StoppointLocation> StoppointLocationSP;
339     typedef std::shared_ptr<lldb_private::Stream> StreamSP;
340     typedef std::weak_ptr<lldb_private::Stream> StreamWP;
341     typedef std::shared_ptr<lldb_private::StringSummaryFormat> StringTypeSummaryImplSP;
342     typedef std::shared_ptr<lldb_private::SymbolFile> SymbolFileSP;
343     typedef std::shared_ptr<lldb_private::SymbolFileType> SymbolFileTypeSP;
344     typedef std::weak_ptr<lldb_private::SymbolFileType> SymbolFileTypeWP;
345     typedef std::shared_ptr<lldb_private::SymbolContextSpecifier> SymbolContextSpecifierSP;
346     typedef std::shared_ptr<lldb_private::SyntheticChildren> SyntheticChildrenSP;
347     typedef std::shared_ptr<lldb_private::SyntheticChildrenFrontEnd> SyntheticChildrenFrontEndSP;
348     typedef std::shared_ptr<lldb_private::Target> TargetSP;
349     typedef std::weak_ptr<lldb_private::Target> TargetWP;
350     typedef std::shared_ptr<lldb_private::Thread> ThreadSP;
351     typedef std::weak_ptr<lldb_private::Thread> ThreadWP;
352     typedef std::shared_ptr<lldb_private::ThreadPlan> ThreadPlanSP;
353     typedef std::shared_ptr<lldb_private::ThreadPlanTracer> ThreadPlanTracerSP;
354     typedef std::shared_ptr<lldb_private::Type> TypeSP;
355     typedef std::weak_ptr<lldb_private::Type> TypeWP;
356     typedef std::shared_ptr<lldb_private::TypeCategoryImpl> TypeCategoryImplSP;
357     typedef std::shared_ptr<lldb_private::TypeImpl> TypeImplSP;
358     typedef std::shared_ptr<lldb_private::TypeFilterImpl> TypeFilterImplSP;
359     typedef std::shared_ptr<lldb_private::TypeFormatImpl> TypeFormatImplSP;
360     typedef std::shared_ptr<lldb_private::TypeNameSpecifierImpl> TypeNameSpecifierImplSP;
361     typedef std::shared_ptr<lldb_private::TypeSummaryImpl> TypeSummaryImplSP;
362 #ifndef LLDB_DISABLE_PYTHON
363     typedef std::shared_ptr<lldb_private::ScriptedSyntheticChildren> ScriptedSyntheticChildrenSP;
364 #endif
365     typedef std::shared_ptr<lldb_private::UnwindPlan> UnwindPlanSP;
366     typedef lldb_private::SharingPtr<lldb_private::ValueObject> ValueObjectSP;
367     typedef std::shared_ptr<lldb_private::Value> ValueSP;
368     typedef std::shared_ptr<lldb_private::ValueList> ValueListSP;
369     typedef std::shared_ptr<lldb_private::Variable> VariableSP;
370     typedef std::shared_ptr<lldb_private::VariableList> VariableListSP;
371     typedef std::shared_ptr<lldb_private::ValueObjectList> ValueObjectListSP;
372     typedef std::shared_ptr<lldb_private::Watchpoint> WatchpointSP;
373 
374 } // namespace lldb
375 
376 
377 #endif  // #if defined(__cplusplus)
378 #endif  // LLDB_lldb_forward_h_
379