PluginManager.h revision 8badcb2503ed2e2884a48f66099c1d48494817f4
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 // LanguageRuntime 101 //------------------------------------------------------------------ 102 static bool 103 RegisterPlugin (const char *name, 104 const char *description, 105 LanguageRuntimeCreateInstance create_callback); 106 107 static bool 108 UnregisterPlugin (LanguageRuntimeCreateInstance create_callback); 109 110 static LanguageRuntimeCreateInstance 111 GetLanguageRuntimeCreateCallbackAtIndex (uint32_t idx); 112 113 static LanguageRuntimeCreateInstance 114 GetLanguageRuntimeCreateCallbackForPluginName (const char *name); 115 116 117 //------------------------------------------------------------------ 118 // ObjectFile 119 //------------------------------------------------------------------ 120 static bool 121 RegisterPlugin (const char *name, 122 const char *description, 123 ObjectFileCreateInstance create_callback); 124 125 static bool 126 UnregisterPlugin (ObjectFileCreateInstance create_callback); 127 128 static ObjectFileCreateInstance 129 GetObjectFileCreateCallbackAtIndex (uint32_t idx); 130 131 static ObjectFileCreateInstance 132 GetObjectFileCreateCallbackForPluginName (const char *name); 133 134 135 //------------------------------------------------------------------ 136 // ObjectContainer 137 //------------------------------------------------------------------ 138 static bool 139 RegisterPlugin (const char *name, 140 const char *description, 141 ObjectContainerCreateInstance create_callback); 142 143 static bool 144 UnregisterPlugin (ObjectContainerCreateInstance create_callback); 145 146 static ObjectContainerCreateInstance 147 GetObjectContainerCreateCallbackAtIndex (uint32_t idx); 148 149 static ObjectContainerCreateInstance 150 GetObjectContainerCreateCallbackForPluginName (const char *name); 151 152 //------------------------------------------------------------------ 153 // LogChannel 154 //------------------------------------------------------------------ 155 static bool 156 RegisterPlugin (const char *name, 157 const char *description, 158 LogChannelCreateInstance create_callback); 159 160 static bool 161 UnregisterPlugin (LogChannelCreateInstance create_callback); 162 163 static LogChannelCreateInstance 164 GetLogChannelCreateCallbackAtIndex (uint32_t idx); 165 166 static LogChannelCreateInstance 167 GetLogChannelCreateCallbackForPluginName (const char *name); 168 169 static const char * 170 GetLogChannelCreateNameAtIndex (uint32_t idx); 171 172 //------------------------------------------------------------------ 173 // Platform 174 //------------------------------------------------------------------ 175 static bool 176 RegisterPlugin (const char *name, 177 const char *description, 178 PlatformCreateInstance create_callback); 179 180 static bool 181 UnregisterPlugin (PlatformCreateInstance create_callback); 182 183 static PlatformCreateInstance 184 GetPlatformCreateCallbackAtIndex (uint32_t idx); 185 186 static PlatformCreateInstance 187 GetPlatformCreateCallbackForPluginName (const char *name); 188 189 static const char * 190 GetPlatformPluginNameAtIndex (uint32_t idx); 191 192 static const char * 193 GetPlatformPluginDescriptionAtIndex (uint32_t idx); 194 195 static uint32_t 196 AutoCompletePlatformName (const char *partial_name, 197 StringList &matches); 198 //------------------------------------------------------------------ 199 // Process 200 //------------------------------------------------------------------ 201 static bool 202 RegisterPlugin (const char *name, 203 const char *description, 204 ProcessCreateInstance create_callback); 205 206 static bool 207 UnregisterPlugin (ProcessCreateInstance create_callback); 208 209 static ProcessCreateInstance 210 GetProcessCreateCallbackAtIndex (uint32_t idx); 211 212 static ProcessCreateInstance 213 GetProcessCreateCallbackForPluginName (const char *name); 214 215 static const char * 216 GetProcessPluginNameAtIndex (uint32_t idx); 217 218 static const char * 219 GetProcessPluginDescriptionAtIndex (uint32_t idx); 220 221 //------------------------------------------------------------------ 222 // SymbolFile 223 //------------------------------------------------------------------ 224 static bool 225 RegisterPlugin (const char *name, 226 const char *description, 227 SymbolFileCreateInstance create_callback); 228 229 static bool 230 UnregisterPlugin (SymbolFileCreateInstance create_callback); 231 232 static SymbolFileCreateInstance 233 GetSymbolFileCreateCallbackAtIndex (uint32_t idx); 234 235 static SymbolFileCreateInstance 236 GetSymbolFileCreateCallbackForPluginName (const char *name); 237 238 239 //------------------------------------------------------------------ 240 // SymbolVendor 241 //------------------------------------------------------------------ 242 static bool 243 RegisterPlugin (const char *name, 244 const char *description, 245 SymbolVendorCreateInstance create_callback); 246 247 static bool 248 UnregisterPlugin (SymbolVendorCreateInstance create_callback); 249 250 static SymbolVendorCreateInstance 251 GetSymbolVendorCreateCallbackAtIndex (uint32_t idx); 252 253 static SymbolVendorCreateInstance 254 GetSymbolVendorCreateCallbackForPluginName (const char *name); 255 256 //------------------------------------------------------------------ 257 // UnwindAssembly 258 //------------------------------------------------------------------ 259 static bool 260 RegisterPlugin (const char *name, 261 const char *description, 262 UnwindAssemblyCreateInstance create_callback); 263 264 static bool 265 UnregisterPlugin (UnwindAssemblyCreateInstance create_callback); 266 267 static UnwindAssemblyCreateInstance 268 GetUnwindAssemblyCreateCallbackAtIndex (uint32_t idx); 269 270 static UnwindAssemblyCreateInstance 271 GetUnwindAssemblyCreateCallbackForPluginName (const char *name); 272 273 //------------------------------------------------------------------ 274 // ArchDefaultUnwindPlan 275 //------------------------------------------------------------------ 276 static bool 277 RegisterPlugin (const char *name, 278 const char *description, 279 ArchDefaultUnwindPlanCreateInstance create_callback); 280 281 static bool 282 UnregisterPlugin (ArchDefaultUnwindPlanCreateInstance create_callback); 283 284 static ArchDefaultUnwindPlanCreateInstance 285 GetArchDefaultUnwindPlanCreateCallbackAtIndex (uint32_t idx); 286 287 static ArchDefaultUnwindPlanCreateInstance 288 GetArchDefaultUnwindPlanCreateCallbackForPluginName (const char *name); 289 290 //------------------------------------------------------------------ 291 // ArchVolatileRegs 292 //------------------------------------------------------------------ 293 static bool 294 RegisterPlugin (const char *name, 295 const char *description, 296 ArchVolatileRegsCreateInstance create_callback); 297 298 static bool 299 UnregisterPlugin (ArchVolatileRegsCreateInstance create_callback); 300 301 static ArchVolatileRegsCreateInstance 302 GetArchVolatileRegsCreateCallbackAtIndex (uint32_t idx); 303 304 static ArchVolatileRegsCreateInstance 305 GetArchVolatileRegsCreateCallbackForPluginName (const char *name); 306 307}; 308 309 310} // namespace lldb_private 311 312#endif // liblldb_PluginManager_h_ 313