1 //===-- PluginManager.h -----------------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
11 #ifndef liblldb_PluginManager_h_
12 #define liblldb_PluginManager_h_
14 #include "lldb/lldb-private.h"
15 #include "lldb/Host/FileSpec.h"
17 namespace lldb_private {
28 //------------------------------------------------------------------
30 //------------------------------------------------------------------
32 RegisterPlugin (const ConstString &name,
33 const char *description,
34 ABICreateInstance create_callback);
37 UnregisterPlugin (ABICreateInstance create_callback);
39 static ABICreateInstance
40 GetABICreateCallbackAtIndex (uint32_t idx);
42 static ABICreateInstance
43 GetABICreateCallbackForPluginName (const ConstString &name);
46 //------------------------------------------------------------------
48 //------------------------------------------------------------------
50 RegisterPlugin (const ConstString &name,
51 const char *description,
52 DisassemblerCreateInstance create_callback);
55 UnregisterPlugin (DisassemblerCreateInstance create_callback);
57 static DisassemblerCreateInstance
58 GetDisassemblerCreateCallbackAtIndex (uint32_t idx);
60 static DisassemblerCreateInstance
61 GetDisassemblerCreateCallbackForPluginName (const ConstString &name);
64 //------------------------------------------------------------------
66 //------------------------------------------------------------------
68 RegisterPlugin (const ConstString &name,
69 const char *description,
70 DynamicLoaderCreateInstance create_callback,
71 DebuggerInitializeCallback debugger_init_callback = NULL);
74 UnregisterPlugin (DynamicLoaderCreateInstance create_callback);
76 static DynamicLoaderCreateInstance
77 GetDynamicLoaderCreateCallbackAtIndex (uint32_t idx);
79 static DynamicLoaderCreateInstance
80 GetDynamicLoaderCreateCallbackForPluginName (const ConstString &name);
82 //------------------------------------------------------------------
84 //------------------------------------------------------------------
86 RegisterPlugin (const ConstString &name,
87 const char *description,
88 EmulateInstructionCreateInstance create_callback);
91 UnregisterPlugin (EmulateInstructionCreateInstance create_callback);
93 static EmulateInstructionCreateInstance
94 GetEmulateInstructionCreateCallbackAtIndex (uint32_t idx);
96 static EmulateInstructionCreateInstance
97 GetEmulateInstructionCreateCallbackForPluginName (const ConstString &name);
99 //------------------------------------------------------------------
101 //------------------------------------------------------------------
103 RegisterPlugin (const ConstString &name,
104 const char *description,
105 OperatingSystemCreateInstance create_callback);
108 UnregisterPlugin (OperatingSystemCreateInstance create_callback);
110 static OperatingSystemCreateInstance
111 GetOperatingSystemCreateCallbackAtIndex (uint32_t idx);
113 static OperatingSystemCreateInstance
114 GetOperatingSystemCreateCallbackForPluginName (const ConstString &name);
116 //------------------------------------------------------------------
118 //------------------------------------------------------------------
120 RegisterPlugin (const ConstString &name,
121 const char *description,
122 LanguageRuntimeCreateInstance create_callback);
125 UnregisterPlugin (LanguageRuntimeCreateInstance create_callback);
127 static LanguageRuntimeCreateInstance
128 GetLanguageRuntimeCreateCallbackAtIndex (uint32_t idx);
130 static LanguageRuntimeCreateInstance
131 GetLanguageRuntimeCreateCallbackForPluginName (const ConstString &name);
134 //------------------------------------------------------------------
136 //------------------------------------------------------------------
138 RegisterPlugin (const ConstString &name,
139 const char *description,
140 ObjectFileCreateInstance create_callback,
141 ObjectFileCreateMemoryInstance create_memory_callback,
142 ObjectFileGetModuleSpecifications get_module_specifications);
145 UnregisterPlugin (ObjectFileCreateInstance create_callback);
147 static ObjectFileCreateInstance
148 GetObjectFileCreateCallbackAtIndex (uint32_t idx);
150 static ObjectFileCreateMemoryInstance
151 GetObjectFileCreateMemoryCallbackAtIndex (uint32_t idx);
153 static ObjectFileGetModuleSpecifications
154 GetObjectFileGetModuleSpecificationsCallbackAtIndex (uint32_t idx);
156 static ObjectFileCreateInstance
157 GetObjectFileCreateCallbackForPluginName (const ConstString &name);
159 static ObjectFileCreateMemoryInstance
160 GetObjectFileCreateMemoryCallbackForPluginName (const ConstString &name);
163 //------------------------------------------------------------------
165 //------------------------------------------------------------------
167 RegisterPlugin (const ConstString &name,
168 const char *description,
169 ObjectContainerCreateInstance create_callback,
170 ObjectFileGetModuleSpecifications get_module_specifications);
173 UnregisterPlugin (ObjectContainerCreateInstance create_callback);
175 static ObjectContainerCreateInstance
176 GetObjectContainerCreateCallbackAtIndex (uint32_t idx);
178 static ObjectContainerCreateInstance
179 GetObjectContainerCreateCallbackForPluginName (const ConstString &name);
181 static ObjectFileGetModuleSpecifications
182 GetObjectContainerGetModuleSpecificationsCallbackAtIndex (uint32_t idx);
184 //------------------------------------------------------------------
186 //------------------------------------------------------------------
188 RegisterPlugin (const ConstString &name,
189 const char *description,
190 LogChannelCreateInstance create_callback);
193 UnregisterPlugin (LogChannelCreateInstance create_callback);
195 static LogChannelCreateInstance
196 GetLogChannelCreateCallbackAtIndex (uint32_t idx);
198 static LogChannelCreateInstance
199 GetLogChannelCreateCallbackForPluginName (const ConstString &name);
202 GetLogChannelCreateNameAtIndex (uint32_t idx);
204 //------------------------------------------------------------------
206 //------------------------------------------------------------------
208 RegisterPlugin (const ConstString &name,
209 const char *description,
210 PlatformCreateInstance create_callback,
211 DebuggerInitializeCallback debugger_init_callback = NULL);
214 UnregisterPlugin (PlatformCreateInstance create_callback);
216 static PlatformCreateInstance
217 GetPlatformCreateCallbackAtIndex (uint32_t idx);
219 static PlatformCreateInstance
220 GetPlatformCreateCallbackForPluginName (const ConstString &name);
223 GetPlatformPluginNameAtIndex (uint32_t idx);
226 GetPlatformPluginDescriptionAtIndex (uint32_t idx);
229 AutoCompletePlatformName (const char *partial_name,
230 StringList &matches);
231 //------------------------------------------------------------------
233 //------------------------------------------------------------------
235 RegisterPlugin (const ConstString &name,
236 const char *description,
237 ProcessCreateInstance create_callback,
238 DebuggerInitializeCallback debugger_init_callback = NULL);
241 UnregisterPlugin (ProcessCreateInstance create_callback);
243 static ProcessCreateInstance
244 GetProcessCreateCallbackAtIndex (uint32_t idx);
246 static ProcessCreateInstance
247 GetProcessCreateCallbackForPluginName (const ConstString &name);
250 GetProcessPluginNameAtIndex (uint32_t idx);
253 GetProcessPluginDescriptionAtIndex (uint32_t idx);
255 //------------------------------------------------------------------
257 //------------------------------------------------------------------
259 RegisterPlugin (const ConstString &name,
260 const char *description,
261 SymbolFileCreateInstance create_callback);
264 UnregisterPlugin (SymbolFileCreateInstance create_callback);
266 static SymbolFileCreateInstance
267 GetSymbolFileCreateCallbackAtIndex (uint32_t idx);
269 static SymbolFileCreateInstance
270 GetSymbolFileCreateCallbackForPluginName (const ConstString &name);
273 //------------------------------------------------------------------
275 //------------------------------------------------------------------
277 RegisterPlugin (const ConstString &name,
278 const char *description,
279 SymbolVendorCreateInstance create_callback);
282 UnregisterPlugin (SymbolVendorCreateInstance create_callback);
284 static SymbolVendorCreateInstance
285 GetSymbolVendorCreateCallbackAtIndex (uint32_t idx);
287 static SymbolVendorCreateInstance
288 GetSymbolVendorCreateCallbackForPluginName (const ConstString &name);
290 //------------------------------------------------------------------
292 //------------------------------------------------------------------
294 RegisterPlugin (const ConstString &name,
295 const char *description,
296 UnwindAssemblyCreateInstance create_callback);
299 UnregisterPlugin (UnwindAssemblyCreateInstance create_callback);
301 static UnwindAssemblyCreateInstance
302 GetUnwindAssemblyCreateCallbackAtIndex (uint32_t idx);
304 static UnwindAssemblyCreateInstance
305 GetUnwindAssemblyCreateCallbackForPluginName (const ConstString &name);
307 //------------------------------------------------------------------
308 // Some plug-ins might register a DebuggerInitializeCallback
309 // callback when registering the plug-in. After a new Debugger
310 // instance is created, this DebuggerInitialize function will get
311 // called. This allows plug-ins to install Properties and do any
312 // other initialization that requires a debugger instance.
313 //------------------------------------------------------------------
315 DebuggerInitialize (Debugger &debugger);
317 static lldb::OptionValuePropertiesSP
318 GetSettingForDynamicLoaderPlugin (Debugger &debugger,
319 const ConstString &setting_name);
322 CreateSettingForDynamicLoaderPlugin (Debugger &debugger,
323 const lldb::OptionValuePropertiesSP &properties_sp,
324 const ConstString &description,
325 bool is_global_property);
327 static lldb::OptionValuePropertiesSP
328 GetSettingForPlatformPlugin (Debugger &debugger,
329 const ConstString &setting_name);
332 CreateSettingForPlatformPlugin (Debugger &debugger,
333 const lldb::OptionValuePropertiesSP &properties_sp,
334 const ConstString &description,
335 bool is_global_property);
337 static lldb::OptionValuePropertiesSP
338 GetSettingForProcessPlugin (Debugger &debugger,
339 const ConstString &setting_name);
342 CreateSettingForProcessPlugin (Debugger &debugger,
343 const lldb::OptionValuePropertiesSP &properties_sp,
344 const ConstString &description,
345 bool is_global_property);
350 } // namespace lldb_private
352 #endif // liblldb_PluginManager_h_