lldb-forward.h revision 598df88bd6fc33c6fb330bc859bdc277795501f3
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; 179class 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; 226struct 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