diff src/audacious/pluginenum.c @ 3682:84bc78954db5

Start working on exporting all public functions via a vtable. The API version will be bumped to 7 once I am done and -Wl,-export-dynamic is removed.
author William Pitcock <nenolod@atheme.org>
date Mon, 01 Oct 2007 23:00:46 -0500
parents 6aea4fb32ef4
children 4284187479d7
line wrap: on
line diff
--- a/src/audacious/pluginenum.c	Mon Oct 01 14:16:52 2007 -0500
+++ b/src/audacious/pluginenum.c	Mon Oct 01 23:00:46 2007 -0500
@@ -57,6 +57,35 @@
     NULL
 };
 
+/*****************************************************************/
+
+static struct _AudaciousFuncTableV1 _aud_papi_v1 = {
+    .vfs_fopen = vfs_fopen,
+    .vfs_fclose = vfs_fclose,
+    .vfs_dup = vfs_dup,
+    .vfs_fread = vfs_fread,
+    .vfs_fwrite = vfs_fwrite,
+    .vfs_getc = vfs_getc,
+    .vfs_ungetc = vfs_ungetc,
+    .vfs_fgets = vfs_fgets,
+    .vfs_fseek = vfs_fseek,
+    .vfs_rewind = vfs_rewind,
+    .vfs_ftell = vfs_ftell,
+    .vfs_feof = vfs_feof,
+    .vfs_file_test = vfs_file_test,
+    .vfs_is_writeable = vfs_is_writeable,
+    .vfs_truncate = vfs_truncate,
+    .vfs_fsize = vfs_fsize,
+    .vfs_get_metadata = vfs_get_metadata,
+    .vfs_fprintf = vfs_fprintf,
+    .vfs_register_transport = vfs_register_transport,
+    .vfs_file_get_contents = vfs_file_get_contents,
+    .vfs_is_remote = vfs_is_remote,
+    .vfs_is_streaming = vfs_is_streaming,
+}
+
+/*****************************************************************/
+
 GList *lowlevel_list = NULL;
 extern GList *vfs_transports;
 
@@ -371,11 +400,11 @@
     /* v2 plugin loading */
     if (g_module_symbol(module, "get_plugin_info", &func))
     {
-        PluginHeader *(*header_func_p)() = func;
+        PluginHeader *(*header_func_p)(struct _AudaciousFuncTableV1 *) = func;
         PluginHeader *header;
 
         /* this should never happen. */
-        g_return_if_fail((header = header_func_p()) != NULL);
+        g_return_if_fail((header = header_func_p(&_aud_papi_v1)) != NULL);
 
         plugin2_process(header, module, filename);
         return;