/usr/include/libroar/plugincontainer.h is in libroar-dev 1.0~beta11-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 | //plugincontainer.h:
/*
* Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2008-2014
*
* This file is part of libroar a part of RoarAudio,
* a cross-platform sound system for both, home and professional use.
* See README for details.
*
* This file is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3
* as published by the Free Software Foundation.
*
* libroar 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 this software; see the file COPYING. If not, write to
* the Free Software Foundation, 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*
* NOTE for everyone want's to change something and send patches:
* read README and HACKING! There a addition information on
* the license of this document you need to read before you send
* any patches.
*
* NOTE for uses of non-GPL (LGPL,...) software using libesd, libartsc
* or libpulse*:
* The libs libroaresd, libroararts and libroarpulse link this lib
* and are therefore GPL. Because of this it may be illigal to use
* them with any software that uses libesd, libartsc or libpulse*.
*/
#ifndef _LIBROARPLUGINCONTAINER_H_
#define _LIBROARPLUGINCONTAINER_H_
#include "libroar.h"
struct roar_plugincontainer;
struct roar_plugincontainer_callbacks {
/* prefree() is called before the container is freed.
*/
int (*prefree)(struct roar_plugincontainer * cont, void ** userdata);
/* freeuserdata() is called when the userdata needs to be freed.
* This is the case then the container is freed.
* It is not called when the current userdata is NULL.
* If not set or userdata is still non-NULL after this call the userdata
* is freed using roar_mm_free().
*/
int (*freeuserdata)(struct roar_plugincontainer * cont, void ** userdata);
/* freecontext() is called when the context needs to be freed.
* It is not called when the current context is NULL.
* If not set or context is still non-NULL after this call the context
* is freed using roar_mm_free().
*/
int (*freecontext)(struct roar_plugincontainer * cont, void ** context);
/* preload() and postload() are called before and after a plugin is loaded.
*/
int (*preload) (struct roar_plugincontainer * cont, void ** context,
const char * name, int flags, struct roar_dl_librarypara * para);
int (*postload)(struct roar_plugincontainer * cont, void ** context, struct roar_dl_lhandle * lhandle,
const char * name, int flags, struct roar_dl_librarypara * para);
/* preunload() and postunload() are called before and after a plugin is unloaded.
* Those functions are also called if the plugin was loaded but ra_init was not yet done or failed.
*/
int (*preunload) (struct roar_plugincontainer * cont, void ** context, struct roar_dl_lhandle * lhandle);
int (*postunload)(struct roar_plugincontainer * cont, void ** context);
/* prera_init() and postra_init() are called before and after a plugin is ra_init-ed.
* This is also true if the plugin is ra_init-ed while being loaded.
* Note the limits of roar_plugincontainer_ra_init() if this is used
* with roar_plugincontainer_ra_init().
* postra_init() is also called in case the ra_init failed.
*/
int (*prera_init) (struct roar_plugincontainer * cont, void ** context, struct roar_dl_lhandle * lhandle,
struct roar_dl_librarypara * para);
int (*postra_init)(struct roar_plugincontainer * cont, void ** context, struct roar_dl_lhandle * lhandle,
struct roar_dl_librarypara * para);
};
struct roar_plugincontainer_plugininfo {
/* The name of the plugin.
*/
const char * libname;
/* The roardl's library handle.
*/
struct roar_dl_lhandle * handle;
/* The number of librarys/plugins depending on this plugin.
*/
size_t rdepends;
/* A pointer to the current user context.
*/
void ** context;
};
/* Create a new plugin container.
* Takes a default parameter set.
*/
struct roar_plugincontainer * roar_plugincontainer_new(struct roar_dl_librarypara * default_para);
/* Create a new plugin container.
* Takes host application's appname and abiversion.
*/
struct roar_plugincontainer * roar_plugincontainer_new_simple(const char * appname, const char * abiversion);
// Increment the refrence counter.
int roar_plugincontainer_ref(struct roar_plugincontainer * cont);
/* Decrement the refrence counter.
* Unloads all plugins and frees all resources when there are no refreneces left.
*/
int roar_plugincontainer_unref(struct roar_plugincontainer * cont);
/* Set Autoappsched.
* If set the INIT and FREE appsched events are send automatically.
*/
int roar_plugincontainer_set_autoappsched(struct roar_plugincontainer * cont, int val);
/* Set callbacks.
*/
int roar_plugincontainer_set_callbacks(struct roar_plugincontainer * cont,
const struct roar_plugincontainer_callbacks * callbacks);
/* Set container's userdata.
*/
int roar_plugincontainer_set_userdata(struct roar_plugincontainer * cont, void * userdata);
/* Get container's userdata.
*/
void * roar_plugincontainer_get_userdata(struct roar_plugincontainer * cont);
/* Get a lhandle by name of the loaded plugin.
*/
struct roar_dl_lhandle * roar_plugincontainer_get_lhandle_by_name (struct roar_plugincontainer * cont,
const char * name);
/* Get infos about current state of plugin.
*/
struct roar_plugincontainer_plugininfo roar_plugincontainer_get_info_by_name (struct roar_plugincontainer * cont,
const char * name);
// plugin loading and unloading:
// Load a plugin by name.
int roar_plugincontainer_load (struct roar_plugincontainer * cont,
const char * name,
struct roar_dl_librarypara * para);
/* Load a plugin by name with extra options.
* This is for advanced applications only.
* NOTE: Using this handle after the plugin has been unloaded from the
* container results in undefind behavior.
*/
struct roar_dl_lhandle * roar_plugincontainer_load_lhandle (struct roar_plugincontainer * cont,
const char * name,
int flags,
int ra_init,
struct roar_dl_librarypara * para);
/* Unload a plugin by name.
* NOTE: The name here is from the plugin and may not match the name you load
* the plugin with.
*/
int roar_plugincontainer_unload (struct roar_plugincontainer * cont,
const char * name);
/* Load a plugin by roardl handle.
* This is for advanced applications only.
*/
int roar_plugincontainer_unload_lhandle (struct roar_plugincontainer * cont,
struct roar_dl_lhandle * lhandle);
/* Post ra_init plugins not yet inited.
* NOTE: This uses the default para,
* not the one given with roar_plugincontainer_load_lhandle().
* This is for advanced applications only.
*/
int roar_plugincontainer_ra_init (struct roar_plugincontainer * cont);
// appsched:
// Trigger an application schedule event on all plugins.
int roar_plugincontainer_appsched_trigger(struct roar_plugincontainer * cont, enum roar_dl_appsched_trigger trigger);
#endif
//ll
|