+ continue;
+ }
+
+ switch (cur_cc_descr_attr->type) {
+ case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION:
+ cc_full_descr->description =
+ cur_cc_descr_attr->value.description;
+ break;
+ case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_HELP:
+ cc_full_descr->help =
+ cur_cc_descr_attr->value.help;
+ break;
+ case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INIT_METHOD:
+ switch (cc_type) {
+ case BT_COMPONENT_CLASS_TYPE_SOURCE:
+ cc_full_descr->methods.source.init =
+ cur_cc_descr_attr->value.source_init_method;
+ break;
+ case BT_COMPONENT_CLASS_TYPE_FILTER:
+ cc_full_descr->methods.filter.init =
+ cur_cc_descr_attr->value.filter_init_method;
+ break;
+ case BT_COMPONENT_CLASS_TYPE_SINK:
+ cc_full_descr->methods.sink.init =
+ cur_cc_descr_attr->value.sink_init_method;
+ break;
+ default:
+ abort();
+ }
+ break;
+ case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_FINALIZE_METHOD:
+ switch (cc_type) {
+ case BT_COMPONENT_CLASS_TYPE_SOURCE:
+ cc_full_descr->methods.source.finalize =
+ cur_cc_descr_attr->value.source_finalize_method;
+ break;
+ case BT_COMPONENT_CLASS_TYPE_FILTER:
+ cc_full_descr->methods.filter.finalize =
+ cur_cc_descr_attr->value.filter_finalize_method;
+ break;
+ case BT_COMPONENT_CLASS_TYPE_SINK:
+ cc_full_descr->methods.sink.finalize =
+ cur_cc_descr_attr->value.sink_finalize_method;
+ break;
+ default:
+ abort();
+ }
+ break;
+ case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_QUERY_METHOD:
+ switch (cc_type) {
+ case BT_COMPONENT_CLASS_TYPE_SOURCE:
+ cc_full_descr->methods.source.query =
+ cur_cc_descr_attr->value.source_query_method;
+ break;
+ case BT_COMPONENT_CLASS_TYPE_FILTER:
+ cc_full_descr->methods.filter.query =
+ cur_cc_descr_attr->value.filter_query_method;
+ break;
+ case BT_COMPONENT_CLASS_TYPE_SINK:
+ cc_full_descr->methods.sink.query =
+ cur_cc_descr_attr->value.sink_query_method;
+ break;
+ default:
+ abort();
+ }
+ break;
+ case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_ACCEPT_INPUT_PORT_CONNECTION_METHOD:
+ switch (cc_type) {
+ case BT_COMPONENT_CLASS_TYPE_FILTER:
+ cc_full_descr->methods.filter.accept_input_port_connection =
+ cur_cc_descr_attr->value.filter_accept_input_port_connection_method;
+ break;
+ case BT_COMPONENT_CLASS_TYPE_SINK:
+ cc_full_descr->methods.sink.accept_input_port_connection =
+ cur_cc_descr_attr->value.sink_accept_input_port_connection_method;