PluginManager.h revision b5a8f1498e1ddaeed5187a878d57ea0b74af9c26
1//===-- PluginManager.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 11#ifndef liblldb_PluginManager_h_ 12#define liblldb_PluginManager_h_ 13 14#include "lldb/lldb-private.h" 15#include "lldb/Host/FileSpec.h" 16 17namespace lldb_private { 18 19class PluginManager 20{ 21public: 22 static void 23 Initialize (); 24 25 static void 26 Terminate (); 27 28 //------------------------------------------------------------------ 29 // ABI 30 //------------------------------------------------------------------ 31 static bool 32 RegisterPlugin (const char *name, 33 const char *description, 34 ABICreateInstance create_callback); 35 36 static bool 37 UnregisterPlugin (ABICreateInstance create_callback); 38 39 static ABICreateInstance 40 GetABICreateCallbackAtIndex (uint32_t idx); 41 42 static ABICreateInstance 43 GetABICreateCallbackForPluginName (const char *name); 44 45 46 //------------------------------------------------------------------ 47 // Disassembler 48 //------------------------------------------------------------------ 49 static bool 50 RegisterPlugin (const char *name, 51 const char *description, 52 DisassemblerCreateInstance create_callback); 53 54 static bool 55 UnregisterPlugin (DisassemblerCreateInstance create_callback); 56 57 static DisassemblerCreateInstance 58 GetDisassemblerCreateCallbackAtIndex (uint32_t idx); 59 60 static DisassemblerCreateInstance 61 GetDisassemblerCreateCallbackForPluginName (const char *name); 62 63 64 //------------------------------------------------------------------ 65 // DynamicLoader 66 //------------------------------------------------------------------ 67 static bool 68 RegisterPlugin (const char *name, 69 const char *description, 70 DynamicLoaderCreateInstance create_callback); 71 72 static bool 73 UnregisterPlugin (DynamicLoaderCreateInstance create_callback); 74 75 static DynamicLoaderCreateInstance 76 GetDynamicLoaderCreateCallbackAtIndex (uint32_t idx); 77 78 static DynamicLoaderCreateInstance 79 GetDynamicLoaderCreateCallbackForPluginName (const char *name); 80 81 82 //------------------------------------------------------------------ 83 // EmulateInstruction 84 //------------------------------------------------------------------ 85 static bool 86 RegisterPlugin (const char *name, 87 const char *description, 88 EmulateInstructionCreateInstance create_callback); 89 90 static bool 91 UnregisterPlugin (EmulateInstructionCreateInstance create_callback); 92 93 static EmulateInstructionCreateInstance 94 GetEmulateInstructionCreateCallbackAtIndex (uint32_t idx); 95 96 static EmulateInstructionCreateInstance 97 GetEmulateInstructionCreateCallbackForPluginName (const char *name); 98 99 //------------------------------------------------------------------ 100 // OperatingSystem 101 //------------------------------------------------------------------ 102 static bool 103 RegisterPlugin (const char *name, 104 const char *description, 105 OperatingSystemCreateInstance create_callback); 106 107 static bool 108 UnregisterPlugin (OperatingSystemCreateInstance create_callback); 109 110 static OperatingSystemCreateInstance 111 GetOperatingSystemCreateCallbackAtIndex (uint32_t idx); 112 113 static OperatingSystemCreateInstance 114 GetOperatingSystemCreateCallbackForPluginName (const char *name); 115 116 //------------------------------------------------------------------ 117 // LanguageRuntime 118 //------------------------------------------------------------------ 119 static bool 120 RegisterPlugin (const char *name, 121 const char *description, 122 LanguageRuntimeCreateInstance create_callback); 123 124 static bool 125 UnregisterPlugin (LanguageRuntimeCreateInstance create_callback); 126 127 static LanguageRuntimeCreateInstance 128 GetLanguageRuntimeCreateCallbackAtIndex (uint32_t idx); 129 130 static LanguageRuntimeCreateInstance 131 GetLanguageRuntimeCreateCallbackForPluginName (const char *name); 132 133 134 //------------------------------------------------------------------ 135 // ObjectFile 136 //------------------------------------------------------------------ 137 static bool 138 RegisterPlugin (const char *name, 139 const char *description, 140 ObjectFileCreateInstance create_callback, 141 ObjectFileCreateMemoryInstance create_memory_callback); 142 143 static bool 144 UnregisterPlugin (ObjectFileCreateInstance create_callback); 145 146 static ObjectFileCreateInstance 147 GetObjectFileCreateCallbackAtIndex (uint32_t idx); 148 149 static ObjectFileCreateMemoryInstance 150 GetObjectFileCreateMemoryCallbackAtIndex (uint32_t idx); 151 152 static ObjectFileCreateInstance 153 GetObjectFileCreateCallbackForPluginName (const char *name); 154 155 static ObjectFileCreateMemoryInstance 156 GetObjectFileCreateMemoryCallbackForPluginName (const char *name); 157 158 159 //------------------------------------------------------------------ 160 // ObjectContainer 161 //------------------------------------------------------------------ 162 static bool 163 RegisterPlugin (const char *name, 164 const char *description, 165 ObjectContainerCreateInstance create_callback); 166 167 static bool 168 UnregisterPlugin (ObjectContainerCreateInstance create_callback); 169 170 static ObjectContainerCreateInstance 171 GetObjectContainerCreateCallbackAtIndex (uint32_t idx); 172 173 static ObjectContainerCreateInstance 174 GetObjectContainerCreateCallbackForPluginName (const char *name); 175 176 //------------------------------------------------------------------ 177 // LogChannel 178 //------------------------------------------------------------------ 179 static bool 180 RegisterPlugin (const char *name, 181 const char *description, 182 LogChannelCreateInstance create_callback); 183 184 static bool 185 UnregisterPlugin (LogChannelCreateInstance create_callback); 186 187 static LogChannelCreateInstance 188 GetLogChannelCreateCallbackAtIndex (uint32_t idx); 189 190 static LogChannelCreateInstance 191 GetLogChannelCreateCallbackForPluginName (const char *name); 192 193 static const char * 194 GetLogChannelCreateNameAtIndex (uint32_t idx); 195 196 //------------------------------------------------------------------ 197 // Platform 198 //------------------------------------------------------------------ 199 static bool 200 RegisterPlugin (const char *name, 201 const char *description, 202 PlatformCreateInstance create_callback); 203 204 static bool 205 UnregisterPlugin (PlatformCreateInstance create_callback); 206 207 static PlatformCreateInstance 208 GetPlatformCreateCallbackAtIndex (uint32_t idx); 209 210 static PlatformCreateInstance 211 GetPlatformCreateCallbackForPluginName (const char *name); 212 213 static const char * 214 GetPlatformPluginNameAtIndex (uint32_t idx); 215 216 static const char * 217 GetPlatformPluginDescriptionAtIndex (uint32_t idx); 218 219 static uint32_t 220 AutoCompletePlatformName (const char *partial_name, 221 StringList &matches); 222 //------------------------------------------------------------------ 223 // Process 224 //------------------------------------------------------------------ 225 static bool 226 RegisterPlugin (const char *name, 227 const char *description, 228 ProcessCreateInstance create_callback); 229 230 static bool 231 UnregisterPlugin (ProcessCreateInstance create_callback); 232 233 static ProcessCreateInstance 234 GetProcessCreateCallbackAtIndex (uint32_t idx); 235 236 static ProcessCreateInstance 237 GetProcessCreateCallbackForPluginName (const char *name); 238 239 static const char * 240 GetProcessPluginNameAtIndex (uint32_t idx); 241 242 static const char * 243 GetProcessPluginDescriptionAtIndex (uint32_t idx); 244 245 //------------------------------------------------------------------ 246 // SymbolFile 247 //------------------------------------------------------------------ 248 static bool 249 RegisterPlugin (const char *name, 250 const char *description, 251 SymbolFileCreateInstance create_callback); 252 253 static bool 254 UnregisterPlugin (SymbolFileCreateInstance create_callback); 255 256 static SymbolFileCreateInstance 257 GetSymbolFileCreateCallbackAtIndex (uint32_t idx); 258 259 static SymbolFileCreateInstance 260 GetSymbolFileCreateCallbackForPluginName (const char *name); 261 262 263 //------------------------------------------------------------------ 264 // SymbolVendor 265 //------------------------------------------------------------------ 266 static bool 267 RegisterPlugin (const char *name, 268 const char *description, 269 SymbolVendorCreateInstance create_callback); 270 271 static bool 272 UnregisterPlugin (SymbolVendorCreateInstance create_callback); 273 274 static SymbolVendorCreateInstance 275 GetSymbolVendorCreateCallbackAtIndex (uint32_t idx); 276 277 static SymbolVendorCreateInstance 278 GetSymbolVendorCreateCallbackForPluginName (const char *name); 279 280 //------------------------------------------------------------------ 281 // UnwindAssembly 282 //------------------------------------------------------------------ 283 static bool 284 RegisterPlugin (const char *name, 285 const char *description, 286 UnwindAssemblyCreateInstance create_callback); 287 288 static bool 289 UnregisterPlugin (UnwindAssemblyCreateInstance create_callback); 290 291 static UnwindAssemblyCreateInstance 292 GetUnwindAssemblyCreateCallbackAtIndex (uint32_t idx); 293 294 static UnwindAssemblyCreateInstance 295 GetUnwindAssemblyCreateCallbackForPluginName (const char *name); 296 297}; 298 299 300} // namespace lldb_private 301 302#endif // liblldb_PluginManager_h_ 303