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