Put Python plugin support in a separate shared object
[babeltrace.git] / lib / component / component-class.c
index 72bea187c23e89fd5992aa3754651042fd11d0aa..0843e0c25d71030ff327fefb6bf4ccaf79bbd59f 100644 (file)
@@ -228,6 +228,41 @@ end:
        return ret;
 }
 
+int bt_component_class_set_query_method(
+               struct bt_component_class *component_class,
+               bt_component_class_query_method query_method)
+{
+       int ret = 0;
+
+       if (!component_class || component_class->frozen || !query_method) {
+               ret = -1;
+               goto end;
+       }
+
+       component_class->methods.query = query_method;
+
+end:
+       return ret;
+}
+
+int bt_component_class_set_new_connection_method(
+               struct bt_component_class *component_class,
+               bt_component_class_new_connection_method new_connection_method)
+{
+       int ret = 0;
+
+       if (!component_class || component_class->frozen ||
+                       !new_connection_method) {
+               ret = -1;
+               goto end;
+       }
+
+       component_class->methods.new_connection_method = new_connection_method;
+
+end:
+       return ret;
+}
+
 int bt_component_class_set_destroy_method(
                struct bt_component_class *component_class,
                bt_component_class_destroy_method destroy_method)
@@ -464,63 +499,36 @@ end:
        return ret;
 }
 
-extern int bt_component_class_sink_set_add_iterator_method(
-               struct bt_component_class *component_class,
-               bt_component_class_sink_add_iterator_method add_iterator_method)
+int bt_component_class_freeze(
+               struct bt_component_class *component_class)
 {
-       struct bt_component_class_sink *sink_class;
        int ret = 0;
 
-       if (!component_class || component_class->frozen ||
-                       !add_iterator_method ||
-                       component_class->type != BT_COMPONENT_CLASS_TYPE_SINK) {
+       if (!component_class) {
                ret = -1;
                goto end;
        }
 
-       sink_class = container_of(component_class,
-               struct bt_component_class_sink, parent);
-       sink_class->methods.add_iterator = add_iterator_method;
+       component_class->frozen = true;
 
 end:
        return ret;
 }
 
-extern int bt_component_class_filter_set_add_iterator_method(
+struct bt_value *bt_component_class_query(
                struct bt_component_class *component_class,
-               bt_component_class_filter_add_iterator_method add_iterator_method)
-{
-       struct bt_component_class_filter *filter_class;
-       int ret = 0;
-
-       if (!component_class || component_class->frozen ||
-                       !add_iterator_method ||
-                       component_class->type !=
-                       BT_COMPONENT_CLASS_TYPE_FILTER) {
-               ret = -1;
-               goto end;
-       }
-
-       filter_class = container_of(component_class,
-               struct bt_component_class_filter, parent);
-       filter_class->methods.add_iterator = add_iterator_method;
-
-end:
-       return ret;
-}
-
-int bt_component_class_freeze(
-               struct bt_component_class *component_class)
+               const char *object, struct bt_value *params)
 {
-       int ret = 0;
+       struct bt_value *results = NULL;
 
-       if (!component_class) {
-               ret = -1;
+       if (!component_class || !object || !params ||
+                       !component_class->methods.query) {
                goto end;
        }
 
-       component_class->frozen = true;
+       results = component_class->methods.query(component_class,
+               object, params);
 
 end:
-       return ret;
+       return results;
 }
This page took 0.024563 seconds and 4 git commands to generate.