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