X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=lib%2Fgraph%2Fcomponent-source.c;h=585f9b72ba6454580d3d0a2279e2c71afba7ed02;hb=9b24b6aa4258079f2b59fa156dd3e070969f6f2a;hp=2d5039aa8d7323ef42138478d8b22622a6cc95b6;hpb=d94d92ac6656fd252a5d7bb4f6c76935ba18e62e;p=babeltrace.git diff --git a/lib/graph/component-source.c b/lib/graph/component-source.c index 2d5039aa..585f9b72 100644 --- a/lib/graph/component-source.c +++ b/lib/graph/component-source.c @@ -1,8 +1,7 @@ /* + * Copyright 2017-2018 Philippe Proulx * Copyright 2015 Jérémie Galarneau * - * Author: Jérémie Galarneau - * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights @@ -25,18 +24,17 @@ #define BT_LOG_TAG "COMP-SOURCE" #include -#include +#include +#include #include #include -#include +#include #include #include #include -#include -#include +#include +#include #include -#include -#include BT_HIDDEN void bt_component_source_destroy(struct bt_component *component) @@ -45,7 +43,7 @@ void bt_component_source_destroy(struct bt_component *component) BT_HIDDEN struct bt_component *bt_component_source_create( - struct bt_component_class *class) + const struct bt_component_class *class) { struct bt_component_source *source = NULL; @@ -59,14 +57,31 @@ end: return (void *) source; } +const bt_component_class_source * +bt_component_source_borrow_class_const( + const bt_component_source *component) +{ + struct bt_component_class *cls; + + BT_ASSERT_PRE_NON_NULL(component, "Component"); + + cls = component->parent.class; + + BT_ASSERT(cls); + BT_ASSERT(cls->type == BT_COMPONENT_CLASS_TYPE_SOURCE); + + return (bt_component_class_source *) cls; +} + uint64_t bt_component_source_get_output_port_count( - struct bt_component_source *comp) + const struct bt_component_source *comp) { return bt_component_get_output_port_count((void *) comp); } -struct bt_port_output *bt_component_source_borrow_output_port_by_name( - struct bt_component_source *comp, const char *name) +const struct bt_port_output * +bt_component_source_borrow_output_port_by_name_const( + const struct bt_component_source *comp, const char *name) { return bt_component_borrow_output_port_by_name((void *) comp, name); } @@ -79,8 +94,9 @@ bt_self_component_source_borrow_output_port_by_name( (void *) comp, name); } -struct bt_port_output *bt_component_source_borrow_output_port_by_index( - struct bt_component_source *comp, uint64_t index) +const struct bt_port_output * +bt_component_source_borrow_output_port_by_index_const( + const struct bt_component_source *comp, uint64_t index) { return bt_component_borrow_output_port_by_index((void *) comp, index); } @@ -99,13 +115,12 @@ enum bt_self_component_status bt_self_component_source_add_output_port( struct bt_self_component_port_output **self_port) { struct bt_component *comp = (void *) self_comp; - int status = BT_SELF_COMPONENT_STATUS_OK; + enum bt_self_component_status status; struct bt_port *port = NULL; /* bt_component_add_output_port() logs details and errors */ - port = (void *) bt_component_add_output_port(comp, name, user_data); - if (!port) { - status = BT_SELF_COMPONENT_STATUS_NOMEM; + status = bt_component_add_output_port(comp, name, user_data, &port); + if (status != BT_SELF_COMPONENT_STATUS_OK) { goto end; } @@ -119,3 +134,15 @@ end: bt_object_put_ref(port); return status; } + +void bt_component_source_get_ref( + const struct bt_component_source *component_source) +{ + bt_object_get_ref(component_source); +} + +void bt_component_source_put_ref( + const struct bt_component_source *component_source) +{ + bt_object_put_ref(component_source); +}