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