124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- lldb-private-interfaces.h -------------------------------*- C++ -*-===//
224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//                     The LLVM Compiler Infrastructure
424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source
624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details.
724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===//
924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
10b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton#ifndef liblldb_lldb_private_interfaces_h_
11b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton#define liblldb_lldb_private_interfaces_h_
1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#if defined(__cplusplus)
1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/lldb-private.h"
1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb_private
1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
1975906e4ec98af3717e415727a8d663a4e246bb4fGreg Clayton    typedef lldb::ABISP (*ABICreateInstance) (const ArchSpec &arch);
207d4083837c5a258375fdc185d464b4ed15759a4bJim Ingham    typedef Disassembler* (*DisassemblerCreateInstance) (const ArchSpec &arch, const char *flavor);
2175c703dd8b492bad25a987b96853626641ae7246Greg Clayton    typedef DynamicLoader* (*DynamicLoaderCreateInstance) (Process* process, bool force);
22cbe61bd26db663fa3036866dc33315c6ffc37910Greg Clayton    typedef ObjectContainer* (*ObjectContainerCreateInstance) (const lldb::ModuleSP &module_sp, lldb::DataBufferSP& data_sp, lldb::offset_t data_offset, const FileSpec *file, lldb::offset_t offset, lldb::offset_t length);
2336b877d2d27f7d1890f2d13807a3addb216648e2Greg Clayton    typedef size_t (*ObjectFileGetModuleSpecifications) (const FileSpec &file, lldb::DataBufferSP& data_sp, lldb::offset_t data_offset, lldb::offset_t file_offset, lldb::offset_t length, ModuleSpecList &module_specs);
24cbe61bd26db663fa3036866dc33315c6ffc37910Greg Clayton    typedef ObjectFile* (*ObjectFileCreateInstance) (const lldb::ModuleSP &module_sp, lldb::DataBufferSP& data_sp, lldb::offset_t data_offset, const FileSpec* file, lldb::offset_t file_offset, lldb::offset_t length);
25cbe61bd26db663fa3036866dc33315c6ffc37910Greg Clayton    typedef ObjectFile* (*ObjectFileCreateMemoryInstance) (const lldb::ModuleSP &module_sp, lldb::DataBufferSP& data_sp, const lldb::ProcessSP &process_sp, lldb::addr_t offset);
2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    typedef LogChannel* (*LogChannelCreateInstance) ();
27888a7334344778d1a4edbd58b5852ae4d53ffed9Greg Clayton    typedef EmulateInstruction * (*EmulateInstructionCreateInstance) (const ArchSpec &arch, InstructionType inst_type);
2837f962e785be99dc4f0c5e9d02416992ff03bbd0Greg Clayton    typedef OperatingSystem* (*OperatingSystemCreateInstance) (Process *process, bool force);
29642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham    typedef LanguageRuntime *(*LanguageRuntimeCreateInstance) (Process *process, lldb::LanguageType language);
30b1db658333cdebca31a128be95e926d80c3c7796Greg Clayton    typedef Platform* (*PlatformCreateInstance) (bool force, const ArchSpec *arch);
3146c9a355af9b39db78c006b2a5cbf97d3c58d947Greg Clayton    typedef lldb::ProcessSP (*ProcessCreateInstance) (Target &target, Listener &listener, const FileSpec *crash_file_path);
3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    typedef SymbolFile* (*SymbolFileCreateInstance) (ObjectFile* obj_file);
33188091899842b140313b54e097f16efbe165c998Greg Clayton    typedef SymbolVendor* (*SymbolVendorCreateInstance) (const lldb::ModuleSP &module_sp, lldb_private::Stream *feedback_strm);   // Module can be NULL for default system symbol vendor
3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    typedef bool (*BreakpointHitCallback) (void *baton, StoppointCallbackContext *context, lldb::user_id_t break_id, lldb::user_id_t break_loc_id);
35f3ec4617297810223deb545cb68214ca4dd8009cJohnny Chen    typedef bool (*WatchpointHitCallback) (void *baton, StoppointCallbackContext *context, lldb::user_id_t watch_id);
36008f3dc79c762b7d240b5ad6d4fb148c5cb039caJim Ingham    typedef lldb::ThreadPlanSP (*ThreadPlanShouldStopHereCallback) (ThreadPlan *current_plan, Flags &flags, void *baton);
378badcb2503ed2e2884a48f66099c1d48494817f4Greg Clayton    typedef UnwindAssembly* (*UnwindAssemblyCreateInstance) (const ArchSpec &arch);
38b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton    typedef int (*ComparisonFunction)(const void *, const void *);
39f125250ba7bcaa2ea5ee95539a309e3fd2f8b5d7Greg Clayton    typedef bool (*CommandOverrideCallback)(void *baton, const char **argv);
4087e9d32a982a0fb76b8657a897ad5781f9a5d25eGreg Clayton    typedef void (*DebuggerInitializeCallback)(Debugger &debugger);
41b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton
4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb_private
4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif  // #if defined(__cplusplus)
4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
46b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton#endif  // liblldb_lldb_private_interfaces_h_
47