PluginManager.h revision 5f54ac373b119a4c6693e4875c48aa761fba0c86
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    // Process
174    //------------------------------------------------------------------
175    static bool
176    RegisterPlugin (const char *name,
177                    const char *description,
178                    ProcessCreateInstance create_callback);
179
180    static bool
181    UnregisterPlugin (ProcessCreateInstance create_callback);
182
183    static ProcessCreateInstance
184    GetProcessCreateCallbackAtIndex (uint32_t idx);
185
186    static ProcessCreateInstance
187    GetProcessCreateCallbackForPluginName (const char *name);
188
189    //------------------------------------------------------------------
190    // SymbolFile
191    //------------------------------------------------------------------
192    static bool
193    RegisterPlugin (const char *name,
194                    const char *description,
195                    SymbolFileCreateInstance create_callback);
196
197    static bool
198    UnregisterPlugin (SymbolFileCreateInstance create_callback);
199
200    static SymbolFileCreateInstance
201    GetSymbolFileCreateCallbackAtIndex (uint32_t idx);
202
203    static SymbolFileCreateInstance
204    GetSymbolFileCreateCallbackForPluginName (const char *name);
205
206
207    //------------------------------------------------------------------
208    // SymbolVendor
209    //------------------------------------------------------------------
210    static bool
211    RegisterPlugin (const char *name,
212                    const char *description,
213                    SymbolVendorCreateInstance create_callback);
214
215    static bool
216    UnregisterPlugin (SymbolVendorCreateInstance create_callback);
217
218    static SymbolVendorCreateInstance
219    GetSymbolVendorCreateCallbackAtIndex (uint32_t idx);
220
221    static SymbolVendorCreateInstance
222    GetSymbolVendorCreateCallbackForPluginName (const char *name);
223
224    //------------------------------------------------------------------
225    // UnwindAssemblyProfiler
226    //------------------------------------------------------------------
227    static bool
228    RegisterPlugin (const char *name,
229                    const char *description,
230                    UnwindAssemblyProfilerCreateInstance create_callback);
231
232    static bool
233    UnregisterPlugin (UnwindAssemblyProfilerCreateInstance create_callback);
234
235    static UnwindAssemblyProfilerCreateInstance
236    GetUnwindAssemblyProfilerCreateCallbackAtIndex (uint32_t idx);
237
238    static UnwindAssemblyProfilerCreateInstance
239    GetUnwindAssemblyProfilerCreateCallbackForPluginName (const char *name);
240
241    //------------------------------------------------------------------
242    // ArchDefaultUnwindPlan
243    //------------------------------------------------------------------
244    static bool
245    RegisterPlugin (const char *name,
246                    const char *description,
247                    ArchDefaultUnwindPlanCreateInstance create_callback);
248
249    static bool
250    UnregisterPlugin (ArchDefaultUnwindPlanCreateInstance create_callback);
251
252    static ArchDefaultUnwindPlanCreateInstance
253    GetArchDefaultUnwindPlanCreateCallbackAtIndex (uint32_t idx);
254
255    static ArchDefaultUnwindPlanCreateInstance
256    GetArchDefaultUnwindPlanCreateCallbackForPluginName (const char *name);
257
258    //------------------------------------------------------------------
259    // ArchVolatileRegs
260    //------------------------------------------------------------------
261    static bool
262    RegisterPlugin (const char *name,
263                    const char *description,
264                    ArchVolatileRegsCreateInstance create_callback);
265
266    static bool
267    UnregisterPlugin (ArchVolatileRegsCreateInstance create_callback);
268
269    static ArchVolatileRegsCreateInstance
270    GetArchVolatileRegsCreateCallbackAtIndex (uint32_t idx);
271
272    static ArchVolatileRegsCreateInstance
273    GetArchVolatileRegsCreateCallbackForPluginName (const char *name);
274
275};
276
277
278} // namespace lldb_private
279
280#endif  // liblldb_PluginManager_h_
281