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