Merge lp:~smspillaz/compiz-libcompizconfig/compiz-libcompizconfig.plugin-funcs-behind-interface into lp:~compiz-team/compiz-libcompizconfig/0.9.8

Proposed by Sam Spilsbury
Status: Superseded
Proposed branch: lp:~smspillaz/compiz-libcompizconfig/compiz-libcompizconfig.plugin-funcs-behind-interface
Merge into: lp:~compiz-team/compiz-libcompizconfig/0.9.8
Prerequisite: lp:~smspillaz/compiz-libcompizconfig/compiz-libcompizconfig.refactor-plugin
Diff against target: 577 lines (+236/-52)
4 files modified
include/ccs.h (+56/-3)
src/ccs-private.h (+1/-1)
src/compiz.cpp (+15/-10)
src/main.c (+164/-38)
To merge this branch: bzr merge lp:~smspillaz/compiz-libcompizconfig/compiz-libcompizconfig.plugin-funcs-behind-interface
Reviewer Review Type Date Requested Status
Compiz Maintainers Pending
Review via email: mp+103997@code.launchpad.net

This proposal has been superseded by a proposal from 2012-04-29.

Description of the change

This is all about bug 990690.

!! - It probably isn't a good idea to test this branch in isolation, as it is part of a pipeline to get compiz-libcompizconfig under test. If you want to test the result of this work, you should probably look at testing

lp:~smspillaz/compiz-libcompizconfig/compiz-libcompizconfig.mock-context
lp:~smspillaz/compiz-compizconfig-python/compiz-compizconfig-python.setting-api
lp:~smspillaz/compiz-compizconfig-gconf/compiz-compizconfig-gconf.adapt-to-new-interfaces

.. that's all !!

This branch indirects all of the plugin API behind an interface

To post a comment you must log in.

Unmerged revisions

447. By Sam Spilsbury

Use CCSObjectFinalize

446. By Sam Spilsbury

Use the CCSObject constructs to do interfaces and private ptrs

445. By Sam Spilsbury

Merged refactor-plugin into plugin-funcs-behind-interface.

444. By Sam Spilsbury

Merged refactor-plugin into plugin-funcs-behind-interface.

443. By Sam Spilsbury

Merged refactor-plugin into plugin-funcs-behind-interface.

442. By Sam Spilsbury

Merged refactor-plugin into plugin-funcs-behind-interface.

441. By Sam Spilsbury

Merged refactor-plugin into plugin-funcs-behind-interface.

440. By Sam Spilsbury

Work with protocol buffers

439. By Sam Spilsbury

Merged refactor-plugin into plugin-funcs-behind-interface.

438. By Sam Spilsbury

Merged refactor-plugin into plugin-funcs-behind-interface.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'include/ccs.h'
2--- include/ccs.h 2012-04-28 18:58:56 +0000
3+++ include/ccs.h 2012-04-28 18:58:57 +0000
4@@ -215,10 +215,12 @@
5
6 typedef struct _CCSInterfaceTable CCSInterfaceTable;
7 typedef struct _CCSContextInterface CCSContextInterface;
8+typedef struct _CCSPluginInterface CCSPluginInterface;
9
10 struct _CCSInterfaceTable
11 {
12 const CCSContextInterface *contextInterface;
13+ const CCSPluginInterface *pluginInterface;
14 };
15
16 extern const CCSInterfaceTable ccsDefaultInterfaceTable;
17@@ -332,6 +334,57 @@
18 unsigned int refCount; /* reference count */
19 };
20
21+/* CCSPluginInterface */
22+typedef char * (*CCSPluginGetName) (CCSPlugin *plugin);
23+typedef char * (*CCSPluginGetShortDesc) (CCSPlugin *plugin);
24+typedef char * (*CCSPluginGetLongDesc) (CCSPlugin *plugin);
25+typedef char * (*CCSPluginGetHints) (CCSPlugin *plugin);
26+typedef char * (*CCSPluginGetCategory) (CCSPlugin *plugin);
27+
28+typedef CCSStringList (*CCSPluginGetLoadAfter) (CCSPlugin *plugin);
29+typedef CCSStringList (*CCSPluginGetLoadBefore) (CCSPlugin *plugin);
30+typedef CCSStringList (*CCSPluginGetRequiresPlugins) (CCSPlugin *plugin);
31+typedef CCSStringList (*CCSPluginGetConflictPlugins) (CCSPlugin *plugin);
32+typedef CCSStringList (*CCSPluginGetProvidesFeatures) (CCSPlugin *plugin);
33+typedef CCSStringList (*CCSPluginGetRequiresFeatures) (CCSPlugin *plugin);
34+
35+typedef void * (*CCSPluginGetPrivatePtr) (CCSPlugin *plugin);
36+typedef void (*CCSPluginSetPrivatePtr) (CCSPlugin *plugin, void *);
37+
38+typedef CCSContext * (*CCSPluginGetContext) (CCSPlugin *plugin);
39+
40+typedef CCSSetting * (*CCSPluginFindSetting) (CCSPlugin *plugin, const char *name);
41+typedef CCSSettingList (*CCSPluginGetPluginSettings) (CCSPlugin *plugin);
42+typedef CCSGroupList (*CCSPluginGetPluginGroups) (CCSPlugin *plugin);
43+typedef void (*CCSPluginReadPluginSettings) (CCSPlugin *plugin);
44+typedef CCSStrExtensionList (*CCSPluginGetPluginStrExtensions) (CCSPlugin *plugin);
45+
46+inline unsigned int ccsCCSPluginInterfaceGetType ();
47+
48+struct _CCSPluginInterface
49+{
50+ CCSPluginGetName pluginGetName;
51+ CCSPluginGetShortDesc pluginGetShortDesc;
52+ CCSPluginGetLongDesc pluginGetLongDesc;
53+ CCSPluginGetHints pluginGetHints;
54+ CCSPluginGetCategory pluginGetCategory;
55+ CCSPluginGetLoadAfter pluginGetLoadAfter;
56+ CCSPluginGetLoadBefore pluginGetLoadBefore;
57+ CCSPluginGetRequiresPlugins pluginGetRequiresPlugins;
58+ CCSPluginGetConflictPlugins pluginGetConflictPlugins;
59+ CCSPluginGetProvidesFeatures pluginGetProvidesFeatures;
60+ CCSPluginGetRequiresFeatures pluginGetRequiresFeatures;
61+ CCSPluginGetPrivatePtr pluginGetPrivatePtr;
62+ CCSPluginSetPrivatePtr pluginSetPrivatePtr;
63+ CCSPluginGetContext pluginGetContext;
64+ CCSPluginFindSetting pluginFindSetting;
65+ CCSPluginGetPluginSettings pluginGetPluginSettings;
66+ CCSPluginGetPluginGroups pluginGetPluginGroups;
67+ CCSPluginReadPluginSettings pluginReadPluginSettings;
68+ CCSPluginGetPluginStrExtensions pluginGetPluginStrExtensions;
69+};
70+
71+/* CCSPlugin accessor functions */
72 char * ccsPluginGetName (CCSPlugin *plugin);
73 char * ccsPluginGetShortDesc (CCSPlugin *plugin);
74 char * ccsPluginGetLongDesc (CCSPlugin *plugin);
75@@ -354,11 +407,11 @@
76
77 struct _CCSPlugin
78 {
79- void *ccsPrivate; /* private pointer for compizconfig
80- internal usage */
81- unsigned int refCount; /* reference count */
82+ CCSObject object;
83 };
84
85+#define CCS_PLUGIN_INTERFACE_TYPE GET_INTERFACE_TYPE(CCSPluginInterface)
86+
87 typedef enum _CCSSettingType
88 {
89 /* This needs to be in the same order as CompOptionType for consistency */
90
91=== modified file 'src/ccs-private.h'
92--- src/ccs-private.h 2012-04-28 18:58:56 +0000
93+++ src/ccs-private.h 2012-04-28 18:58:57 +0000
94@@ -28,7 +28,7 @@
95 #define CONTEXT_PRIV(c) \
96 CCSContextPrivate *cPrivate = (CCSContextPrivate *) ccsObjectGetPrivate ((CCSObject *) c);
97 #define PLUGIN_PRIV(p) \
98- CCSPluginPrivate *pPrivate = (CCSPluginPrivate *) p->ccsPrivate;
99+ CCSPluginPrivate *pPrivate = (CCSPluginPrivate *) ccsObjectGetPrivate ((CCSObject *) p);
100
101 extern Bool basicMetadata;
102
103
104=== modified file 'src/compiz.cpp'
105--- src/compiz.cpp 2012-04-28 18:58:56 +0000
106+++ src/compiz.cpp 2012-04-28 18:58:57 +0000
107@@ -865,7 +865,7 @@
108 if (!plugin)
109 return;
110
111- plugin->refCount = 1;
112+ ccsPluginRef (plugin);
113
114 pPrivate = (CCSPluginPrivate *) calloc (1, sizeof (CCSPluginPrivate));
115 if (!pPrivate)
116@@ -875,7 +875,8 @@
117 }
118 pPrivate->loaded = FALSE;
119
120- plugin->ccsPrivate = (void *) pPrivate;
121+ ccsObjectSetPrivate ((CCSObject *) plugin, (CCSPrivate *) pPrivate);
122+ ccsObjectAddInterface ((CCSObject *) plugin, (CCSInterface *) cPrivate->object_interfaces->pluginInterface, CCS_PLUGIN_INTERFACE_TYPE);
123
124 if (file)
125 pPrivate->pbFilePath = strdup (file);
126@@ -933,7 +934,7 @@
127 if (!plugin)
128 return;
129
130- plugin->refCount = 1;
131+ ccsPluginRef (plugin);
132
133 pPrivate = (CCSPluginPrivate *) calloc (1, sizeof (CCSPluginPrivate));
134 if (!pPrivate)
135@@ -942,7 +943,8 @@
136 return;
137 }
138
139- plugin->ccsPrivate = (void *) pPrivate;
140+ ccsObjectSetPrivate ((CCSObject *) plugin, (CCSPrivate *) pPrivate);
141+ ccsObjectAddInterface ((CCSObject *) plugin, (CCSInterface *) cPrivate->object_interfaces->pluginInterface, CCS_PLUGIN_INTERFACE_TYPE);
142
143 if (file)
144 pPrivate->pbFilePath = strdup (file);
145@@ -2510,7 +2512,7 @@
146 if (!plugin)
147 return FALSE;
148
149- plugin->refCount = 1;
150+ ccsPluginRef (plugin);
151
152 pPrivate = (CCSPluginPrivate *) calloc (1, sizeof (CCSPluginPrivate));
153 if (!pPrivate)
154@@ -2519,7 +2521,8 @@
155 return FALSE;
156 }
157
158- plugin->ccsPrivate = (void *) pPrivate;
159+ ccsObjectSetPrivate ((CCSObject *) plugin, (CCSPrivate *) pPrivate);
160+ ccsObjectAddInterface ((CCSObject *) plugin, (CCSInterface *) cPrivate->object_interfaces->pluginInterface, CCS_PLUGIN_INTERFACE_TYPE);
161
162 if (file)
163 pPrivate->xmlFile = strdup (file);
164@@ -2577,7 +2580,7 @@
165 if (!plugin)
166 return FALSE;
167
168- plugin->refCount = 1;
169+ ccsPluginRef (plugin);
170
171 pPrivate = (CCSPluginPrivate *) calloc (1, sizeof (CCSPluginPrivate));
172 if (!pPrivate)
173@@ -2586,7 +2589,8 @@
174 return FALSE;
175 }
176
177- plugin->ccsPrivate = (void *) pPrivate;
178+ ccsObjectSetPrivate ((CCSObject *) plugin, (CCSPrivate *) pPrivate);
179+ ccsObjectAddInterface ((CCSObject *) plugin, (CCSInterface *) cPrivate->object_interfaces->pluginInterface, CCS_PLUGIN_INTERFACE_TYPE);
180
181 if (file)
182 pPrivate->xmlFile = strdup (file);
183@@ -2924,7 +2928,7 @@
184 if (!plugin)
185 return;
186
187- plugin->refCount = 1;
188+ ccsPluginRef (plugin);
189
190 pPrivate = (CCSPluginPrivate *) calloc (1, sizeof (CCSPluginPrivate));
191 if (!pPrivate)
192@@ -2933,7 +2937,8 @@
193 return;
194 }
195
196- plugin->ccsPrivate = (void *) pPrivate;
197+ ccsObjectSetPrivate ((CCSObject *) plugin, (CCSPrivate *) pPrivate);
198+ ccsObjectAddInterface ((CCSObject *) plugin, (CCSInterface *) cPrivate->object_interfaces->pluginInterface, CCS_PLUGIN_INTERFACE_TYPE);
199
200 pPrivate->context = context;
201 pPrivate->name = strdup (name);
202
203=== modified file 'src/main.c'
204--- src/main.c 2012-04-28 18:58:56 +0000
205+++ src/main.c 2012-04-28 18:58:57 +0000
206@@ -168,6 +168,7 @@
207 }
208
209 INTERFACE_TYPE (CCSContextInterface)
210+INTERFACE_TYPE (CCSPluginInterface)
211
212 Bool basicMetadata = FALSE;
213
214@@ -512,7 +513,7 @@
215 }
216
217 CCSSetting *
218-ccsFindSetting (CCSPlugin * plugin, const char *name)
219+ccsFindSettingDefault (CCSPlugin * plugin, const char *name)
220 {
221 if (!plugin)
222 return NULL;
223@@ -538,6 +539,15 @@
224 return NULL;
225 }
226
227+CCSSetting *
228+ccsFindSetting (CCSPlugin *plugin, const char *name)
229+{
230+ if (!plugin)
231+ return NULL;
232+
233+ return (*(GET_INTERFACE (CCSPluginInterface, CCS_PLUGIN_INTERFACE_TYPE, plugin))->pluginFindSetting) (plugin, name);
234+}
235+
236 Bool
237 ccsPluginIsActiveDefault (CCSContext * context, char *name)
238 {
239@@ -686,7 +696,7 @@
240 free (pPrivate->pbFilePath);
241 #endif
242
243- free (pPrivate);
244+ ccsObjectFinalize ((CCSObject *) p);
245 free (p);
246 }
247
248@@ -881,7 +891,6 @@
249 ccsFree##type (d); \
250 } \
251
252-CCSREF (Plugin, CCSPlugin)
253 CCSREF (Setting, CCSSetting)
254 CCSREF (String, CCSString)
255 CCSREF (Group, CCSGroup)
256@@ -905,6 +914,8 @@
257 ccsFree##type (d); \
258 } \
259
260+CCSREF_OBJ (Plugin, CCSPlugin)
261+
262 static void *
263 openBackend (char *backend)
264 {
265@@ -2442,7 +2453,7 @@
266 }
267
268 void
269-ccsReadPluginSettings (CCSPlugin * plugin)
270+ccsReadPluginSettingsDefault (CCSPlugin * plugin)
271 {
272 if (!plugin || !ccsPluginGetContext (plugin))
273 return;
274@@ -2473,6 +2484,12 @@
275 }
276
277 void
278+ccsReadPluginSettings (CCSPlugin *plugin)
279+{
280+ return (*(GET_INTERFACE (CCSPluginInterface, CCS_PLUGIN_INTERFACE_TYPE, plugin))->pluginReadPluginSettings) (plugin);
281+}
282+
283+void
284 ccsWriteSettingsDefault (CCSContext * context)
285 {
286 if (!context)
287@@ -4129,70 +4146,70 @@
288 }
289
290 char *
291-ccsPluginGetName (CCSPlugin *plugin)
292+ccsPluginGetNameDefault (CCSPlugin *plugin)
293 {
294 PLUGIN_PRIV (plugin);
295
296 return pPrivate->name;
297 }
298
299-char * ccsPluginGetShortDesc (CCSPlugin *plugin)
300+char * ccsPluginGetShortDescDefault (CCSPlugin *plugin)
301 {
302 PLUGIN_PRIV (plugin);
303
304 return pPrivate->shortDesc;
305 }
306
307-char * ccsPluginGetLongDesc (CCSPlugin *plugin)
308+char * ccsPluginGetLongDescDefault (CCSPlugin *plugin)
309 {
310 PLUGIN_PRIV (plugin);
311
312 return pPrivate->longDesc;
313 }
314
315-char * ccsPluginGetHints (CCSPlugin *plugin)
316+char * ccsPluginGetHintsDefault (CCSPlugin *plugin)
317 {
318 PLUGIN_PRIV (plugin);
319
320 return pPrivate->hints;
321 }
322
323-char * ccsPluginGetCategory (CCSPlugin *plugin)
324+char * ccsPluginGetCategoryDefault (CCSPlugin *plugin)
325 {
326 PLUGIN_PRIV (plugin);
327
328 return pPrivate->category;
329 }
330
331-CCSStringList ccsPluginGetLoadAfter (CCSPlugin *plugin)
332+CCSStringList ccsPluginGetLoadAfterDefault (CCSPlugin *plugin)
333 {
334 PLUGIN_PRIV (plugin);
335
336 return pPrivate->loadAfter;
337 }
338
339-CCSStringList ccsPluginGetLoadBefore (CCSPlugin *plugin)
340+CCSStringList ccsPluginGetLoadBeforeDefault (CCSPlugin *plugin)
341 {
342 PLUGIN_PRIV (plugin);
343
344 return pPrivate->loadBefore;
345 }
346
347-CCSStringList ccsPluginGetRequiresPlugins (CCSPlugin *plugin)
348+CCSStringList ccsPluginGetRequiresPluginsDefault (CCSPlugin *plugin)
349 {
350 PLUGIN_PRIV (plugin);
351
352 return pPrivate->requiresPlugin;
353 }
354
355-CCSStringList ccsPluginGetConflictPlugins (CCSPlugin *plugin)
356+CCSStringList ccsPluginGetConflictPluginsDefault (CCSPlugin *plugin)
357 {
358 PLUGIN_PRIV (plugin);
359
360 return pPrivate->conflictPlugin;
361 }
362
363-CCSStringList ccsPluginGetProvidesFeatures (CCSPlugin *plugin)
364+CCSStringList ccsPluginGetProvidesFeaturesDefault (CCSPlugin *plugin)
365 {
366 PLUGIN_PRIV (plugin);
367
368@@ -4204,53 +4221,133 @@
369 return (void *) ccsPluginGetProvidesFeatures (plugin);
370 }
371
372+CCSStringList ccsPluginGetRequiresFeaturesDefault (CCSPlugin *plugin)
373+{
374+ PLUGIN_PRIV (plugin);
375+
376+ return pPrivate->requiresFeature;
377+}
378+
379+void * ccsPluginGetPrivatePtrDefault (CCSPlugin *plugin)
380+{
381+ PLUGIN_PRIV (plugin);
382+
383+ return pPrivate->privatePtr;
384+}
385+
386+void ccsPluginSetPrivatePtrDefault (CCSPlugin *plugin, void *ptr)
387+{
388+ PLUGIN_PRIV (plugin);
389+
390+ pPrivate->privatePtr = ptr;
391+}
392+
393+CCSContext * ccsPluginGetContextDefault (CCSPlugin *plugin)
394+{
395+ PLUGIN_PRIV (plugin);
396+
397+ return pPrivate->context;
398+}
399+
400+/* CCSPlugin accessor functions */
401+char * ccsPluginGetName (CCSPlugin *plugin)
402+{
403+ return (*(GET_INTERFACE (CCSPluginInterface, CCS_PLUGIN_INTERFACE_TYPE, plugin))->pluginGetName) (plugin);
404+}
405+
406+char * ccsPluginGetShortDesc (CCSPlugin *plugin)
407+{
408+ return (*(GET_INTERFACE (CCSPluginInterface, CCS_PLUGIN_INTERFACE_TYPE, plugin))->pluginGetShortDesc) (plugin);
409+}
410+
411+char * ccsPluginGetLongDesc (CCSPlugin *plugin)
412+{
413+ return (*(GET_INTERFACE (CCSPluginInterface, CCS_PLUGIN_INTERFACE_TYPE, plugin))->pluginGetLongDesc) (plugin);
414+}
415+
416+char * ccsPluginGetHints (CCSPlugin *plugin)
417+{
418+ return (*(GET_INTERFACE (CCSPluginInterface, CCS_PLUGIN_INTERFACE_TYPE, plugin))->pluginGetHints) (plugin);
419+}
420+
421+char * ccsPluginGetCategory (CCSPlugin *plugin)
422+{
423+ return (*(GET_INTERFACE (CCSPluginInterface, CCS_PLUGIN_INTERFACE_TYPE, plugin))->pluginGetCategory) (plugin);
424+}
425+
426+CCSStringList ccsPluginGetLoadAfter (CCSPlugin *plugin)
427+{
428+ return (*(GET_INTERFACE (CCSPluginInterface, CCS_PLUGIN_INTERFACE_TYPE, plugin))->pluginGetLoadAfter) (plugin);
429+}
430+
431+CCSStringList ccsPluginGetLoadBefore (CCSPlugin *plugin)
432+{
433+ return (*(GET_INTERFACE (CCSPluginInterface, CCS_PLUGIN_INTERFACE_TYPE, plugin))->pluginGetLoadBefore) (plugin);
434+}
435+
436+CCSStringList ccsPluginGetRequiresPlugins (CCSPlugin *plugin)
437+{
438+ return (*(GET_INTERFACE (CCSPluginInterface, CCS_PLUGIN_INTERFACE_TYPE, plugin))->pluginGetRequiresPlugins) (plugin);
439+}
440+
441+CCSStringList ccsPluginGetConflictPlugins (CCSPlugin *plugin)
442+{
443+ return (*(GET_INTERFACE (CCSPluginInterface, CCS_PLUGIN_INTERFACE_TYPE, plugin))->pluginGetConflictPlugins) (plugin);
444+}
445+
446+CCSStringList ccsPluginGetProvidesFeatures (CCSPlugin *plugin)
447+{
448+ return (*(GET_INTERFACE (CCSPluginInterface, CCS_PLUGIN_INTERFACE_TYPE, plugin))->pluginGetProvidesFeatures) (plugin);
449+}
450+
451 CCSStringList ccsPluginGetRequiresFeatures (CCSPlugin *plugin)
452 {
453- PLUGIN_PRIV (plugin);
454-
455- return pPrivate->requiresFeature;
456+ return (*(GET_INTERFACE (CCSPluginInterface, CCS_PLUGIN_INTERFACE_TYPE, plugin))->pluginGetRequiresFeatures) (plugin);
457 }
458
459 void * ccsPluginGetPrivatePtr (CCSPlugin *plugin)
460 {
461- PLUGIN_PRIV (plugin);
462-
463- return pPrivate->privatePtr;
464+ return (*(GET_INTERFACE (CCSPluginInterface, CCS_PLUGIN_INTERFACE_TYPE, plugin))->pluginGetPrivatePtr) (plugin);
465 }
466
467 void ccsPluginSetPrivatePtr (CCSPlugin *plugin, void *ptr)
468 {
469- PLUGIN_PRIV (plugin);
470-
471- pPrivate->privatePtr = ptr;
472+ (*(GET_INTERFACE (CCSPluginInterface, CCS_PLUGIN_INTERFACE_TYPE, plugin))->pluginSetPrivatePtr) (plugin, ptr);
473 }
474
475 CCSContext * ccsPluginGetContext (CCSPlugin *plugin)
476 {
477+ return (*(GET_INTERFACE (CCSPluginInterface, CCS_PLUGIN_INTERFACE_TYPE, plugin))->pluginGetContext) (plugin);
478+}
479+
480+CCSSettingList ccsGetPluginSettingsDefault (CCSPlugin *plugin)
481+{
482 PLUGIN_PRIV (plugin);
483
484- return pPrivate->context;
485+ if (!pPrivate->loaded)
486+ ccsLoadPluginSettings (plugin);
487+
488+ return pPrivate->settings;
489 }
490
491 CCSSettingList ccsGetPluginSettings (CCSPlugin *plugin)
492+{
493+ return (*(GET_INTERFACE (CCSPluginInterface, CCS_PLUGIN_INTERFACE_TYPE, plugin))->pluginGetPluginSettings) (plugin);
494+}
495
496+CCSGroupList ccsGetPluginGroupsDefault (CCSPlugin *plugin)
497 {
498 PLUGIN_PRIV (plugin);
499
500 if (!pPrivate->loaded)
501 ccsLoadPluginSettings (plugin);
502
503- return pPrivate->settings;
504+ return pPrivate->groups;
505 }
506
507 CCSGroupList ccsGetPluginGroups (CCSPlugin *plugin)
508 {
509- PLUGIN_PRIV (plugin);
510-
511- if (!pPrivate->loaded)
512- ccsLoadPluginSettings (plugin);
513-
514- return pPrivate->groups;
515+ return (*(GET_INTERFACE (CCSPluginInterface, CCS_PLUGIN_INTERFACE_TYPE, plugin))->pluginGetPluginGroups) (plugin);
516 }
517
518 Bool ccsSettingIsIntegrated (CCSSetting *setting)
519@@ -4285,16 +4382,44 @@
520 return FALSE;
521 }
522
523+CCSStrExtensionList ccsGetPluginStrExtensionsDefault (CCSPlugin *plugin)
524+{
525+ PLUGIN_PRIV (plugin);
526+
527+ if (!pPrivate->loaded)
528+ ccsLoadPluginSettings (plugin);
529+
530+ return pPrivate->stringExtensions;
531+}
532+
533 CCSStrExtensionList ccsGetPluginStrExtensions (CCSPlugin *plugin)
534 {
535- PLUGIN_PRIV (plugin);
536-
537- if (!pPrivate->loaded)
538- ccsLoadPluginSettings (plugin);
539-
540- return pPrivate->stringExtensions;
541+ return (*(GET_INTERFACE (CCSPluginInterface, CCS_PLUGIN_INTERFACE_TYPE, plugin))->pluginGetPluginStrExtensions) (plugin);
542 }
543
544+static const CCSPluginInterface ccsDefaultPluginInterface =
545+{
546+ ccsPluginGetNameDefault,
547+ ccsPluginGetShortDescDefault,
548+ ccsPluginGetLongDescDefault,
549+ ccsPluginGetHintsDefault,
550+ ccsPluginGetCategoryDefault,
551+ ccsPluginGetLoadAfterDefault,
552+ ccsPluginGetLoadBeforeDefault,
553+ ccsPluginGetRequiresPluginsDefault,
554+ ccsPluginGetConflictPluginsDefault,
555+ ccsPluginGetProvidesFeaturesDefault,
556+ ccsPluginGetRequiresFeaturesDefault,
557+ ccsPluginGetPrivatePtrDefault,
558+ ccsPluginSetPrivatePtrDefault,
559+ ccsPluginGetContextDefault,
560+ ccsFindSettingDefault,
561+ ccsGetPluginSettingsDefault,
562+ ccsGetPluginGroupsDefault,
563+ ccsReadPluginSettingsDefault,
564+ ccsGetPluginStrExtensionsDefault
565+};
566+
567 static const CCSContextInterface ccsDefaultContextInterface =
568 {
569 ccsContextGetPluginsDefault,
570@@ -4335,5 +4460,6 @@
571
572 const CCSInterfaceTable ccsDefaultInterfaceTable =
573 {
574- &ccsDefaultContextInterface
575+ &ccsDefaultContextInterface,
576+ &ccsDefaultPluginInterface
577 };

Subscribers

People subscribed via source and target branches