Audacious  $Id:Doxyfile42802007-03-2104:39:00Znenolod$
plugins.h
Go to the documentation of this file.
00001 /*
00002  * plugins.h
00003  * Copyright 2010 John Lindgren
00004  *
00005  * This file is part of Audacious.
00006  *
00007  * Audacious is free software: you can redistribute it and/or modify it under
00008  * the terms of the GNU General Public License as published by the Free Software
00009  * Foundation, version 2 or version 3 of the License.
00010  *
00011  * Audacious is distributed in the hope that it will be useful, but WITHOUT ANY
00012  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
00013  * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
00014  *
00015  * You should have received a copy of the GNU General Public License along with
00016  * Audacious. If not, see <http://www.gnu.org/licenses/>.
00017  *
00018  * The Audacious team does not consider modular code linking to Audacious or
00019  * using our public API to be a derived work.
00020  */
00021 
00022 #ifndef AUDACIOUS_PLUGINS_H
00023 #define AUDACIOUS_PLUGINS_H
00024 
00025 #include <glib.h>
00026 
00027 #include <audacious/api.h>
00028 #include <audacious/types.h>
00029 
00030 enum {
00031  PLUGIN_TYPE_LOWLEVEL,
00032  PLUGIN_TYPE_TRANSPORT,
00033  PLUGIN_TYPE_PLAYLIST,
00034  PLUGIN_TYPE_INPUT,
00035  PLUGIN_TYPE_EFFECT,
00036  PLUGIN_TYPE_OUTPUT,
00037  PLUGIN_TYPE_VIS,
00038  PLUGIN_TYPE_GENERAL,
00039  PLUGIN_TYPE_IFACE,
00040  PLUGIN_TYPES};
00041 
00042 typedef gboolean (* PluginForEachFunc) (PluginHandle * plugin, void * data);
00043 
00044 #define AUD_API_NAME PluginsAPI
00045 #define AUD_API_SYMBOL plugins_api
00046 
00047 #ifdef _AUDACIOUS_CORE
00048 
00049 #include "api-local-begin.h"
00050 #include "plugins-api.h"
00051 #include "api-local-end.h"
00052 
00053 enum {
00054  INPUT_KEY_SCHEME,
00055  INPUT_KEY_EXTENSION,
00056  INPUT_KEY_MIME,
00057  INPUT_KEYS};
00058 
00059 /* plugin-init.c */
00060 void start_plugins_one (void);
00061 void start_plugins_two (void);
00062 void stop_plugins_two (void);
00063 void stop_plugins_one (void);
00064 
00065 /* plugin-registry.c */
00066 void plugin_registry_load (void);
00067 void plugin_registry_prune (void);
00068 void plugin_registry_save (void);
00069 
00070 void module_register (const gchar * path);
00071 void plugin_register (gint type, const gchar * path, gint number, const void *
00072  header);
00073 
00074 void plugin_set_enabled (PluginHandle * plugin, gboolean enabled);
00075 
00076 PluginHandle * transport_plugin_for_scheme (const gchar * scheme);
00077 PluginHandle * playlist_plugin_for_extension (const gchar * extension);
00078 void input_plugin_for_key (gint key, const gchar * value, PluginForEachFunc
00079  func, void * data);
00080 gboolean input_plugin_has_images (PluginHandle * plugin);
00081 gboolean input_plugin_has_subtunes (PluginHandle * plugin);
00082 gboolean input_plugin_can_write_tuple (PluginHandle * plugin);
00083 gboolean input_plugin_has_infowin (PluginHandle * plugin);
00084 
00085 /* pluginenum.c */
00086 void plugin_system_init (void);
00087 void plugin_system_cleanup (void);
00088 void module_load (const gchar * path);
00089 
00090 #else
00091 
00092 #include <audacious/api-define-begin.h>
00093 #include <audacious/plugins-api.h>
00094 #include <audacious/api-define-end.h>
00095 
00096 #include <audacious/api-alias-begin.h>
00097 #include <audacious/plugins-api.h>
00098 #include <audacious/api-alias-end.h>
00099 
00100 #endif
00101 
00102 #undef AUD_API_NAME
00103 #undef AUD_API_SYMBOL
00104 
00105 #endif
00106 
00107 #ifdef AUD_API_DECLARE
00108 
00109 #define AUD_API_NAME PluginsAPI
00110 #define AUD_API_SYMBOL plugins_api
00111 
00112 #include "api-define-begin.h"
00113 #include "plugins-api.h"
00114 #include "api-define-end.h"
00115 
00116 #include "api-declare-begin.h"
00117 #include "plugins-api.h"
00118 #include "api-declare-end.h"
00119 
00120 #undef AUD_API_NAME
00121 #undef AUD_API_SYMBOL
00122 
00123 #endif