blob: 08143dc39731473a7d98f1863174083b030d74f2 [file] [log] [blame]
//===-- lldb-forward.h ------------------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#ifndef LLDB_lldb_forward_h_
#define LLDB_lldb_forward_h_
#if defined(__cplusplus)
#include <ciso646> // detect C++ lib
#ifdef _LIBCPP_VERSION
#include <memory>
#define STD_SHARED_PTR(T) std::shared_ptr<T>
#define STD_WEAK_PTR(T) std::weak_ptr<T>
#define STD_ENABLE_SHARED_FROM_THIS(T) std::enable_shared_from_this<T>
#define STD_STATIC_POINTER_CAST(T,V) std::static_pointer_cast<T>(V)
#else
#include <tr1/memory>
#define STD_SHARED_PTR(T) std::tr1::shared_ptr<T>
#define STD_WEAK_PTR(T) std::tr1::weak_ptr<T>
#define STD_ENABLE_SHARED_FROM_THIS(T) std::tr1::enable_shared_from_this<T>
#define STD_STATIC_POINTER_CAST(T,V) std::tr1::static_pointer_cast<T>(V)
#endif
#include "lldb/Utility/SharingPtr.h"
//----------------------------------------------------------------------
// lldb forward declarations
//----------------------------------------------------------------------
namespace lldb_private {
class ABI;
class Address;
class AddressImpl;
class AddressRange;
class AddressResolver;
class ArchSpec;
class Args;
class ASTResultSynthesizer;
class Baton;
class Block;
class Breakpoint;
class BreakpointID;
class BreakpointIDList;
class BreakpointList;
class BreakpointLocation;
class BreakpointLocationCollection;
class BreakpointLocationList;
class BreakpointOptions;
class BreakpointResolver;
class BreakpointSite;
class BreakpointSiteList;
class BroadcastEventSpec;
class Broadcaster;
class BroadcasterManager;
class CPPLanguageRuntime;
class ClangASTContext;
class ClangASTImporter;
class ClangASTSource;
class ClangASTType;
class ClangNamespaceDecl;
class ClangExpression;
class ClangExpressionDeclMap;
class ClangExpressionParser;
class ClangExpressionVariable;
class ClangExpressionVariableList;
class ClangExpressionVariableList;
class ClangExpressionVariables;
class ClangFunction;
class ClangPersistentVariables;
class ClangUserExpression;
class ClangUtilityFunction;
class CommandInterpreter;
class CommandObject;
class CommandReturnObject;
class Communication;
class CompileUnit;
class Condition;
class Connection;
class ConnectionFileDescriptor;
class ConstString;
class DWARFCallFrameInfo;
class DWARFExpression;
class DataBuffer;
class DataEncoder;
class DataExtractor;
class Debugger;
class Declaration;
class Disassembler;
class DynamicLoader;
class EmulateInstruction;
class Error;
class Event;
class EventData;
class ExecutionContext;
class ExecutionContextRef;
class ExecutionContextRefLocker;
class ExecutionContextScope;
class FileSpec;
class FileSpecList;
class Flags;
class TypeCategoryImpl;
class FormatManager;
class FuncUnwinders;
class Function;
class FunctionInfo;
class InlineFunctionInfo;
class InputReader;
class InstanceSettings;
class Instruction;
class InstructionList;
class LanguageRuntime;
class LineTable;
class Listener;
class Log;
class LogChannel;
class Mangled;
class Module;
class ModuleList;
class ModuleSpec;
class Mutex;
struct NameSearchContext;
class ObjCLanguageRuntime;
class ObjectContainer;
class OptionGroup;
class OptionGroupPlatform;
class ObjectFile;
class OperatingSystem;
class Options;
class OptionValue;
class NamedOption;
class PathMappingList;
class Platform;
class Process;
class ProcessAttachInfo;
class ProcessModID;
class ProcessInfo;
class ProcessInstanceInfo;
class ProcessInstanceInfoList;
class ProcessInstanceInfoMatch;
class ProcessLaunchInfo;
class RegisterContext;
class RegisterLocation;
class RegisterLocationList;
class RegisterValue;
class RegularExpression;
class Scalar;
class ScriptInterpreter;
class ScriptInterpreterObject;
#ifndef LLDB_DISABLE_PYTHON
class ScriptInterpreterPython;
struct ScriptSummaryFormat;
#endif
class SearchFilter;
class Section;
class SectionImpl;
class SectionList;
class SourceManager;
class SourceManagerImpl;
class StackFrame;
class StackFrameImpl;
class StackFrameList;
class StackID;
class StopInfo;
class Stoppoint;
class StoppointCallbackContext;
class StoppointLocation;
class Stream;
template <unsigned N> class StreamBuffer;
class StreamFile;
class StreamString;
class StringList;
struct StringSummaryFormat;
class TypeSummaryImpl;
class Symbol;
class SymbolContext;
class SymbolContextList;
class SymbolContextScope;
class SymbolContextSpecifier;
class SymbolFile;
class SymbolFileType;
class SymbolVendor;
class Symtab;
class SyntheticChildren;
class SyntheticChildrenFrontEnd;
class TypeFilterImpl;
#ifndef LLDB_DISABLE_PYTHON
class TypeSyntheticImpl;
#endif
class Target;
class TargetList;
class Thread;
class ThreadList;
class ThreadPlan;
class ThreadPlanBase;
class ThreadPlanRunToAddress;
class ThreadPlanStepInstruction;
class ThreadPlanStepOut;
class ThreadPlanStepOverBreakpoint;
class ThreadPlanStepRange;
class ThreadPlanStepThrough;
class ThreadPlanTracer;
class ThreadSpec;
class TimeValue;
class Type;
class TypeImpl;
class TypeAndOrName;
class TypeList;
class TypeListImpl;
class TypeMemberImpl;
class TypeNameSpecifierImpl;
class UUID;
class Unwind;
class UnwindAssembly;
class UnwindPlan;
class UnwindTable;
class UserSettingsController;
class VMRange;
class Value;
class TypeFormatImpl;
class ValueList;
class ValueObject;
class ValueObjectChild;
class ValueObjectConstResult;
class ValueObjectConstResultChild;
class ValueObjectConstResultImpl;
class ValueObjectList;
class Variable;
class VariableList;
class Watchpoint;
class WatchpointList;
struct LineEntry;
} // namespace lldb_private
//----------------------------------------------------------------------
// lldb forward declarations
//----------------------------------------------------------------------
namespace lldb {
typedef STD_SHARED_PTR(lldb_private::ABI) ABISP;
typedef STD_SHARED_PTR(lldb_private::Baton) BatonSP;
typedef STD_SHARED_PTR(lldb_private::Block) BlockSP;
typedef STD_SHARED_PTR(lldb_private::Breakpoint) BreakpointSP;
typedef STD_WEAK_PTR(lldb_private::Breakpoint) BreakpointWP;
typedef STD_SHARED_PTR(lldb_private::BreakpointSite) BreakpointSiteSP;
typedef STD_WEAK_PTR(lldb_private::BreakpointSite) BreakpointSiteWP;
typedef STD_SHARED_PTR(lldb_private::BreakpointLocation) BreakpointLocationSP;
typedef STD_WEAK_PTR(lldb_private::BreakpointLocation) BreakpointLocationWP;
typedef STD_SHARED_PTR(lldb_private::BreakpointResolver) BreakpointResolverSP;
typedef STD_SHARED_PTR(lldb_private::Broadcaster) BroadcasterSP;
typedef STD_SHARED_PTR(lldb_private::ClangExpressionVariable) ClangExpressionVariableSP;
typedef STD_SHARED_PTR(lldb_private::CommandObject) CommandObjectSP;
typedef STD_SHARED_PTR(lldb_private::Communication) CommunicationSP;
typedef STD_SHARED_PTR(lldb_private::Connection) ConnectionSP;
typedef STD_SHARED_PTR(lldb_private::CompileUnit) CompUnitSP;
typedef STD_SHARED_PTR(lldb_private::DataBuffer) DataBufferSP;
typedef STD_SHARED_PTR(lldb_private::DataExtractor) DataExtractorSP;
typedef STD_SHARED_PTR(lldb_private::Debugger) DebuggerSP;
typedef STD_WEAK_PTR(lldb_private::Debugger) DebuggerWP;
typedef STD_SHARED_PTR(lldb_private::Disassembler) DisassemblerSP;
typedef STD_SHARED_PTR(lldb_private::DynamicLoader) DynamicLoaderSP;
typedef STD_SHARED_PTR(lldb_private::Event) EventSP;
typedef STD_SHARED_PTR(lldb_private::ExecutionContextRef) ExecutionContextRefSP;
typedef STD_SHARED_PTR(lldb_private::TypeCategoryImpl) TypeCategoryImplSP;
typedef STD_SHARED_PTR(lldb_private::Function) FunctionSP;
typedef STD_SHARED_PTR(lldb_private::InlineFunctionInfo) InlineFunctionInfoSP;
typedef STD_SHARED_PTR(lldb_private::InputReader) InputReaderSP;
typedef STD_SHARED_PTR(lldb_private::InstanceSettings) InstanceSettingsSP;
typedef STD_SHARED_PTR(lldb_private::Instruction) InstructionSP;
typedef STD_SHARED_PTR(lldb_private::LanguageRuntime) LanguageRuntimeSP;
typedef STD_SHARED_PTR(lldb_private::LineTable) LineTableSP;
typedef STD_SHARED_PTR(lldb_private::Listener) ListenerSP;
typedef STD_SHARED_PTR(lldb_private::Log) LogSP;
typedef STD_SHARED_PTR(lldb_private::LogChannel) LogChannelSP;
typedef STD_SHARED_PTR(lldb_private::Module) ModuleSP;
typedef STD_WEAK_PTR(lldb_private::Module) ModuleWP;
typedef STD_SHARED_PTR(lldb_private::ObjectFile) ObjectFileSP;
typedef STD_WEAK_PTR(lldb_private::ObjectFile) ObjectFileWP;
typedef STD_SHARED_PTR(lldb_private::OptionValue) OptionValueSP;
typedef STD_SHARED_PTR(lldb_private::Platform) PlatformSP;
typedef STD_SHARED_PTR(lldb_private::Process) ProcessSP;
typedef STD_SHARED_PTR(lldb_private::ProcessAttachInfo) ProcessAttachInfoSP;
typedef STD_SHARED_PTR(lldb_private::ProcessLaunchInfo) ProcessLaunchInfoSP;
typedef STD_WEAK_PTR(lldb_private::Process) ProcessWP;
typedef STD_SHARED_PTR(lldb_private::RegisterContext) RegisterContextSP;
typedef STD_SHARED_PTR(lldb_private::RegularExpression) RegularExpressionSP;
typedef STD_SHARED_PTR(lldb_private::Section) SectionSP;
typedef STD_WEAK_PTR(lldb_private::Section) SectionWP;
typedef STD_SHARED_PTR(lldb_private::SearchFilter) SearchFilterSP;
typedef STD_SHARED_PTR(lldb_private::ScriptInterpreterObject) ScriptInterpreterObjectSP;
#ifndef LLDB_DISABLE_PYTHON
typedef STD_SHARED_PTR(lldb_private::ScriptSummaryFormat) ScriptSummaryFormatSP;
#endif // #ifndef LLDB_DISABLE_PYTHON
typedef STD_SHARED_PTR(lldb_private::StackFrame) StackFrameSP;
typedef STD_WEAK_PTR(lldb_private::StackFrame) StackFrameWP;
typedef STD_SHARED_PTR(lldb_private::StackFrameList) StackFrameListSP;
typedef STD_SHARED_PTR(lldb_private::StopInfo) StopInfoSP;
typedef STD_SHARED_PTR(lldb_private::StoppointLocation) StoppointLocationSP;
typedef STD_SHARED_PTR(lldb_private::Stream) StreamSP;
typedef STD_SHARED_PTR(lldb_private::StringSummaryFormat) StringTypeSummaryImplSP;
typedef STD_SHARED_PTR(lldb_private::TypeSummaryImpl) TypeSummaryImplSP;
typedef STD_SHARED_PTR(lldb_private::TypeNameSpecifierImpl) TypeNameSpecifierImplSP;
typedef STD_SHARED_PTR(lldb_private::SymbolFile) SymbolFileSP;
typedef STD_SHARED_PTR(lldb_private::SymbolFileType) SymbolFileTypeSP;
typedef STD_WEAK_PTR(lldb_private::SymbolFileType) SymbolFileTypeWP;
typedef STD_SHARED_PTR(lldb_private::SymbolContextSpecifier) SymbolContextSpecifierSP;
typedef STD_SHARED_PTR(lldb_private::SyntheticChildren) SyntheticChildrenSP;
typedef STD_SHARED_PTR(lldb_private::SyntheticChildrenFrontEnd) SyntheticChildrenFrontEndSP;
typedef STD_SHARED_PTR(lldb_private::TypeFilterImpl) TypeFilterImplSP;
#ifndef LLDB_DISABLE_PYTHON
typedef STD_SHARED_PTR(lldb_private::TypeSyntheticImpl) TypeSyntheticImplSP;
#endif
typedef STD_SHARED_PTR(lldb_private::Target) TargetSP;
typedef STD_WEAK_PTR(lldb_private::Target) TargetWP;
typedef STD_SHARED_PTR(lldb_private::Thread) ThreadSP;
typedef STD_WEAK_PTR(lldb_private::Thread) ThreadWP;
typedef STD_SHARED_PTR(lldb_private::ThreadPlan) ThreadPlanSP;
typedef STD_SHARED_PTR(lldb_private::ThreadPlanTracer) ThreadPlanTracerSP;
typedef STD_SHARED_PTR(lldb_private::Type) TypeSP;
typedef STD_WEAK_PTR(lldb_private::Type) TypeWP;
typedef STD_SHARED_PTR(lldb_private::TypeImpl) TypeImplSP;
typedef STD_SHARED_PTR(lldb_private::FuncUnwinders) FuncUnwindersSP;
typedef STD_SHARED_PTR(lldb_private::UserSettingsController) UserSettingsControllerSP;
typedef STD_WEAK_PTR(lldb_private::UserSettingsController) UserSettingsControllerWP;
typedef STD_SHARED_PTR(lldb_private::UnwindPlan) UnwindPlanSP;
typedef lldb_private::SharingPtr<lldb_private::ValueObject> ValueObjectSP;
typedef STD_SHARED_PTR(lldb_private::Value) ValueSP;
typedef STD_SHARED_PTR(lldb_private::TypeFormatImpl) TypeFormatImplSP;
typedef STD_SHARED_PTR(lldb_private::ValueList) ValueListSP;
typedef STD_SHARED_PTR(lldb_private::Variable) VariableSP;
typedef STD_SHARED_PTR(lldb_private::VariableList) VariableListSP;
typedef STD_SHARED_PTR(lldb_private::ValueObjectList) ValueObjectListSP;
typedef STD_SHARED_PTR(lldb_private::Watchpoint) WatchpointSP;
} // namespace lldb
#endif // #if defined(__cplusplus)
#endif // LLDB_lldb_forward_h_