/*
* plugin-registry.h
* Copyright 2009 John Lindgren
*
* This file is part of Audacious.
*
* Audacious is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, version 2 or version 3 of the License.
*
* Audacious is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* Audacious. If not, see .
*
* The Audacious team does not consider modular code linking to Audacious or
* using our public API to be a derived work.
*/
#ifndef AUDACIOUS_PLUGIN_REGISTRY_H
#define AUDACIOUS_PLUGIN_REGISTRY_H
#include
#include "plugin.h"
enum {PLUGIN_TYPE_BASIC, PLUGIN_TYPE_INPUT, PLUGIN_TYPE_OUTPUT,
PLUGIN_TYPE_EFFECT, PLUGIN_TYPE_VIS, PLUGIN_TYPE_IFACE, PLUGIN_TYPE_GENERAL,
PLUGIN_TYPES};
enum {INPUT_KEY_SCHEME, INPUT_KEY_EXTENSION, INPUT_KEY_MIME, INPUT_KEYS};
void plugin_registry_load (void);
void plugin_registry_prune (void);
void plugin_registry_save (void);
void module_register (const gchar * path);
void plugin_register (const gchar * path, gint type, gint number, void * plugin);
void plugin_get_path (void * plugin, const gchar * * path, gint * type, gint *
number);
void * plugin_by_path (const gchar * path, gint type, gint number);
void plugin_for_each (gint type, gboolean (* func) (void * plugin, void * data),
void * data);
void input_plugin_set_enabled (InputPlugin * plugin, gboolean enabled);
gboolean input_plugin_get_enabled (InputPlugin * plugin);
void input_plugin_set_priority (InputPlugin * plugin, gint priority);
void input_plugin_by_priority (gboolean (* func) (InputPlugin * plugin, void *
data), void * data);
void input_plugin_add_keys (InputPlugin * plugin, gint key, GList * values);
void input_plugin_for_key (gint key, const gchar * value, gboolean (* func)
(InputPlugin * plugin, void * data), void * data);
void input_plugin_add_scheme_compat (const gchar * scheme, InputPlugin * plugin);
void input_plugin_add_mime_compat (const gchar * mime, InputPlugin * plugin);
void output_plugin_set_priority (OutputPlugin * plugin, gint priority);
void output_plugin_by_priority (gboolean (* func) (OutputPlugin * plugin, void *
data), void * data);
#endif