union {
struct {
+ bt_component_class_source_get_supported_mip_versions_method get_supported_mip_versions;
bt_component_class_source_init_method init;
bt_component_class_source_finalize_method finalize;
bt_component_class_source_query_method query;
} source;
struct {
+ bt_component_class_filter_get_supported_mip_versions_method get_supported_mip_versions;
bt_component_class_filter_init_method init;
bt_component_class_filter_finalize_method finalize;
bt_component_class_filter_query_method query;
} filter;
struct {
+ bt_component_class_sink_get_supported_mip_versions_method get_supported_mip_versions;
bt_component_class_sink_init_method init;
bt_component_class_sink_finalize_method finalize;
bt_component_class_sink_query_method query;
cc_full_descr->help =
cur_cc_descr_attr->value.help;
break;
+ case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_GET_SUPPORTED_MIP_VERSIONS_METHOD:
+ switch (cc_type) {
+ case BT_COMPONENT_CLASS_TYPE_SOURCE:
+ cc_full_descr->methods.source.get_supported_mip_versions =
+ cur_cc_descr_attr->value.source_get_supported_mip_versions_method;
+ break;
+ case BT_COMPONENT_CLASS_TYPE_FILTER:
+ cc_full_descr->methods.filter.get_supported_mip_versions =
+ cur_cc_descr_attr->value.filter_get_supported_mip_versions_method;
+ break;
+ case BT_COMPONENT_CLASS_TYPE_SINK:
+ cc_full_descr->methods.sink.get_supported_mip_versions =
+ cur_cc_descr_attr->value.sink_get_supported_mip_versions_method;
+ break;
+ default:
+ abort();
+ }
+ break;
case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INIT_METHOD:
switch (cc_type) {
case BT_COMPONENT_CLASS_TYPE_SOURCE:
switch (cc_full_descr->descriptor->type) {
case BT_COMPONENT_CLASS_TYPE_SOURCE:
+ if (cc_full_descr->methods.source.get_supported_mip_versions) {
+ ret = bt_component_class_source_set_get_supported_mip_versions_method(
+ src_comp_class,
+ cc_full_descr->methods.source.get_supported_mip_versions);
+ if (ret) {
+ BT_LIB_LOGE_APPEND_CAUSE(
+ "Cannot set source component class's \"get supported MIP versions\" method.");
+ status = BT_FUNC_STATUS_MEMORY_ERROR;
+ BT_OBJECT_PUT_REF_AND_RESET(src_comp_class);
+ goto end;
+ }
+ }
+
if (cc_full_descr->methods.source.init) {
ret = bt_component_class_source_set_init_method(
src_comp_class,
break;
case BT_COMPONENT_CLASS_TYPE_FILTER:
+ if (cc_full_descr->methods.filter.get_supported_mip_versions) {
+ ret = bt_component_class_filter_set_get_supported_mip_versions_method(
+ flt_comp_class,
+ cc_full_descr->methods.filter.get_supported_mip_versions);
+ if (ret) {
+ BT_LIB_LOGE_APPEND_CAUSE(
+ "Cannot set filter component class's \"get supported MIP versions\" method.");
+ status = BT_FUNC_STATUS_MEMORY_ERROR;
+ BT_OBJECT_PUT_REF_AND_RESET(flt_comp_class);
+ goto end;
+ }
+ }
+
if (cc_full_descr->methods.filter.init) {
ret = bt_component_class_filter_set_init_method(
flt_comp_class,
break;
case BT_COMPONENT_CLASS_TYPE_SINK:
+ if (cc_full_descr->methods.sink.get_supported_mip_versions) {
+ ret = bt_component_class_sink_set_get_supported_mip_versions_method(
+ sink_comp_class,
+ cc_full_descr->methods.sink.get_supported_mip_versions);
+ if (ret) {
+ BT_LIB_LOGE_APPEND_CAUSE(
+ "Cannot set sink component class's \"get supported MIP versions\" method.");
+ status = BT_FUNC_STATUS_MEMORY_ERROR;
+ BT_OBJECT_PUT_REF_AND_RESET(sink_comp_class);
+ goto end;
+ }
+ }
+
if (cc_full_descr->methods.sink.init) {
ret = bt_component_class_sink_set_init_method(
sink_comp_class,