ref.h: doc: fix typo
[babeltrace.git] / include / babeltrace / plugin / component-class.h
index 8988abc246135515ca10e6f3859d2d79a55e617e..1526e4cb810042f63d0d24635780bd5739971041 100644 (file)
@@ -2,10 +2,9 @@
 #define BABELTRACE_PLUGIN_COMPONENT_CLASS_H
 
 /*
- * Babeltrace - Plugin Component Class Interface.
+ * Babeltrace - Component Class Interface.
  *
- * Copyright 2015 EfficiOS Inc.
- * Copyright 2015 Philippe Proulx <pproulx@efficios.com>
+ * Copyright 2016 Jérémie Galarneau <jeremie.galarneau@efficios.com>
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
  * SOFTWARE.
  */
 
-#include <stdint.h>
-#include <babeltrace/plugin/factory.h>
-
 #ifdef __cplusplus
 extern "C" {
-       #endif
+#endif
 
-#define BT_PLUGIN_NAME(_x)     const char *__bt_plugin_name = (_x)
-#define BT_PLUGIN_AUTHOR(_x)   const char *__bt_plugin_author = (_x)
-#define BT_PLUGIN_LICENSE(_x)  const char *__bt_plugin_license = (_x)
-#define BT_PLUGIN_INIT(_x)     void *__bt_plugin_init = (_x)
-#define BT_PLUGIN_EXIT(_x)     void *__bt_plugin_exit = (_x)
+/**
+ * Component type.
+ */
+enum bt_component_type {
+       BT_COMPONENT_TYPE_UNKNOWN =     -1,
 
-#define BT_PLUGIN_COMPONENT_CLASSES_BEGIN\
-       enum bt_status __bt_plugin_register_component_classes(\
-               struct bt_component_factory *factory)\
-       {
+       /** A source component is a notification generator. */
+       BT_COMPONENT_TYPE_SOURCE =      0,
 
-#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_ENTRY(_name, _init, _fini, _it_cr) \
-       bt_component_factory_register_source_component_class(factory, \
-               _name, _init, _fini, _it_cr);
+       /** A sink component handles incoming notifications. */
+       BT_COMPONENT_TYPE_SINK =        1,
 
-#define BT_PLUGIN_SINK_COMPONENT_CLASS_ENTRY(_name, _init, _fini, _hd_notif) \
-       bt_component_factory_register_sink_component_class(factory, \
-               _name, _init, _fini, _hd_notif);
+       /** A filter component implements both Source and Sink interfaces. */
+       BT_COMPONENT_TYPE_FILTER =      2,
+};
 
-#define BT_PLUGIN_COMPONENT_CLASSES_END\
-       \
-       return BT_STATUS_OK;\
-}\
-       \
-       BT_PLUGIN_INIT(__bt_plugin_register_component_classes);\
-       BT_PLUGIN_EXIT(NULL);
+struct bt_plugin;
+struct bt_component_class;
 
-       #ifdef __cplusplus
-}
-#endif
+
+/**
+ * Get a component class' name.
+ *
+ * @param component_class      Component class of which to get the name
+ * @returns                    Name of the component class
+ */
+extern const char *bt_component_class_get_name(
+               struct bt_component_class *component_class);
+
+/**
+ * Get a component class' description.
+ *
+ * Component classes may provide an optional description. It may, however,
+ * opt not to.
+ *
+ * @param component_class      Component class of which to get the description
+ * @returns                    Description of the component class, or NULL.
+ */
+extern const char *bt_component_class_get_description(
+               struct bt_component_class *component_class);
+
+/**
+ * Get a component class' type.
+ *
+ * @param component_class      Component class of which to get the type
+ * @returns                    One of #bt_component_type
+ */
+extern enum bt_component_type bt_component_class_get_type(
+               struct bt_component_class *component_class);
+
+/**
+ * Get a component class' plug-in.
+ *
+ * @param component_class      Component class of which to get the plug-in
+ * @returns                    The plug-in which registered the component class
+ */
+extern struct bt_plugin *bt_component_class_get_plugin(
+               struct bt_component_class *component_class);
 
 #endif /* BABELTRACE_PLUGIN_COMPONENT_CLASS_H */
This page took 0.023999 seconds and 4 git commands to generate.