lldb-forward.h revision 9e6f6a6f394bb570c5f1f9a850ec0befe4a59fef
11b86fe063badb5f28c467ade39be0f4008688947Andreas Huber//===-- lldb-forward.h ------------------------------------------*- C++ -*-===//
21b86fe063badb5f28c467ade39be0f4008688947Andreas Huber//
31b86fe063badb5f28c467ade39be0f4008688947Andreas Huber//                     The LLVM Compiler Infrastructure
41b86fe063badb5f28c467ade39be0f4008688947Andreas Huber//
51b86fe063badb5f28c467ade39be0f4008688947Andreas Huber// This file is distributed under the University of Illinois Open Source
61b86fe063badb5f28c467ade39be0f4008688947Andreas Huber// License. See LICENSE.TXT for details.
71b86fe063badb5f28c467ade39be0f4008688947Andreas Huber//
81b86fe063badb5f28c467ade39be0f4008688947Andreas Huber//===----------------------------------------------------------------------===//
91b86fe063badb5f28c467ade39be0f4008688947Andreas Huber
101b86fe063badb5f28c467ade39be0f4008688947Andreas Huber#ifndef LLDB_lldb_forward_h_
111b86fe063badb5f28c467ade39be0f4008688947Andreas Huber#define LLDB_lldb_forward_h_
121b86fe063badb5f28c467ade39be0f4008688947Andreas Huber
131b86fe063badb5f28c467ade39be0f4008688947Andreas Huber#if defined(__cplusplus)
141b86fe063badb5f28c467ade39be0f4008688947Andreas Huber
151b86fe063badb5f28c467ade39be0f4008688947Andreas Huber#include <ciso646>  // detect C++ lib
161b86fe063badb5f28c467ade39be0f4008688947Andreas Huber
171b86fe063badb5f28c467ade39be0f4008688947Andreas Huber#ifdef _LIBCPP_VERSION
181b86fe063badb5f28c467ade39be0f4008688947Andreas Huber#include <memory>
191b86fe063badb5f28c467ade39be0f4008688947Andreas Huber#define STD_SHARED_PTR(T) std::shared_ptr<T>
201b86fe063badb5f28c467ade39be0f4008688947Andreas Huber#define STD_WEAK_PTR(T) std::weak_ptr<T>
211b86fe063badb5f28c467ade39be0f4008688947Andreas Huber#define STD_ENABLE_SHARED_FROM_THIS(T) std::enable_shared_from_this<T>
221b86fe063badb5f28c467ade39be0f4008688947Andreas Huber#define STD_STATIC_POINTER_CAST(T,V) std::static_pointer_cast<T>(V)
231b86fe063badb5f28c467ade39be0f4008688947Andreas Huber#else
241b86fe063badb5f28c467ade39be0f4008688947Andreas Huber#include <tr1/memory>
251b86fe063badb5f28c467ade39be0f4008688947Andreas Huber#define STD_SHARED_PTR(T) std::tr1::shared_ptr<T>
261b86fe063badb5f28c467ade39be0f4008688947Andreas Huber#define STD_WEAK_PTR(T) std::tr1::weak_ptr<T>
271b86fe063badb5f28c467ade39be0f4008688947Andreas Huber#define STD_ENABLE_SHARED_FROM_THIS(T) std::tr1::enable_shared_from_this<T>
281b86fe063badb5f28c467ade39be0f4008688947Andreas Huber#define STD_STATIC_POINTER_CAST(T,V) std::tr1::static_pointer_cast<T>(V)
291b86fe063badb5f28c467ade39be0f4008688947Andreas Huber#endif
301b86fe063badb5f28c467ade39be0f4008688947Andreas Huber
311b86fe063badb5f28c467ade39be0f4008688947Andreas Huber#include "lldb/Utility/SharingPtr.h"
321b86fe063badb5f28c467ade39be0f4008688947Andreas Huber
331b86fe063badb5f28c467ade39be0f4008688947Andreas Huber//----------------------------------------------------------------------
341b86fe063badb5f28c467ade39be0f4008688947Andreas Huber// lldb forward declarations
351b86fe063badb5f28c467ade39be0f4008688947Andreas Huber//----------------------------------------------------------------------
361b86fe063badb5f28c467ade39be0f4008688947Andreas Hubernamespace lldb_private {
371b86fe063badb5f28c467ade39be0f4008688947Andreas Huber
381b86fe063badb5f28c467ade39be0f4008688947Andreas Huberclass   ABI;
391b86fe063badb5f28c467ade39be0f4008688947Andreas Huberclass   Address;
401b86fe063badb5f28c467ade39be0f4008688947Andreas Huberclass   AddressImpl;
411b86fe063badb5f28c467ade39be0f4008688947Andreas Huberclass   AddressRange;
421b86fe063badb5f28c467ade39be0f4008688947Andreas Huberclass   AddressResolver;
431b86fe063badb5f28c467ade39be0f4008688947Andreas Huberclass   ArchSpec;
441b86fe063badb5f28c467ade39be0f4008688947Andreas Huberclass   Args;
451b86fe063badb5f28c467ade39be0f4008688947Andreas Huberclass   ASTResultSynthesizer;
461b86fe063badb5f28c467ade39be0f4008688947Andreas Huberclass   Baton;
471b86fe063badb5f28c467ade39be0f4008688947Andreas Huberclass   Block;
481b86fe063badb5f28c467ade39be0f4008688947Andreas Huberclass   Breakpoint;
491b86fe063badb5f28c467ade39be0f4008688947Andreas Huberclass   BreakpointID;
501b86fe063badb5f28c467ade39be0f4008688947Andreas Huberclass   BreakpointIDList;
511b86fe063badb5f28c467ade39be0f4008688947Andreas Huberclass   BreakpointList;
521b86fe063badb5f28c467ade39be0f4008688947Andreas Huberclass   BreakpointLocation;
531b86fe063badb5f28c467ade39be0f4008688947Andreas Huberclass   BreakpointLocationCollection;
541b86fe063badb5f28c467ade39be0f4008688947Andreas Huberclass   BreakpointLocationList;
551b86fe063badb5f28c467ade39be0f4008688947Andreas Huberclass   BreakpointOptions;
561b86fe063badb5f28c467ade39be0f4008688947Andreas Huberclass   BreakpointResolver;
571b86fe063badb5f28c467ade39be0f4008688947Andreas Huberclass   BreakpointSite;
581b86fe063badb5f28c467ade39be0f4008688947Andreas Huberclass   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   IRExecutionUnit;
122class   LanguageRuntime;
123class   LineTable;
124class   Listener;
125class   Log;
126class   LogChannel;
127class   Mangled;
128class   Module;
129class   ModuleList;
130class   ModuleSpec;
131class   Mutex;
132struct  NameSearchContext;
133class   ObjCLanguageRuntime;
134class   ObjectContainer;
135class   OptionGroup;
136class   OptionGroupPlatform;
137class   ObjectFile;
138class   OperatingSystem;
139class   Options;
140class   OptionValue;
141class   OptionValueArch;
142class   OptionValueArgs;
143class   OptionValueArray;
144class   OptionValueBoolean;
145class   OptionValueDictionary;
146class   OptionValueEnumeration;
147class   OptionValueFileSpec;
148class   OptionValueFileSpecList;
149class   OptionValueFormat;
150class   OptionValuePathMappings;
151class   OptionValueProperties;
152class   OptionValueRegex;
153class   OptionValueSInt64;
154class   OptionValueString;
155class   OptionValueUInt64;
156class   OptionValueUUID;
157class   NamedOption;
158class   PathMappingList;
159class   Platform;
160class   Process;
161class   ProcessAttachInfo;
162class   ProcessModID;
163class   ProcessInfo;
164class   ProcessInstanceInfo;
165class   ProcessInstanceInfoList;
166class   ProcessInstanceInfoMatch;
167class   ProcessLaunchInfo;
168class   Property;
169struct  PropertyDefinition;
170class   PythonArray;
171class   PythonDictionary;
172class   PythonInteger;
173class   PythonObject;
174class   PythonString;
175class   RegisterContext;
176class   RegisterLocation;
177class   RegisterLocationList;
178class   RegisterValue;
179class   RegularExpression;
180class   Scalar;
181class   ScriptInterpreter;
182class   ScriptInterpreterLocker;
183class   ScriptInterpreterObject;
184#ifndef LLDB_DISABLE_PYTHON
185class   ScriptInterpreterPython;
186struct  ScriptSummaryFormat;
187#endif
188class   SearchFilter;
189class   Section;
190class   SectionImpl;
191class   SectionList;
192class   Settings;
193class   SourceManager;
194class   SourceManagerImpl;
195class   StackFrame;
196class   StackFrameImpl;
197class   StackFrameList;
198class   StackID;
199class   StopInfo;
200class   Stoppoint;
201class   StoppointCallbackContext;
202class   StoppointLocation;
203class   Stream;
204template <unsigned N> class StreamBuffer;
205class   StreamFile;
206class   StreamString;
207class   StringList;
208struct  StringSummaryFormat;
209class   TypeSummaryImpl;
210class   Symbol;
211class   SymbolContext;
212class   SymbolContextList;
213class   SymbolContextScope;
214class   SymbolContextSpecifier;
215class   SymbolFile;
216class   SymbolFileType;
217class   SymbolVendor;
218class   Symtab;
219class   SyntheticChildren;
220class   SyntheticChildrenFrontEnd;
221class   TypeFilterImpl;
222#ifndef LLDB_DISABLE_PYTHON
223class   ScriptedSyntheticChildren;
224#endif
225class   Target;
226class   TargetList;
227class   Thread;
228class   ThreadList;
229class   ThreadPlan;
230class   ThreadPlanBase;
231class   ThreadPlanRunToAddress;
232class   ThreadPlanStepInstruction;
233class   ThreadPlanStepOut;
234class   ThreadPlanStepOverBreakpoint;
235class   ThreadPlanStepRange;
236class   ThreadPlanStepThrough;
237class   ThreadPlanTracer;
238class   ThreadSpec;
239class   TimeValue;
240class   Type;
241class   TypeCategoryMap;
242class   TypeImpl;
243class   TypeAndOrName;
244class   TypeList;
245class   TypeListImpl;
246class   TypeMemberImpl;
247class   TypeNameSpecifierImpl;
248class   UUID;
249class   Unwind;
250class   UnwindAssembly;
251class   UnwindPlan;
252class   UnwindTable;
253class   VMRange;
254class   Value;
255class   TypeFormatImpl;
256class   ValueList;
257class   ValueObject;
258class   ValueObjectChild;
259class   ValueObjectConstResult;
260class   ValueObjectConstResultChild;
261class   ValueObjectConstResultImpl;
262class   ValueObjectList;
263class   Variable;
264class   VariableList;
265class   Watchpoint;
266class   WatchpointList;
267class   WatchpointOptions;
268struct  LineEntry;
269
270} // namespace lldb_private
271
272//----------------------------------------------------------------------
273// lldb forward declarations
274//----------------------------------------------------------------------
275namespace lldb {
276
277    typedef STD_SHARED_PTR(lldb_private::ABI) ABISP;
278    typedef STD_SHARED_PTR(lldb_private::Baton) BatonSP;
279    typedef STD_SHARED_PTR(lldb_private::Block) BlockSP;
280    typedef STD_SHARED_PTR(lldb_private::Breakpoint) BreakpointSP;
281    typedef STD_WEAK_PTR(  lldb_private::Breakpoint) BreakpointWP;
282    typedef STD_SHARED_PTR(lldb_private::BreakpointSite) BreakpointSiteSP;
283    typedef STD_WEAK_PTR(  lldb_private::BreakpointSite) BreakpointSiteWP;
284    typedef STD_SHARED_PTR(lldb_private::BreakpointLocation) BreakpointLocationSP;
285    typedef STD_WEAK_PTR(  lldb_private::BreakpointLocation) BreakpointLocationWP;
286    typedef STD_SHARED_PTR(lldb_private::BreakpointResolver) BreakpointResolverSP;
287    typedef STD_SHARED_PTR(lldb_private::Broadcaster) BroadcasterSP;
288    typedef STD_SHARED_PTR(lldb_private::ClangExpressionVariable) ClangExpressionVariableSP;
289    typedef STD_SHARED_PTR(lldb_private::CommandObject) CommandObjectSP;
290    typedef STD_SHARED_PTR(lldb_private::Communication) CommunicationSP;
291    typedef STD_SHARED_PTR(lldb_private::Connection) ConnectionSP;
292    typedef STD_SHARED_PTR(lldb_private::CompileUnit) CompUnitSP;
293    typedef STD_SHARED_PTR(lldb_private::DataBuffer) DataBufferSP;
294    typedef STD_SHARED_PTR(lldb_private::DataExtractor) DataExtractorSP;
295    typedef STD_SHARED_PTR(lldb_private::Debugger) DebuggerSP;
296    typedef STD_WEAK_PTR(  lldb_private::Debugger) DebuggerWP;
297    typedef STD_SHARED_PTR(lldb_private::Disassembler) DisassemblerSP;
298    typedef STD_SHARED_PTR(lldb_private::DynamicLibrary) DynamicLibrarySP;
299    typedef STD_SHARED_PTR(lldb_private::DynamicLoader) DynamicLoaderSP;
300    typedef STD_SHARED_PTR(lldb_private::Event) EventSP;
301    typedef STD_SHARED_PTR(lldb_private::ExecutionContextRef) ExecutionContextRefSP;
302    typedef STD_SHARED_PTR(lldb_private::Function) FunctionSP;
303    typedef STD_SHARED_PTR(lldb_private::FuncUnwinders) FuncUnwindersSP;
304    typedef STD_SHARED_PTR(lldb_private::InlineFunctionInfo) InlineFunctionInfoSP;
305    typedef STD_SHARED_PTR(lldb_private::InputReader) InputReaderSP;
306    typedef STD_SHARED_PTR(lldb_private::Instruction) InstructionSP;
307    typedef STD_SHARED_PTR(lldb_private::LanguageRuntime) LanguageRuntimeSP;
308    typedef STD_SHARED_PTR(lldb_private::LineTable) LineTableSP;
309    typedef STD_SHARED_PTR(lldb_private::Listener) ListenerSP;
310    typedef STD_SHARED_PTR(lldb_private::LogChannel) LogChannelSP;
311    typedef STD_SHARED_PTR(lldb_private::Module) ModuleSP;
312    typedef STD_WEAK_PTR(  lldb_private::Module) ModuleWP;
313    typedef STD_SHARED_PTR(lldb_private::ObjectFile) ObjectFileSP;
314    typedef STD_WEAK_PTR(  lldb_private::ObjectFile) ObjectFileWP;
315    typedef STD_SHARED_PTR(lldb_private::OptionValue) OptionValueSP;
316    typedef STD_WEAK_PTR(  lldb_private::OptionValue) OptionValueWP;
317    typedef STD_SHARED_PTR(lldb_private::OptionValueArch) OptionValueArchSP;
318    typedef STD_SHARED_PTR(lldb_private::OptionValueArgs) OptionValueArgsSP;
319    typedef STD_SHARED_PTR(lldb_private::OptionValueArray) OptionValueArraySP;
320    typedef STD_SHARED_PTR(lldb_private::OptionValueBoolean) OptionValueBooleanSP;
321    typedef STD_SHARED_PTR(lldb_private::OptionValueDictionary) OptionValueDictionarySP;
322    typedef STD_SHARED_PTR(lldb_private::OptionValueFileSpec) OptionValueFileSpecSP;
323    typedef STD_SHARED_PTR(lldb_private::OptionValueFileSpecList) OptionValueFileSpecListSP;
324    typedef STD_SHARED_PTR(lldb_private::OptionValueFormat) OptionValueFormatSP;
325    typedef STD_SHARED_PTR(lldb_private::OptionValuePathMappings) OptionValuePathMappingsSP;
326    typedef STD_SHARED_PTR(lldb_private::OptionValueProperties) OptionValuePropertiesSP;
327    typedef STD_SHARED_PTR(lldb_private::OptionValueRegex) OptionValueRegexSP;
328    typedef STD_SHARED_PTR(lldb_private::OptionValueSInt64) OptionValueSInt64SP;
329    typedef STD_SHARED_PTR(lldb_private::OptionValueString) OptionValueStringSP;
330    typedef STD_SHARED_PTR(lldb_private::OptionValueUInt64) OptionValueUInt64SP;
331    typedef STD_SHARED_PTR(lldb_private::OptionValueUUID) OptionValueUUIDSP;
332    typedef STD_SHARED_PTR(lldb_private::Platform) PlatformSP;
333    typedef STD_SHARED_PTR(lldb_private::Process) ProcessSP;
334    typedef STD_SHARED_PTR(lldb_private::ProcessAttachInfo) ProcessAttachInfoSP;
335    typedef STD_SHARED_PTR(lldb_private::ProcessLaunchInfo) ProcessLaunchInfoSP;
336    typedef STD_WEAK_PTR(  lldb_private::Process) ProcessWP;
337    typedef STD_SHARED_PTR(lldb_private::Property) PropertySP;
338    typedef STD_SHARED_PTR(lldb_private::RegisterContext) RegisterContextSP;
339    typedef STD_SHARED_PTR(lldb_private::RegularExpression) RegularExpressionSP;
340    typedef STD_SHARED_PTR(lldb_private::ScriptInterpreterObject) ScriptInterpreterObjectSP;
341#ifndef LLDB_DISABLE_PYTHON
342    typedef STD_SHARED_PTR(lldb_private::ScriptSummaryFormat) ScriptSummaryFormatSP;
343#endif // #ifndef LLDB_DISABLE_PYTHON
344    typedef STD_SHARED_PTR(lldb_private::Section) SectionSP;
345    typedef STD_WEAK_PTR(  lldb_private::Section) SectionWP;
346    typedef STD_SHARED_PTR(lldb_private::SearchFilter) SearchFilterSP;
347    typedef STD_SHARED_PTR(lldb_private::Settings) SettingsSP;
348    typedef STD_SHARED_PTR(lldb_private::StackFrame) StackFrameSP;
349    typedef STD_WEAK_PTR(  lldb_private::StackFrame) StackFrameWP;
350    typedef STD_SHARED_PTR(lldb_private::StackFrameList) StackFrameListSP;
351    typedef STD_SHARED_PTR(lldb_private::StopInfo) StopInfoSP;
352    typedef STD_SHARED_PTR(lldb_private::StoppointLocation) StoppointLocationSP;
353    typedef STD_SHARED_PTR(lldb_private::Stream) StreamSP;
354    typedef STD_WEAK_PTR  (lldb_private::Stream) StreamWP;
355    typedef STD_SHARED_PTR(lldb_private::StringSummaryFormat) StringTypeSummaryImplSP;
356    typedef STD_SHARED_PTR(lldb_private::SymbolFile) SymbolFileSP;
357    typedef STD_SHARED_PTR(lldb_private::SymbolFileType) SymbolFileTypeSP;
358    typedef STD_WEAK_PTR(  lldb_private::SymbolFileType) SymbolFileTypeWP;
359    typedef STD_SHARED_PTR(lldb_private::SymbolContextSpecifier) SymbolContextSpecifierSP;
360    typedef STD_SHARED_PTR(lldb_private::SyntheticChildren) SyntheticChildrenSP;
361    typedef STD_SHARED_PTR(lldb_private::SyntheticChildrenFrontEnd) SyntheticChildrenFrontEndSP;
362    typedef STD_SHARED_PTR(lldb_private::Target) TargetSP;
363    typedef STD_WEAK_PTR(  lldb_private::Target) TargetWP;
364    typedef STD_SHARED_PTR(lldb_private::Thread) ThreadSP;
365    typedef STD_WEAK_PTR(  lldb_private::Thread) ThreadWP;
366    typedef STD_SHARED_PTR(lldb_private::ThreadPlan) ThreadPlanSP;
367    typedef STD_SHARED_PTR(lldb_private::ThreadPlanTracer) ThreadPlanTracerSP;
368    typedef STD_SHARED_PTR(lldb_private::Type) TypeSP;
369    typedef STD_WEAK_PTR(  lldb_private::Type) TypeWP;
370    typedef STD_SHARED_PTR(lldb_private::TypeCategoryImpl) TypeCategoryImplSP;
371    typedef STD_SHARED_PTR(lldb_private::TypeImpl) TypeImplSP;
372    typedef STD_SHARED_PTR(lldb_private::TypeFilterImpl) TypeFilterImplSP;
373    typedef STD_SHARED_PTR(lldb_private::TypeFormatImpl) TypeFormatImplSP;
374    typedef STD_SHARED_PTR(lldb_private::TypeNameSpecifierImpl) TypeNameSpecifierImplSP;
375    typedef STD_SHARED_PTR(lldb_private::TypeSummaryImpl) TypeSummaryImplSP;
376#ifndef LLDB_DISABLE_PYTHON
377    typedef STD_SHARED_PTR(lldb_private::ScriptedSyntheticChildren) ScriptedSyntheticChildrenSP;
378#endif
379    typedef STD_SHARED_PTR(lldb_private::UnwindPlan) UnwindPlanSP;
380    typedef lldb_private::SharingPtr<lldb_private::ValueObject> ValueObjectSP;
381    typedef STD_SHARED_PTR(lldb_private::Value) ValueSP;
382    typedef STD_SHARED_PTR(lldb_private::ValueList) ValueListSP;
383    typedef STD_SHARED_PTR(lldb_private::Variable) VariableSP;
384    typedef STD_SHARED_PTR(lldb_private::VariableList) VariableListSP;
385    typedef STD_SHARED_PTR(lldb_private::ValueObjectList) ValueObjectListSP;
386    typedef STD_SHARED_PTR(lldb_private::Watchpoint) WatchpointSP;
387
388} // namespace lldb
389
390
391#endif  // #if defined(__cplusplus)
392#endif  // LLDB_lldb_forward_h_
393