]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/llvm/tools/lldb/include/lldb/Core/PluginManager.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / llvm / tools / lldb / include / lldb / Core / PluginManager.h
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
17 namespace lldb_private {
18
19 class PluginManager
20 {
21 public:
22     static void
23     Initialize ();
24     
25     static void
26     Terminate ();
27
28     //------------------------------------------------------------------
29     // ABI
30     //------------------------------------------------------------------
31     static bool
32     RegisterPlugin (const ConstString &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 ConstString &name);
44
45
46     //------------------------------------------------------------------
47     // Disassembler
48     //------------------------------------------------------------------
49     static bool
50     RegisterPlugin (const ConstString &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 ConstString &name);
62
63
64     //------------------------------------------------------------------
65     // DynamicLoader
66     //------------------------------------------------------------------
67     static bool
68     RegisterPlugin (const ConstString &name,
69                     const char *description,
70                     DynamicLoaderCreateInstance create_callback,
71                     DebuggerInitializeCallback debugger_init_callback = NULL);
72
73     static bool
74     UnregisterPlugin (DynamicLoaderCreateInstance create_callback);
75
76     static DynamicLoaderCreateInstance
77     GetDynamicLoaderCreateCallbackAtIndex (uint32_t idx);
78
79     static DynamicLoaderCreateInstance
80     GetDynamicLoaderCreateCallbackForPluginName (const ConstString &name);
81
82     //------------------------------------------------------------------
83     // EmulateInstruction
84     //------------------------------------------------------------------
85     static bool
86     RegisterPlugin (const ConstString &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 ConstString &name);
98
99     //------------------------------------------------------------------
100     // OperatingSystem
101     //------------------------------------------------------------------
102     static bool
103     RegisterPlugin (const ConstString &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 ConstString &name);
115
116     //------------------------------------------------------------------
117     // LanguageRuntime
118     //------------------------------------------------------------------
119     static bool
120     RegisterPlugin (const ConstString &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 ConstString &name);
132
133
134     //------------------------------------------------------------------
135     // ObjectFile
136     //------------------------------------------------------------------
137     static bool
138     RegisterPlugin (const ConstString &name,
139                     const char *description,
140                     ObjectFileCreateInstance create_callback,
141                     ObjectFileCreateMemoryInstance create_memory_callback,
142                     ObjectFileGetModuleSpecifications get_module_specifications);
143
144     static bool
145     UnregisterPlugin (ObjectFileCreateInstance create_callback);
146
147     static ObjectFileCreateInstance
148     GetObjectFileCreateCallbackAtIndex (uint32_t idx);
149     
150     static ObjectFileCreateMemoryInstance
151     GetObjectFileCreateMemoryCallbackAtIndex (uint32_t idx);
152
153     static ObjectFileGetModuleSpecifications
154     GetObjectFileGetModuleSpecificationsCallbackAtIndex (uint32_t idx);
155
156     static ObjectFileCreateInstance
157     GetObjectFileCreateCallbackForPluginName (const ConstString &name);
158
159     static ObjectFileCreateMemoryInstance
160     GetObjectFileCreateMemoryCallbackForPluginName (const ConstString &name);
161
162
163     //------------------------------------------------------------------
164     // ObjectContainer
165     //------------------------------------------------------------------
166     static bool
167     RegisterPlugin (const ConstString &name,
168                     const char *description,
169                     ObjectContainerCreateInstance create_callback,
170                     ObjectFileGetModuleSpecifications get_module_specifications);
171
172     static bool
173     UnregisterPlugin (ObjectContainerCreateInstance create_callback);
174
175     static ObjectContainerCreateInstance
176     GetObjectContainerCreateCallbackAtIndex (uint32_t idx);
177
178     static ObjectContainerCreateInstance
179     GetObjectContainerCreateCallbackForPluginName (const ConstString &name);
180
181     static ObjectFileGetModuleSpecifications
182     GetObjectContainerGetModuleSpecificationsCallbackAtIndex (uint32_t idx);
183
184     //------------------------------------------------------------------
185     // LogChannel
186     //------------------------------------------------------------------
187     static bool
188     RegisterPlugin (const ConstString &name,
189                     const char *description,
190                     LogChannelCreateInstance create_callback);
191
192     static bool
193     UnregisterPlugin (LogChannelCreateInstance create_callback);
194
195     static LogChannelCreateInstance
196     GetLogChannelCreateCallbackAtIndex (uint32_t idx);
197
198     static LogChannelCreateInstance
199     GetLogChannelCreateCallbackForPluginName (const ConstString &name);
200
201     static const char *
202     GetLogChannelCreateNameAtIndex (uint32_t idx);
203
204     //------------------------------------------------------------------
205     // Platform
206     //------------------------------------------------------------------
207     static bool
208     RegisterPlugin (const ConstString &name,
209                     const char *description,
210                     PlatformCreateInstance create_callback,
211                     DebuggerInitializeCallback debugger_init_callback = NULL);
212
213     static bool
214     UnregisterPlugin (PlatformCreateInstance create_callback);
215
216     static PlatformCreateInstance
217     GetPlatformCreateCallbackAtIndex (uint32_t idx);
218
219     static PlatformCreateInstance
220     GetPlatformCreateCallbackForPluginName (const ConstString &name);
221     
222     static const char *
223     GetPlatformPluginNameAtIndex (uint32_t idx);
224
225     static const char *
226     GetPlatformPluginDescriptionAtIndex (uint32_t idx);
227
228     static size_t
229     AutoCompletePlatformName (const char *partial_name, 
230                               StringList &matches);
231     //------------------------------------------------------------------
232     // Process
233     //------------------------------------------------------------------
234     static bool
235     RegisterPlugin (const ConstString &name,
236                     const char *description,
237                     ProcessCreateInstance create_callback,
238                     DebuggerInitializeCallback debugger_init_callback = NULL);
239     
240     static bool
241     UnregisterPlugin (ProcessCreateInstance create_callback);
242     
243     static ProcessCreateInstance
244     GetProcessCreateCallbackAtIndex (uint32_t idx);
245     
246     static ProcessCreateInstance
247     GetProcessCreateCallbackForPluginName (const ConstString &name);
248     
249     static const char *
250     GetProcessPluginNameAtIndex (uint32_t idx);
251     
252     static const char *
253     GetProcessPluginDescriptionAtIndex (uint32_t idx);
254
255     //------------------------------------------------------------------
256     // SymbolFile
257     //------------------------------------------------------------------
258     static bool
259     RegisterPlugin (const ConstString &name,
260                     const char *description,
261                     SymbolFileCreateInstance create_callback);
262
263     static bool
264     UnregisterPlugin (SymbolFileCreateInstance create_callback);
265
266     static SymbolFileCreateInstance
267     GetSymbolFileCreateCallbackAtIndex (uint32_t idx);
268
269     static SymbolFileCreateInstance
270     GetSymbolFileCreateCallbackForPluginName (const ConstString &name);
271
272
273     //------------------------------------------------------------------
274     // SymbolVendor
275     //------------------------------------------------------------------
276     static bool
277     RegisterPlugin (const ConstString &name,
278                     const char *description,
279                     SymbolVendorCreateInstance create_callback);
280
281     static bool
282     UnregisterPlugin (SymbolVendorCreateInstance create_callback);
283
284     static SymbolVendorCreateInstance
285     GetSymbolVendorCreateCallbackAtIndex (uint32_t idx);
286
287     static SymbolVendorCreateInstance
288     GetSymbolVendorCreateCallbackForPluginName (const ConstString &name);
289
290     //------------------------------------------------------------------
291     // UnwindAssembly
292     //------------------------------------------------------------------
293     static bool
294     RegisterPlugin (const ConstString &name,
295                     const char *description,
296                     UnwindAssemblyCreateInstance create_callback);
297
298     static bool
299     UnregisterPlugin (UnwindAssemblyCreateInstance create_callback);
300
301     static UnwindAssemblyCreateInstance
302     GetUnwindAssemblyCreateCallbackAtIndex (uint32_t idx);
303
304     static UnwindAssemblyCreateInstance
305     GetUnwindAssemblyCreateCallbackForPluginName (const ConstString &name);
306
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     //------------------------------------------------------------------
314     static void
315     DebuggerInitialize (Debugger &debugger);
316     
317     static lldb::OptionValuePropertiesSP
318     GetSettingForDynamicLoaderPlugin (Debugger &debugger,
319                                       const ConstString &setting_name);
320     
321     static bool
322     CreateSettingForDynamicLoaderPlugin (Debugger &debugger,
323                                          const lldb::OptionValuePropertiesSP &properties_sp,
324                                          const ConstString &description,
325                                          bool is_global_property);
326     
327     static lldb::OptionValuePropertiesSP
328     GetSettingForPlatformPlugin (Debugger &debugger,
329                                        const ConstString &setting_name);
330     
331     static bool
332     CreateSettingForPlatformPlugin (Debugger &debugger,
333                                          const lldb::OptionValuePropertiesSP &properties_sp,
334                                          const ConstString &description,
335                                          bool is_global_property);
336
337     static lldb::OptionValuePropertiesSP
338     GetSettingForProcessPlugin (Debugger &debugger,
339                                 const ConstString &setting_name);
340     
341     static bool
342     CreateSettingForProcessPlugin (Debugger &debugger,
343                                    const lldb::OptionValuePropertiesSP &properties_sp,
344                                    const ConstString &description,
345                                    bool is_global_property);
346
347 };
348
349
350 } // namespace lldb_private
351
352 #endif  // liblldb_PluginManager_h_