This is similar to a component class method accepting a self component
object.
The self plugin API is empty for the moment, but we might want to add
functions which do not apply to plugin or const plugin objects later
(for example, a function to set a self plugin's private data).
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
#define __BT_PLUGIN_VERSION_MINOR 0
/* Plugin initialization function type */
#define __BT_PLUGIN_VERSION_MINOR 0
/* Plugin initialization function type */
-enum bt_plugin_init_status {
- BT_PLUGIN_INIT_STATUS_OK = 0,
- BT_PLUGIN_INIT_STATUS_NOMEM = -12,
- BT_PLUGIN_INIT_STATUS_ERROR = -1,
+enum bt_self_plugin_status {
+ BT_SELF_PLUGIN_STATUS_OK = 0,
+ BT_SELF_PLUGIN_STATUS_NOMEM = -12,
+ BT_SELF_PLUGIN_STATUS_ERROR = -1,
-typedef enum bt_plugin_init_status (*bt_plugin_init_func)(
- const bt_plugin *plugin);
+typedef struct bt_self_plugin bt_self_plugin;
+
+typedef enum bt_self_plugin_status (*bt_plugin_init_func)(
+ bt_self_plugin *plugin);
/* Plugin exit function type */
typedef void (*bt_plugin_exit_func)(void);
/* Plugin exit function type */
typedef void (*bt_plugin_exit_func)(void);
-const char *bt_plugin_init_status_string(enum bt_plugin_init_status status)
+const char *bt_self_plugin_status_string(enum bt_self_plugin_status status)
- case BT_PLUGIN_INIT_STATUS_OK:
- return "BT_PLUGIN_INIT_STATUS_OK";
- case BT_PLUGIN_INIT_STATUS_ERROR:
- return "BT_PLUGIN_INIT_STATUS_ERROR";
- case BT_PLUGIN_INIT_STATUS_NOMEM:
- return "BT_PLUGIN_INIT_STATUS_NOMEM";
+ case BT_SELF_PLUGIN_STATUS_OK:
+ return "BT_SELF_PLUGIN_STATUS_OK";
+ case BT_SELF_PLUGIN_STATUS_ERROR:
+ return "BT_SELF_PLUGIN_STATUS_ERROR";
+ case BT_SELF_PLUGIN_STATUS_NOMEM:
+ return "BT_SELF_PLUGIN_STATUS_NOMEM";
default:
return "(unknown)";
}
default:
return "(unknown)";
}
/* Initialize plugin */
if (spec->init) {
/* Initialize plugin */
if (spec->init) {
- enum bt_plugin_init_status init_status;
+ enum bt_self_plugin_status init_status;
+
BT_LOGD_STR("Calling user's plugin initialization function.");
BT_LOGD_STR("Calling user's plugin initialization function.");
- init_status = spec->init(plugin);
+ init_status = spec->init((void *) plugin);
BT_LOGD("User function returned: %s",
BT_LOGD("User function returned: %s",
- bt_plugin_init_status_string(init_status));
+ bt_self_plugin_status_string(init_status));
if (init_status < 0) {
BT_LOGW_STR("User's plugin initialization function failed.");
if (init_status < 0) {
BT_LOGW_STR("User's plugin initialization function failed.");
#include <stdlib.h>
#include <glib.h>
#include <stdlib.h>
#include <glib.h>
-static enum bt_plugin_init_status plugin_init(const bt_plugin *plugin)
+static enum bt_self_plugin_status plugin_init(bt_self_plugin *plugin)
{
g_setenv("BT_TEST_PLUGIN_INIT_CALLED", "1", 1);
{
g_setenv("BT_TEST_PLUGIN_INIT_CALLED", "1", 1);
- return BT_PLUGIN_INIT_STATUS_OK;
+ return BT_SELF_PLUGIN_STATUS_OK;
}
static void plugin_exit(void)
}
static void plugin_exit(void)