PluginManager.h revision 3a4ea24572fad1e22525f8efb718d49d41e30398
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
16namespace lldb_private {
17
18class PluginManager
19{
20public:
21    //------------------------------------------------------------------
22    // ABI
23    //------------------------------------------------------------------
24    static bool
25    RegisterPlugin (const char *name,
26                    const char *description,
27                    ABICreateInstance create_callback);
28
29    static bool
30    UnregisterPlugin (ABICreateInstance create_callback);
31
32    static ABICreateInstance
33    GetABICreateCallbackAtIndex (uint32_t idx);
34
35    static ABICreateInstance
36    GetABICreateCallbackForPluginName (const char *name);
37
38
39    //------------------------------------------------------------------
40    // Disassembler
41    //------------------------------------------------------------------
42    static bool
43    RegisterPlugin (const char *name,
44                    const char *description,
45                    DisassemblerCreateInstance create_callback);
46
47    static bool
48    UnregisterPlugin (DisassemblerCreateInstance create_callback);
49
50    static DisassemblerCreateInstance
51    GetDisassemblerCreateCallbackAtIndex (uint32_t idx);
52
53    static DisassemblerCreateInstance
54    GetDisassemblerCreateCallbackForPluginName (const char *name);
55
56
57    //------------------------------------------------------------------
58    // DynamicLoader
59    //------------------------------------------------------------------
60    static bool
61    RegisterPlugin (const char *name,
62                    const char *description,
63                    DynamicLoaderCreateInstance create_callback);
64
65    static bool
66    UnregisterPlugin (DynamicLoaderCreateInstance create_callback);
67
68    static DynamicLoaderCreateInstance
69    GetDynamicLoaderCreateCallbackAtIndex (uint32_t idx);
70
71    static DynamicLoaderCreateInstance
72    GetDynamicLoaderCreateCallbackForPluginName (const char *name);
73
74
75    //------------------------------------------------------------------
76    // ObjectFile
77    //------------------------------------------------------------------
78    static bool
79    RegisterPlugin (const char *name,
80                    const char *description,
81                    ObjectFileCreateInstance create_callback);
82
83    static bool
84    UnregisterPlugin (ObjectFileCreateInstance create_callback);
85
86    static ObjectFileCreateInstance
87    GetObjectFileCreateCallbackAtIndex (uint32_t idx);
88
89    static ObjectFileCreateInstance
90    GetObjectFileCreateCallbackForPluginName (const char *name);
91
92
93    //------------------------------------------------------------------
94    // ObjectContainer
95    //------------------------------------------------------------------
96    static bool
97    RegisterPlugin (const char *name,
98                    const char *description,
99                    ObjectContainerCreateInstance create_callback);
100
101    static bool
102    UnregisterPlugin (ObjectContainerCreateInstance create_callback);
103
104    static ObjectContainerCreateInstance
105    GetObjectContainerCreateCallbackAtIndex (uint32_t idx);
106
107    static ObjectContainerCreateInstance
108    GetObjectContainerCreateCallbackForPluginName (const char *name);
109
110    //------------------------------------------------------------------
111    // LogChannel
112    //------------------------------------------------------------------
113    static bool
114    RegisterPlugin (const char *name,
115                    const char *description,
116                    LogChannelCreateInstance create_callback);
117
118    static bool
119    UnregisterPlugin (LogChannelCreateInstance create_callback);
120
121    static LogChannelCreateInstance
122    GetLogChannelCreateCallbackAtIndex (uint32_t idx);
123
124    static LogChannelCreateInstance
125    GetLogChannelCreateCallbackForPluginName (const char *name);
126
127    static const char *
128    GetLogChannelCreateNameAtIndex (uint32_t idx);
129
130    //------------------------------------------------------------------
131    // Process
132    //------------------------------------------------------------------
133    static bool
134    RegisterPlugin (const char *name,
135                    const char *description,
136                    ProcessCreateInstance create_callback);
137
138    static bool
139    UnregisterPlugin (ProcessCreateInstance create_callback);
140
141    static ProcessCreateInstance
142    GetProcessCreateCallbackAtIndex (uint32_t idx);
143
144    static ProcessCreateInstance
145    GetProcessCreateCallbackForPluginName (const char *name);
146
147    //------------------------------------------------------------------
148    // SymbolFile
149    //------------------------------------------------------------------
150    static bool
151    RegisterPlugin (const char *name,
152                    const char *description,
153                    SymbolFileCreateInstance create_callback);
154
155    static bool
156    UnregisterPlugin (SymbolFileCreateInstance create_callback);
157
158    static SymbolFileCreateInstance
159    GetSymbolFileCreateCallbackAtIndex (uint32_t idx);
160
161    static SymbolFileCreateInstance
162    GetSymbolFileCreateCallbackForPluginName (const char *name);
163
164
165    //------------------------------------------------------------------
166    // SymbolVendor
167    //------------------------------------------------------------------
168    static bool
169    RegisterPlugin (const char *name,
170                    const char *description,
171                    SymbolVendorCreateInstance create_callback);
172
173    static bool
174    UnregisterPlugin (SymbolVendorCreateInstance create_callback);
175
176    static SymbolVendorCreateInstance
177    GetSymbolVendorCreateCallbackAtIndex (uint32_t idx);
178
179    static SymbolVendorCreateInstance
180    GetSymbolVendorCreateCallbackForPluginName (const char *name);
181
182    //------------------------------------------------------------------
183    // UnwindAssemblyProfiler
184    //------------------------------------------------------------------
185    static bool
186    RegisterPlugin (const char *name,
187                    const char *description,
188                    UnwindAssemblyProfilerCreateInstance create_callback);
189
190    static bool
191    UnregisterPlugin (UnwindAssemblyProfilerCreateInstance create_callback);
192
193    static UnwindAssemblyProfilerCreateInstance
194    GetUnwindAssemblyProfilerCreateCallbackAtIndex (uint32_t idx);
195
196    static UnwindAssemblyProfilerCreateInstance
197    GetUnwindAssemblyProfilerCreateCallbackForPluginName (const char *name);
198
199    //------------------------------------------------------------------
200    // ArchDefaultUnwindPlan
201    //------------------------------------------------------------------
202    static bool
203    RegisterPlugin (const char *name,
204                    const char *description,
205                    ArchDefaultUnwindPlanCreateInstance create_callback);
206
207    static bool
208    UnregisterPlugin (ArchDefaultUnwindPlanCreateInstance create_callback);
209
210    static ArchDefaultUnwindPlanCreateInstance
211    GetArchDefaultUnwindPlanCreateCallbackAtIndex (uint32_t idx);
212
213    static ArchDefaultUnwindPlanCreateInstance
214    GetArchDefaultUnwindPlanCreateCallbackForPluginName (const char *name);
215
216};
217
218
219} // namespace lldb_private
220
221#endif  // liblldb_PluginManager_h_
222