lldb-forward.h revision c7a4537f45ca7c2e8831f59d91a638138d9b2718
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::shared_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   ClangASTSource;
66class   ClangASTType;
67class   ClangNamespaceDecl;
68class   ClangExpression;
69class   ClangExpressionDeclMap;
70class   ClangExpressionParser;
71class   ClangExpressionVariable;
72class   ClangExpressionVariableList;
73class   ClangExpressionVariableList;
74class   ClangExpressionVariables;
75class   ClangFunction;
76class   ClangPersistentVariables;
77class   ClangUserExpression;
78class   ClangUtilityFunction;
79class   CommandInterpreter;
80class   CommandObject;
81class   CommandReturnObject;
82class   Communication;
83class   CompileUnit;
84class   Condition;
85class   Connection;
86class   ConnectionFileDescriptor;
87class   ConstString;
88class   DWARFCallFrameInfo;
89class   DWARFExpression;
90class   DataBuffer;
91class   DataEncoder;
92class   DataExtractor;
93class   Debugger;
94class   Declaration;
95class   Disassembler;
96class   DynamicLoader;
97class   EmulateInstruction;
98class   Error;
99class   Event;
100class   EventData;
101class   ExecutionContext;
102class   ExecutionContextRef;
103class   ExecutionContextRefLocker;
104class   ExecutionContextScope;
105class   FileSpec;
106class   FileSpecList;
107class   Flags;
108class   TypeCategoryImpl;
109class   FormatManager;
110class   FuncUnwinders;
111class   Function;
112class   FunctionInfo;
113class   InlineFunctionInfo;
114class   InputReader;
115class   InstanceSettings;
116class   Instruction;
117class   InstructionList;
118class   LanguageRuntime;
119class   LineTable;
120class   Listener;
121class   Log;
122class   LogChannel;
123class   Mangled;
124class   Module;
125class   ModuleList;
126class   ModuleSpec;
127class   Mutex;
128struct  NameSearchContext;
129class   ObjCLanguageRuntime;
130class   ObjectContainer;
131class   OptionGroup;
132class   OptionGroupPlatform;
133class   ObjectFile;
134class   OperatingSystem;
135class   Options;
136class   OptionValue;
137class   NamedOption;
138class   PathMappingList;
139class   Platform;
140class   Process;
141class   ProcessAttachInfo;
142class   ProcessModID;
143class   ProcessInfo;
144class   ProcessInstanceInfo;
145class   ProcessInstanceInfoList;
146class   ProcessInstanceInfoMatch;
147class   ProcessLaunchInfo;
148class   RegisterContext;
149class   RegisterLocation;
150class   RegisterLocationList;
151class   RegisterValue;
152class   RegularExpression;
153class   Scalar;
154class   ScriptInterpreter;
155class   ScriptInterpreterObject;
156#ifndef LLDB_DISABLE_PYTHON
157class   ScriptInterpreterPython;
158struct  ScriptSummaryFormat;
159#endif
160class   SearchFilter;
161class   Section;
162class   SectionImpl;
163class   SectionList;
164class   SourceManager;
165class   SourceManagerImpl;
166class   StackFrame;
167class   StackFrameImpl;
168class   StackFrameList;
169class   StackID;
170class   StopInfo;
171class   Stoppoint;
172class   StoppointCallbackContext;
173class   StoppointLocation;
174class   Stream;
175template <unsigned N> class StreamBuffer;
176class   StreamFile;
177class   StreamString;
178class   StringList;
179struct  StringSummaryFormat;
180class   TypeSummaryImpl;
181class   Symbol;
182class   SymbolContext;
183class   SymbolContextList;
184class   SymbolContextScope;
185class   SymbolContextSpecifier;
186class   SymbolFile;
187class   SymbolFileType;
188class   SymbolVendor;
189class   Symtab;
190class   SyntheticChildren;
191class   SyntheticChildrenFrontEnd;
192class   TypeFilterImpl;
193#ifndef LLDB_DISABLE_PYTHON
194class   TypeSyntheticImpl;
195#endif
196class   Target;
197class   TargetList;
198class   Thread;
199class   ThreadList;
200class   ThreadPlan;
201class   ThreadPlanBase;
202class   ThreadPlanRunToAddress;
203class   ThreadPlanStepInstruction;
204class   ThreadPlanStepOut;
205class   ThreadPlanStepOverBreakpoint;
206class   ThreadPlanStepRange;
207class   ThreadPlanStepThrough;
208class   ThreadPlanTracer;
209class   ThreadSpec;
210class   TimeValue;
211class   Type;
212class   TypeImpl;
213class   TypeAndOrName;
214class   TypeList;
215class   TypeListImpl;
216class   TypeMemberImpl;
217class   TypeNameSpecifierImpl;
218class   UUID;
219class   Unwind;
220class   UnwindAssembly;
221class   UnwindPlan;
222class   UnwindTable;
223class   UserSettingsController;
224class   VMRange;
225class   Value;
226class   TypeFormatImpl;
227class   ValueList;
228class   ValueObject;
229class   ValueObjectChild;
230class   ValueObjectConstResult;
231class   ValueObjectConstResultChild;
232class   ValueObjectConstResultImpl;
233class   ValueObjectList;
234class   Variable;
235class   VariableList;
236class   Watchpoint;
237class   WatchpointList;
238struct  LineEntry;
239
240} // namespace lldb_private
241
242//----------------------------------------------------------------------
243// lldb forward declarations
244//----------------------------------------------------------------------
245namespace lldb {
246
247    typedef STD_SHARED_PTR(lldb_private::ABI) ABISP;
248    typedef STD_SHARED_PTR(lldb_private::Baton) BatonSP;
249    typedef STD_SHARED_PTR(lldb_private::Block) BlockSP;
250    typedef STD_SHARED_PTR(lldb_private::Breakpoint) BreakpointSP;
251    typedef STD_WEAK_PTR(lldb_private::Breakpoint) BreakpointWP;
252    typedef STD_SHARED_PTR(lldb_private::BreakpointSite) BreakpointSiteSP;
253    typedef STD_WEAK_PTR(lldb_private::BreakpointSite) BreakpointSiteWP;
254    typedef STD_SHARED_PTR(lldb_private::BreakpointLocation) BreakpointLocationSP;
255    typedef STD_WEAK_PTR(lldb_private::BreakpointLocation) BreakpointLocationWP;
256    typedef STD_SHARED_PTR(lldb_private::BreakpointResolver) BreakpointResolverSP;
257    typedef STD_SHARED_PTR(lldb_private::Broadcaster) BroadcasterSP;
258    typedef STD_SHARED_PTR(lldb_private::ClangExpressionVariable) ClangExpressionVariableSP;
259    typedef STD_SHARED_PTR(lldb_private::CommandObject) CommandObjectSP;
260    typedef STD_SHARED_PTR(lldb_private::Communication) CommunicationSP;
261    typedef STD_SHARED_PTR(lldb_private::Connection) ConnectionSP;
262    typedef STD_SHARED_PTR(lldb_private::CompileUnit) CompUnitSP;
263    typedef STD_SHARED_PTR(lldb_private::DataBuffer) DataBufferSP;
264    typedef STD_SHARED_PTR(lldb_private::DataExtractor) DataExtractorSP;
265    typedef STD_SHARED_PTR(lldb_private::Debugger) DebuggerSP;
266    typedef STD_WEAK_PTR(lldb_private::Debugger) DebuggerWP;
267    typedef STD_SHARED_PTR(lldb_private::Disassembler) DisassemblerSP;
268    typedef STD_SHARED_PTR(lldb_private::DynamicLoader) DynamicLoaderSP;
269    typedef STD_SHARED_PTR(lldb_private::Event) EventSP;
270    typedef STD_SHARED_PTR(lldb_private::TypeCategoryImpl) TypeCategoryImplSP;
271    typedef STD_SHARED_PTR(lldb_private::Function) FunctionSP;
272    typedef STD_SHARED_PTR(lldb_private::InlineFunctionInfo) InlineFunctionInfoSP;
273    typedef STD_SHARED_PTR(lldb_private::InputReader) InputReaderSP;
274    typedef STD_SHARED_PTR(lldb_private::InstanceSettings) InstanceSettingsSP;
275    typedef STD_SHARED_PTR(lldb_private::Instruction) InstructionSP;
276    typedef STD_SHARED_PTR(lldb_private::LanguageRuntime) LanguageRuntimeSP;
277    typedef STD_SHARED_PTR(lldb_private::LineTable) LineTableSP;
278    typedef STD_SHARED_PTR(lldb_private::Listener) ListenerSP;
279    typedef STD_SHARED_PTR(lldb_private::Log) LogSP;
280    typedef STD_SHARED_PTR(lldb_private::LogChannel) LogChannelSP;
281    typedef STD_SHARED_PTR(lldb_private::Module) ModuleSP;
282    typedef STD_WEAK_PTR(lldb_private::Module) ModuleWP;
283    typedef STD_SHARED_PTR(lldb_private::ObjectFile) ObjectFileSP;
284    typedef STD_WEAK_PTR(lldb_private::ObjectFile) ObjectFileWP;
285    typedef STD_SHARED_PTR(lldb_private::OptionValue) OptionValueSP;
286    typedef STD_SHARED_PTR(lldb_private::Platform) PlatformSP;
287    typedef STD_SHARED_PTR(lldb_private::Process) ProcessSP;
288    typedef STD_SHARED_PTR(lldb_private::ProcessAttachInfo) ProcessAttachInfoSP;
289    typedef STD_SHARED_PTR(lldb_private::ProcessLaunchInfo) ProcessLaunchInfoSP;
290    typedef STD_WEAK_PTR(lldb_private::Process) ProcessWP;
291    typedef STD_SHARED_PTR(lldb_private::RegisterContext) RegisterContextSP;
292    typedef STD_SHARED_PTR(lldb_private::RegularExpression) RegularExpressionSP;
293    typedef STD_SHARED_PTR(lldb_private::Section) SectionSP;
294    typedef STD_WEAK_PTR(lldb_private::Section) SectionWP;
295    typedef STD_SHARED_PTR(lldb_private::SearchFilter) SearchFilterSP;
296    typedef STD_SHARED_PTR(lldb_private::ScriptInterpreterObject) ScriptInterpreterObjectSP;
297#ifndef LLDB_DISABLE_PYTHON
298    typedef STD_SHARED_PTR(lldb_private::ScriptSummaryFormat) ScriptSummaryFormatSP;
299#endif // #ifndef LLDB_DISABLE_PYTHON
300    typedef STD_SHARED_PTR(lldb_private::StackFrame) StackFrameSP;
301    typedef STD_WEAK_PTR(lldb_private::StackFrame) StackFrameWP;
302    typedef STD_SHARED_PTR(lldb_private::StackFrameList) StackFrameListSP;
303    typedef STD_SHARED_PTR(lldb_private::StopInfo) StopInfoSP;
304    typedef STD_SHARED_PTR(lldb_private::StoppointLocation) StoppointLocationSP;
305    typedef STD_SHARED_PTR(lldb_private::Stream) StreamSP;
306    typedef STD_SHARED_PTR(lldb_private::StringSummaryFormat) StringTypeSummaryImplSP;
307    typedef STD_SHARED_PTR(lldb_private::TypeSummaryImpl) TypeSummaryImplSP;
308    typedef STD_SHARED_PTR(lldb_private::TypeNameSpecifierImpl) TypeNameSpecifierImplSP;
309    typedef STD_SHARED_PTR(lldb_private::SymbolFile) SymbolFileSP;
310    typedef STD_SHARED_PTR(lldb_private::SymbolFileType) SymbolFileTypeSP;
311    typedef STD_WEAK_PTR(lldb_private::SymbolFileType) SymbolFileTypeWP;
312    typedef STD_SHARED_PTR(lldb_private::SymbolContextSpecifier) SymbolContextSpecifierSP;
313    typedef STD_SHARED_PTR(lldb_private::SyntheticChildren) SyntheticChildrenSP;
314    typedef STD_SHARED_PTR(lldb_private::SyntheticChildrenFrontEnd) SyntheticChildrenFrontEndSP;
315    typedef STD_SHARED_PTR(lldb_private::TypeFilterImpl) TypeFilterImplSP;
316#ifndef LLDB_DISABLE_PYTHON
317    typedef STD_SHARED_PTR(lldb_private::TypeSyntheticImpl) TypeSyntheticImplSP;
318#endif
319    typedef STD_SHARED_PTR(lldb_private::Target) TargetSP;
320    typedef STD_WEAK_PTR(lldb_private::Target) TargetWP;
321    typedef STD_SHARED_PTR(lldb_private::Thread) ThreadSP;
322    typedef STD_WEAK_PTR(lldb_private::Thread) ThreadWP;
323    typedef STD_SHARED_PTR(lldb_private::ThreadPlan) ThreadPlanSP;
324    typedef STD_SHARED_PTR(lldb_private::ThreadPlanTracer) ThreadPlanTracerSP;
325    typedef STD_SHARED_PTR(lldb_private::Type) TypeSP;
326    typedef STD_WEAK_PTR(lldb_private::Type) TypeWP;
327    typedef STD_SHARED_PTR(lldb_private::TypeImpl) TypeImplSP;
328    typedef STD_SHARED_PTR(lldb_private::FuncUnwinders) FuncUnwindersSP;
329    typedef STD_SHARED_PTR(lldb_private::UserSettingsController) UserSettingsControllerSP;
330    typedef STD_WEAK_PTR(lldb_private::UserSettingsController) UserSettingsControllerWP;
331    typedef STD_SHARED_PTR(lldb_private::UnwindPlan) UnwindPlanSP;
332    typedef lldb_private::SharingPtr<lldb_private::ValueObject> ValueObjectSP;
333    typedef STD_SHARED_PTR(lldb_private::Value) ValueSP;
334    typedef STD_SHARED_PTR(lldb_private::TypeFormatImpl) TypeFormatImplSP;
335    typedef STD_SHARED_PTR(lldb_private::ValueList) ValueListSP;
336    typedef STD_SHARED_PTR(lldb_private::Variable) VariableSP;
337    typedef STD_SHARED_PTR(lldb_private::VariableList) VariableListSP;
338    typedef STD_SHARED_PTR(lldb_private::ValueObjectList) ValueObjectListSP;
339    typedef STD_SHARED_PTR(lldb_private::Watchpoint) WatchpointSP;
340
341} // namespace lldb
342
343
344#endif  // #if defined(__cplusplus)
345#endif  // LLDB_lldb_forward_h_
346