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