+/*! @} */
+
+/*!
+@name Source component class properties
+@{
+*/
+
+/*!
+@brief
+ Sets the description of the \bt_src_comp_cls having the ID
+ \bt_p{_component_class_id} in the plugin having the ID
+ \bt_p{_plugin_id} to \bt_p{_description}.
+
+See the \ref api-comp-cls-prop-descr "description" property.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the source component class of which
+ to set the description.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the source component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the description to
+ \bt_p{_description}.
+ @endparblock
+@param[in] _description
+ @parblock
+ <code>const char *</code>
+
+ Source component class's description.
+ @endparblock
+
+@bt_pre_not_null{_description}
+*/
+#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_DESCRIPTION_WITH_ID(_plugin_id, _component_class_id, _description) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(description, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION, _plugin_id, _component_class_id, source, _description)
+
+/*!
+@brief
+ Alias of BT_PLUGIN_SOURCE_COMPONENT_CLASS_DESCRIPTION_WITH_ID() with
+ the \bt_p{_plugin_id} parameter set to <code>auto</code> and the
+ \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_DESCRIPTION(_name, _description) \
+ BT_PLUGIN_SOURCE_COMPONENT_CLASS_DESCRIPTION_WITH_ID(auto, _name, _description)
+
+/*!
+@brief
+ Sets the help text of the \bt_src_comp_cls having the ID
+ \bt_p{_component_class_id} in the plugin having the ID
+ \bt_p{_plugin_id} to \bt_p{_help_text}.
+
+See the \ref api-comp-cls-prop-help "help text" property.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the source component class of which
+ to set the help text.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the source component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the help text to
+ \bt_p{_help_text}.
+ @endparblock
+@param[in] _help_text
+ @parblock
+ <code>const char *</code>
+
+ Source component class's help text.
+ @endparblock
+
+@bt_pre_not_null{_help_text}
+*/
+#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_HELP_WITH_ID(_plugin_id, _component_class_id, _help_text) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(help, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_HELP, _plugin_id, _component_class_id, source, _help_text)
+
+/*!
+@brief
+ Alias of BT_PLUGIN_SOURCE_COMPONENT_CLASS_HELP_WITH_ID() with the
+ \bt_p{_plugin_id} parameter set to <code>auto</code> and the
+ \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_HELP(_name, _help_text) \
+ BT_PLUGIN_SOURCE_COMPONENT_CLASS_HELP_WITH_ID(auto, _name, _help_text)
+
+/*! @} */
+
+/*!
+@name Filter component class properties
+@{
+*/
+
+/*!
+@brief
+ Sets the description of the \bt_flt_comp_cls having the ID
+ \bt_p{_component_class_id} in the plugin having the ID
+ \bt_p{_plugin_id} to \bt_p{_description}.
+
+See the \ref api-comp-cls-prop-descr "description" property.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the filter component class of which
+ to set the description.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the filter component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the description to
+ \bt_p{_description}.
+ @endparblock
+@param[in] _description
+ @parblock
+ <code>const char *</code>
+
+ Filter component class's description.
+ @endparblock
+
+@bt_pre_not_null{_description}
+*/
+#define BT_PLUGIN_FILTER_COMPONENT_CLASS_DESCRIPTION_WITH_ID(_plugin_id, _component_class_id, _description) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(description, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION, _plugin_id, _component_class_id, filter, _description)
+
+/*!
+@brief
+ Alias of BT_PLUGIN_FILTER_COMPONENT_CLASS_DESCRIPTION_WITH_ID() with
+ the \bt_p{_plugin_id} parameter set to <code>auto</code> and the
+ \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_FILTER_COMPONENT_CLASS_DESCRIPTION(_name, _description) \
+ BT_PLUGIN_FILTER_COMPONENT_CLASS_DESCRIPTION_WITH_ID(auto, _name, _description)
+
+/*!
+@brief
+ Sets the help text of the \bt_flt_comp_cls having the ID
+ \bt_p{_component_class_id} in the plugin having the ID
+ \bt_p{_plugin_id} to \bt_p{_help_text}.
+
+See the \ref api-comp-cls-prop-help "help text" property.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the filter component class of which
+ to set the help text.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the filter component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the help text to
+ \bt_p{_help_text}.
+ @endparblock
+@param[in] _help_text
+ @parblock
+ <code>const char *</code>
+
+ Filter component class's help text.
+ @endparblock
+
+@bt_pre_not_null{_help_text}
+*/
+#define BT_PLUGIN_FILTER_COMPONENT_CLASS_HELP_WITH_ID(_plugin_id, _component_class_id, _help_text) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(help, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_HELP, _plugin_id, _component_class_id, filter, _help_text)
+
+/*!
+@brief
+ Alias of BT_PLUGIN_FILTER_COMPONENT_CLASS_HELP_WITH_ID() with the
+ \bt_p{_plugin_id} parameter set to <code>auto</code> and the
+ \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_FILTER_COMPONENT_CLASS_HELP(_name, _help_text) \
+ BT_PLUGIN_FILTER_COMPONENT_CLASS_HELP_WITH_ID(auto, _name, _help_text)
+
+/*! @} */
+
+/*!
+@name Sink component class properties
+@{
+*/
+
+/*!
+@brief
+ Sets the description of the \bt_sink_comp_cls having the ID
+ \bt_p{_component_class_id} in the plugin having the ID
+ \bt_p{_plugin_id} to \bt_p{_description}.
+
+See the \ref api-comp-cls-prop-descr "description" property.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the sink component class of which
+ to set the description.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the sink component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the description to
+ \bt_p{_description}.
+ @endparblock
+@param[in] _description
+ @parblock
+ <code>const char *</code>
+
+ Sink component class's description.
+ @endparblock
+
+@bt_pre_not_null{_description}
+*/
+#define BT_PLUGIN_SINK_COMPONENT_CLASS_DESCRIPTION_WITH_ID(_plugin_id, _component_class_id, _description) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(description, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION, _plugin_id, _component_class_id, sink, _description)
+
+/*!
+@brief
+ Alias of BT_PLUGIN_SINK_COMPONENT_CLASS_DESCRIPTION_WITH_ID() with
+ the \bt_p{_plugin_id} parameter set to <code>auto</code> and the
+ \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_SINK_COMPONENT_CLASS_DESCRIPTION(_name, _description) \
+ BT_PLUGIN_SINK_COMPONENT_CLASS_DESCRIPTION_WITH_ID(auto, _name, _description)
+
+/*!
+@brief
+ Sets the help text of the \bt_sink_comp_cls having the ID
+ \bt_p{_component_class_id} in the plugin having the ID
+ \bt_p{_plugin_id} to \bt_p{_help_text}.
+
+See the \ref api-comp-cls-prop-help "help text" property.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the sink component class of which
+ to set the help text.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the sink component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the help text to
+ \bt_p{_help_text}.
+ @endparblock
+@param[in] _help_text
+ @parblock
+ <code>const char *</code>
+
+ Sink component class's help text.
+ @endparblock
+
+@bt_pre_not_null{_help_text}
+*/
+#define BT_PLUGIN_SINK_COMPONENT_CLASS_HELP_WITH_ID(_plugin_id, _component_class_id, _help_text) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(help, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_HELP, _plugin_id, _component_class_id, sink, _help_text)
+
+/*!
+@brief
+ Alias of BT_PLUGIN_SINK_COMPONENT_CLASS_HELP_WITH_ID() with
+ the \bt_p{_plugin_id} parameter set to <code>auto</code> and the
+ \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_SINK_COMPONENT_CLASS_HELP(_name, _help_text) \
+ BT_PLUGIN_SINK_COMPONENT_CLASS_HELP_WITH_ID(auto, _name, _help_text)
+
+/*! @} */
+
+/*!
+@name Source component class methods
+@{
+*/
+
+/*!
+@brief
+ Sets the finalization method of the \bt_src_comp_cls having the ID
+ \bt_p{_component_class_id} in the plugin having the ID
+ \bt_p{_plugin_id} to \bt_p{_method}.
+
+See the \ref api-comp-cls-dev-meth-fini "finalize" method.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the source component class of which
+ to set the finalization method.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the source component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the finalization method to
+ \bt_p{_method}.
+ @endparblock
+@param[in] _method
+ @parblock
+ #bt_component_class_source_finalize_method
+
+ Source component class's finalization method.
+ @endparblock
+
+@bt_pre_not_null{_method}
+*/
+#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(source_finalize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_FINALIZE_METHOD, _plugin_id, _component_class_id, source, _method)
+
+/*!
+@brief
+ Alias of
+ BT_PLUGIN_SOURCE_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID()
+ with the \bt_p{_plugin_id} parameter set to <code>auto</code> and
+ the \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_FINALIZE_METHOD(_name, _method) \
+ BT_PLUGIN_SOURCE_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(auto, _name, _method)
+
+/*!
+@brief
+ Sets the \"get supported \bt_mip versions\" method of the
+ \bt_src_comp_cls having the ID \bt_p{_component_class_id} in the
+ plugin having the ID \bt_p{_plugin_id} to \bt_p{_method}.
+
+See the \ref api-comp-cls-dev-meth-mip "get supported MIP versions"
+method.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the source component class of which
+ to set the "get supported MIP versions" method.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the source component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the "get supported MIP versions"
+ method to \bt_p{_method}.
+ @endparblock
+@param[in] _method
+ @parblock
+ #bt_component_class_source_get_supported_mip_versions_method
+
+ Source component class's "get supported MIP versions" method.
+ @endparblock
+
+@bt_pre_not_null{_method}
+*/
+#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(source_get_supported_mip_versions_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_GET_SUPPORTED_MIP_VERSIONS, _plugin_id, _component_class_id, source, _method)
+
+/*!
+@brief
+ Alias of
+ BT_PLUGIN_SOURCE_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD_WITH_ID()
+ with the \bt_p{_plugin_id} parameter set to <code>auto</code> and
+ the \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD(_name, _method) \
+ BT_PLUGIN_SOURCE_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD_WITH_ID(auto, _name, _method)
+
+/*!
+@brief
+ Sets the initialization method of the \bt_src_comp_cls having the ID
+ \bt_p{_component_class_id} in the plugin having the ID
+ \bt_p{_plugin_id} to \bt_p{_method}.
+
+See the \ref api-comp-cls-dev-meth-init "initialize" method.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the source component class of which
+ to set the initialization method.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the source component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the initialization method to
+ \bt_p{_method}.
+ @endparblock
+@param[in] _method
+ @parblock
+ #bt_component_class_source_initialize_method
+
+ Source component class's initialization method.
+ @endparblock
+
+@bt_pre_not_null{_method}
+*/
+#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_INITIALIZE_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(source_initialize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INITIALIZE_METHOD, _plugin_id, _component_class_id, source, _method)
+
+/*!
+@brief
+ Alias of
+ BT_PLUGIN_SOURCE_COMPONENT_CLASS_INITIALIZE_METHOD_WITH_ID()
+ with the \bt_p{_plugin_id} parameter set to <code>auto</code> and
+ the \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_INITIALIZE_METHOD(_name, _method) \
+ BT_PLUGIN_SOURCE_COMPONENT_CLASS_INITIALIZE_METHOD_WITH_ID(auto, _name, _method)
+
+/*!
+@brief
+ Sets the finalization method of the \bt_msg_iter_cls of the
+ \bt_src_comp_cls having the ID \bt_p{_component_class_id} in the
+ plugin having the ID \bt_p{_plugin_id} to \bt_p{_method}.
+
+See the \ref api-msg-iter-cls-meth-fini "finalize" method.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the source component class of which
+ to set the finalization method of the message iterator class.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the source component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the finalization method of the
+ message iterator class to \bt_p{_method}.
+ @endparblock
+@param[in] _method
+ @parblock
+ #bt_message_iterator_class_finalize_method
+
+ Source component class's message iterator class's finalization method.
+ @endparblock
+
+@bt_pre_not_null{_method}
+*/
+#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_FINALIZE_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_finalize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_FINALIZE_METHOD, _plugin_id, _component_class_id, source, _method)
+
+/*!
+@brief
+ Alias of
+ BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_FINALIZE_METHOD_WITH_ID()
+ with the \bt_p{_plugin_id} parameter set to <code>auto</code> and
+ the \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_FINALIZE_METHOD(_name, _method) \
+ BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_FINALIZE_METHOD_WITH_ID(auto, _name, _method)
+
+/*!
+@brief
+ Sets the initialization method of the \bt_msg_iter_cls of the
+ \bt_src_comp_cls having the ID \bt_p{_component_class_id} in the
+ plugin having the ID \bt_p{_plugin_id} to \bt_p{_method}.
+
+See the \ref api-msg-iter-cls-meth-init "initialize" method.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the source component class of which
+ to set the initialization method of the message iterator class.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the source component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the initialization method of the
+ message iterator class to \bt_p{_method}.
+ @endparblock
+@param[in] _method
+ @parblock
+ #bt_message_iterator_class_initialize_method
+
+ Source component class's message iterator class's initialization
+ method.
+ @endparblock
+
+@bt_pre_not_null{_method}
+*/
+#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_INITIALIZE_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_initialize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_INITIALIZE_METHOD, _plugin_id, _component_class_id, source, _method)
+
+/*!
+@brief
+ Alias of
+ BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_INITIALIZE_METHOD_WITH_ID()
+ with the \bt_p{_plugin_id} parameter set to <code>auto</code> and
+ the \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_INITIALIZE_METHOD(_name, _method) \
+ BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_INITIALIZE_METHOD_WITH_ID(auto, _name, _method)
+
+/*!
+@brief
+ Sets the "seek beginning" and "can seek beginning?" methods of the
+ \bt_msg_iter_cls of the \bt_src_comp_cls having the ID
+ \bt_p{_component_class_id} in the plugin having the ID
+ \bt_p{_plugin_id} to \bt_p{_seek_method} and
+ \bt_p{_can_seek_method}.
+
+See the \ref api-msg-iter-cls-meth-seek-beg "seek beginning" and
+\ref api-msg-iter-cls-meth-can-seek-beg "can seek beginning?" methods.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the source component class of which
+ to set the "seek beginning" and "can seek beginning?" methods of the
+ message iterator class.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the source component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the "seek beginning" and "can
+ seek beginning" methods of the message iterator class to
+ \bt_p{_seek_method} and \bt_p{_can_seek_method}.
+ @endparblock
+@param[in] _seek_method
+ @parblock
+ #bt_message_iterator_class_seek_beginning_method
+
+ Source component class's message iterator class's "seek beginning"
+ method.
+ @endparblock
+@param[in] _can_seek_method
+ @parblock
+ #bt_message_iterator_class_can_seek_beginning_method
+
+ Source component class's message iterator class's
+ "can seek beginning?" method.
+
+ Can be \c NULL, in which case it is equivalent to setting a method
+ which always returns #BT_TRUE.
+ @endparblock
+
+@bt_pre_not_null{_seek_method}
+@bt_pre_not_null{_can_seek_method}
+*/
+#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_BEGINNING_METHODS_WITH_ID(_plugin_id, _component_class_id, _seek_method, _can_seek_method) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_seek_beginning_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_SEEK_BEGINNING_METHOD, _plugin_id, _component_class_id, source, _seek_method); \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_can_seek_beginning_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_CAN_SEEK_BEGINNING_METHOD, _plugin_id, _component_class_id, source, _can_seek_method)
+
+/*!
+@brief
+ Alias of
+ BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_BEGINNING_METHODS()
+ with the \bt_p{_plugin_id} parameter set to <code>auto</code> and
+ the \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_BEGINNING_METHODS(_name, _seek_method, _can_seek_method) \
+ BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_BEGINNING_METHODS_WITH_ID(auto, _name, _seek_method, _can_seek_method)
+
+/*!
+@brief
+ Sets the "seek ns from origin" and "can seek ns from origin?"
+ methods of the \bt_msg_iter_cls of the \bt_src_comp_cls having the
+ ID \bt_p{_component_class_id} in the plugin having the ID
+ \bt_p{_plugin_id} to \bt_p{_seek_method} and
+ \bt_p{_can_seek_method}.
+
+See the \ref api-msg-iter-cls-meth-seek-ns "seek ns from origin" and
+\ref api-msg-iter-cls-meth-can-seek-ns "can seek ns from origin?"
+methods.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the source component class of which
+ to set the "seek ns from origin" and "can seek ns from origin?"
+ methods of the message iterator class.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the source component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the "seek ns from origin" and
+ "can seek ns from origin" methods of the message iterator class to
+ \bt_p{_seek_method} and \bt_p{_can_seek_method}.
+ @endparblock
+@param[in] _seek_method
+ @parblock
+ #bt_message_iterator_class_seek_ns_from_origin_method
+
+ Source component class's message iterator class's "seek ns from
+ origin" method.
+ @endparblock
+@param[in] _can_seek_method
+ @parblock
+ #bt_message_iterator_class_can_seek_ns_from_origin_method
+
+ Source component class's message iterator class's "can seek ns from
+ origin?" method.
+
+ Can be \c NULL, in which case it is equivalent to setting a method
+ which always returns #BT_TRUE.
+ @endparblock
+
+@bt_pre_not_null{_seek_method}
+@bt_pre_not_null{_can_seek_method}
+*/
+#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_NS_FROM_ORIGIN_METHODS_WITH_ID(_plugin_id, _component_class_id, _seek_method, _can_seek_method) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_seek_ns_from_origin_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_SEEK_NS_FROM_ORIGIN_METHOD, _plugin_id, _component_class_id, source, _seek_method); \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_can_seek_ns_from_origin_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_CAN_SEEK_NS_FROM_ORIGIN_METHOD, _plugin_id, _component_class_id, source, _can_seek_method)
+
+/*!
+@brief
+ Alias of
+ BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_NS_FROM_ORIGIN_METHODS_WITH_ID()
+ with the \bt_p{_plugin_id} parameter set to <code>auto</code> and
+ the \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_NS_FROM_ORIGIN_METHODS(_name, _seek_method, _can_seek_method) \
+ BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_NS_FROM_ORIGIN_METHODS_WITH_ID(auto, _name, _seek_method, _can_seek_method)
+
+/*!
+@brief
+ Sets the "output port connected" method of the \bt_src_comp_cls
+ having the ID \bt_p{_component_class_id} in the plugin having the ID
+ \bt_p{_plugin_id} to \bt_p{_method}.
+
+See the
+\ref api-comp-cls-dev-meth-oport-connected "output port connected"
+method.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the source component class of which
+ to set the "output port connected" method.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the source component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the "output port connected"
+ method to \bt_p{_method}.
+ @endparblock
+@param[in] _method
+ @parblock
+ #bt_component_class_source_output_port_connected_method
+
+ Source component class's "output port connected" method.
+ @endparblock
+
+@bt_pre_not_null{_method}
+*/
+#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_OUTPUT_PORT_CONNECTED_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(source_output_port_connected_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_OUTPUT_PORT_CONNECTED_METHOD, _plugin_id, _component_class_id, source, _method)
+
+/*!
+@brief
+ Alias of
+ BT_PLUGIN_SOURCE_COMPONENT_CLASS_OUTPUT_PORT_CONNECTED_METHOD_WITH_ID()
+ with the \bt_p{_plugin_id} parameter set to <code>auto</code> and
+ the \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_OUTPUT_PORT_CONNECTED_METHOD(_name, _method) \
+ BT_PLUGIN_SOURCE_COMPONENT_CLASS_OUTPUT_PORT_CONNECTED_METHOD_WITH_ID(auto, _name, _method)
+
+/*!
+@brief
+ Sets the query method of the \bt_src_comp_cls
+ having the ID \bt_p{_component_class_id} in the plugin having the ID
+ \bt_p{_plugin_id} to \bt_p{_method}.
+
+See the \ref api-comp-cls-dev-meth-query "query" method.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the source component class of which
+ to set the query method.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the source component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the query
+ method to \bt_p{_method}.
+ @endparblock
+@param[in] _method
+ @parblock
+ #bt_component_class_source_query_method
+
+ Source component class's query method.
+ @endparblock
+
+@bt_pre_not_null{_method}
+*/
+#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(source_query_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_QUERY_METHOD, _plugin_id, _component_class_id, source, _method)
+
+/*!
+@brief
+ Alias of
+ BT_PLUGIN_SOURCE_COMPONENT_CLASS_QUERY_METHOD_WITH_ID()
+ with the \bt_p{_plugin_id} parameter set to <code>auto</code> and
+ the \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_QUERY_METHOD(_name, _method) \
+ BT_PLUGIN_SOURCE_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(auto, _name, _method)
+
+/*! @} */
+
+/*!
+@name Filter component class methods
+@{
+*/
+
+/*!
+@brief
+ Sets the finalization method of the \bt_flt_comp_cls having the ID
+ \bt_p{_component_class_id} in the plugin having the ID
+ \bt_p{_plugin_id} to \bt_p{_method}.
+
+See the \ref api-comp-cls-dev-meth-fini "finalize" method.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the filter component class of which
+ to set the finalization method.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the filter component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the finalization method to
+ \bt_p{_method}.
+ @endparblock
+@param[in] _method
+ @parblock
+ #bt_component_class_filter_finalize_method
+
+ Filter component class's finalization method.
+ @endparblock
+
+@bt_pre_not_null{_method}
+*/
+#define BT_PLUGIN_FILTER_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(filter_finalize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_FINALIZE_METHOD, _plugin_id, _component_class_id, filter, _method)
+
+/*!
+@brief
+ Alias of
+ BT_PLUGIN_FILTER_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID()
+ with the \bt_p{_plugin_id} parameter set to <code>auto</code> and
+ the \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_FILTER_COMPONENT_CLASS_FINALIZE_METHOD(_name, _method) \
+ BT_PLUGIN_FILTER_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(auto, _name, _method)
+
+/*!
+@brief
+ Sets the \"get supported \bt_mip versions\" method of the
+ \bt_flt_comp_cls having the ID \bt_p{_component_class_id} in the
+ plugin having the ID \bt_p{_plugin_id} to \bt_p{_method}.
+
+See the \ref api-comp-cls-dev-meth-mip "get supported MIP versions"
+method.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the filter component class of which
+ to set the "get supported MIP versions" method.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the filter component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the "get supported MIP versions"
+ method to \bt_p{_method}.
+ @endparblock
+@param[in] _method
+ @parblock
+ #bt_component_class_filter_get_supported_mip_versions_method
+
+ Filter component class's "get supported MIP versions" method.
+ @endparblock
+
+@bt_pre_not_null{_method}
+*/
+#define BT_PLUGIN_FILTER_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(filter_get_supported_mip_versions_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_GET_SUPPORTED_MIP_VERSIONS, _plugin_id, _component_class_id, filter, _method)
+
+/*!
+@brief
+ Alias of
+ BT_PLUGIN_FILTER_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD_WITH_ID()
+ with the \bt_p{_plugin_id} parameter set to <code>auto</code> and
+ the \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_FILTER_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD(_name, _method) \
+ BT_PLUGIN_FILTER_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD_WITH_ID(auto, _name, _method)
+
+/*!
+@brief
+ Sets the initialization method of the \bt_flt_comp_cls having the ID
+ \bt_p{_component_class_id} in the plugin having the ID
+ \bt_p{_plugin_id} to \bt_p{_method}.
+
+See the \ref api-comp-cls-dev-meth-init "initialize" method.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the filter component class of which
+ to set the initialization method.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the filter component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the initialization method to
+ \bt_p{_method}.
+ @endparblock
+@param[in] _method
+ @parblock
+ #bt_component_class_filter_initialize_method
+
+ Filter component class's initialization method.
+ @endparblock
+
+@bt_pre_not_null{_method}
+*/
+#define BT_PLUGIN_FILTER_COMPONENT_CLASS_INITIALIZE_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(filter_initialize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INITIALIZE_METHOD, _plugin_id, _component_class_id, filter, _method)
+
+/*!
+@brief
+ Alias of
+ BT_PLUGIN_FILTER_COMPONENT_CLASS_INITIALIZE_METHOD_WITH_ID()
+ with the \bt_p{_plugin_id} parameter set to <code>auto</code> and
+ the \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_FILTER_COMPONENT_CLASS_INITIALIZE_METHOD(_name, _method) \
+ BT_PLUGIN_FILTER_COMPONENT_CLASS_INITIALIZE_METHOD_WITH_ID(auto, _name, _method)
+
+/*!
+@brief
+ Sets the "input port connected" method of the \bt_flt_comp_cls
+ having the ID \bt_p{_component_class_id} in the plugin having the ID
+ \bt_p{_plugin_id} to \bt_p{_method}.
+
+See the
+\ref api-comp-cls-dev-meth-iport-connected "input port connected"
+method.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the filter component class of which
+ to set the "input port connected" method.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the filter component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the "input port connected"
+ method to \bt_p{_method}.
+ @endparblock
+@param[in] _method
+ @parblock
+ #bt_component_class_filter_input_port_connected_method
+
+ Filter component class's "input port connected" method.
+ @endparblock
+
+@bt_pre_not_null{_method}
+*/
+#define BT_PLUGIN_FILTER_COMPONENT_CLASS_INPUT_PORT_CONNECTED_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(filter_input_port_connected_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INPUT_PORT_CONNECTED_METHOD, _plugin_id, _component_class_id, filter, _method)
+
+/*!
+@brief
+ Alias of
+ BT_PLUGIN_FILTER_COMPONENT_CLASS_INPUT_PORT_CONNECTED_METHOD_WITH_ID()
+ with the \bt_p{_plugin_id} parameter set to <code>auto</code> and
+ the \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_FILTER_COMPONENT_CLASS_INPUT_PORT_CONNECTED_METHOD(_name, _method) \
+ BT_PLUGIN_FILTER_COMPONENT_CLASS_INPUT_PORT_CONNECTED_METHOD_WITH_ID(auto, _name, _method)
+
+/*!
+@brief
+ Sets the finalization method of the \bt_msg_iter_cls of the
+ \bt_flt_comp_cls having the ID \bt_p{_component_class_id} in the
+ plugin having the ID \bt_p{_plugin_id} to \bt_p{_method}.
+
+See the \ref api-msg-iter-cls-meth-fini "finalize" method.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the filter component class of which
+ to set the finalization method of the message iterator class.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the filter component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the finalization method of the
+ message iterator class to \bt_p{_method}.
+ @endparblock
+@param[in] _method
+ @parblock
+ #bt_message_iterator_class_finalize_method
+
+ Filter component class's message iterator class's finalization method.
+ @endparblock
+
+@bt_pre_not_null{_method}
+*/
+#define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_FINALIZE_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_finalize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_FINALIZE_METHOD, _plugin_id, _component_class_id, filter, _method)
+
+/*!
+@brief
+ Alias of
+ BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_FINALIZE_METHOD_WITH_ID()
+ with the \bt_p{_plugin_id} parameter set to <code>auto</code> and
+ the \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_FINALIZE_METHOD(_name, _method) \
+ BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_FINALIZE_METHOD_WITH_ID(auto, _name, _method)
+
+/*!
+@brief
+ Sets the initialization method of the \bt_msg_iter_cls of the
+ \bt_flt_comp_cls having the ID \bt_p{_component_class_id} in the
+ plugin having the ID \bt_p{_plugin_id} to \bt_p{_method}.
+
+See the \ref api-msg-iter-cls-meth-init "initialize" method.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the filter component class of which
+ to set the initialization method of the message iterator class.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the filter component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the initialization method of the
+ message iterator class to \bt_p{_method}.
+ @endparblock
+@param[in] _method
+ @parblock
+ #bt_message_iterator_class_initialize_method
+
+ Filter component class's message iterator class's initialization
+ method.
+ @endparblock
+
+@bt_pre_not_null{_method}
+*/
+#define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_INITIALIZE_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_initialize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_INITIALIZE_METHOD, _plugin_id, _component_class_id, filter, _method)
+
+/*!
+@brief
+ Alias of
+ BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_INITIALIZE_METHOD_WITH_ID()
+ with the \bt_p{_plugin_id} parameter set to <code>auto</code> and
+ the \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_INITIALIZE_METHOD(_name, _method) \
+ BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_INITIALIZE_METHOD_WITH_ID(auto, _name, _method)
+
+/*!
+@brief
+ Sets the "seek beginning" and "can seek beginning?" methods of the
+ \bt_msg_iter_cls of the \bt_flt_comp_cls having the ID
+ \bt_p{_component_class_id} in the plugin having the ID
+ \bt_p{_plugin_id} to \bt_p{_seek_method} and
+ \bt_p{_can_seek_method}.
+
+See the \ref api-msg-iter-cls-meth-seek-beg "seek beginning" and
+\ref api-msg-iter-cls-meth-can-seek-beg "can seek beginning?" methods.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the filter component class of which
+ to set the "seek beginning" and "can seek beginning?" methods of the
+ message iterator class.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the filter component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the "seek beginning" and "can
+ seek beginning" methods of the message iterator class to
+ \bt_p{_seek_method} and \bt_p{_can_seek_method}.
+ @endparblock
+@param[in] _seek_method
+ @parblock
+ #bt_message_iterator_class_seek_beginning_method
+
+ Filter component class's message iterator class's "seek beginning"
+ method.
+ @endparblock
+@param[in] _can_seek_method
+ @parblock
+ #bt_message_iterator_class_can_seek_beginning_method
+
+ Filter component class's message iterator class's
+ "can seek beginning?" method.
+
+ Can be \c NULL, in which case it is equivalent to setting a method
+ which always returns #BT_TRUE.
+ @endparblock
+
+@bt_pre_not_null{_seek_method}
+@bt_pre_not_null{_can_seek_method}
+*/
+#define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_BEGINNING_METHODS_WITH_ID(_plugin_id, _component_class_id, _seek_method, _can_seek_method) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_seek_beginning_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_SEEK_BEGINNING_METHOD, _plugin_id, _component_class_id, filter, _seek_method); \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_can_seek_beginning_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_CAN_SEEK_BEGINNING_METHOD, _plugin_id, _component_class_id, filter, _can_seek_method);
+
+/*!
+@brief
+ Alias of
+ BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_BEGINNING_METHODS_WITH_ID()
+ with the \bt_p{_plugin_id} parameter set to <code>auto</code> and
+ the \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_BEGINNING_METHODS(_name, _seek_method, _can_seek_method) \
+ BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_BEGINNING_METHODS_WITH_ID(auto, _name, _seek_method, _can_seek_method)
+
+/*!
+@brief
+ Sets the "seek ns from origin" and "can seek ns from origin?"
+ methods of the \bt_msg_iter_cls of the \bt_flt_comp_cls having the
+ ID \bt_p{_component_class_id} in the plugin having the ID
+ \bt_p{_plugin_id} to \bt_p{_seek_method} and
+ \bt_p{_can_seek_method}.
+
+See the \ref api-msg-iter-cls-meth-seek-ns "seek ns from origin" and
+\ref api-msg-iter-cls-meth-can-seek-ns "can seek ns from origin?"
+methods.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the filter component class of which
+ to set the "seek ns from origin" and "can seek ns from origin?"
+ methods of the message iterator class.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the filter component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the "seek ns from origin" and
+ "can seek ns from origin" methods of the message iterator class to
+ \bt_p{_seek_method} and \bt_p{_can_seek_method}.
+ @endparblock
+@param[in] _seek_method
+ @parblock
+ #bt_message_iterator_class_seek_ns_from_origin_method
+
+ Filter component class's message iterator class's "seek ns from
+ origin" method.
+ @endparblock
+@param[in] _can_seek_method
+ @parblock
+ #bt_message_iterator_class_can_seek_ns_from_origin_method
+
+ Filter component class's message iterator class's "can seek ns from
+ origin?" method.
+
+ Can be \c NULL, in which case it is equivalent to setting a method
+ which always returns #BT_TRUE.
+ @endparblock
+
+@bt_pre_not_null{_seek_method}
+@bt_pre_not_null{_can_seek_method}
+*/
+#define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_NS_FROM_ORIGIN_METHODS_WITH_ID(_plugin_id, _component_class_id, _seek_method, _can_seek_method) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_seek_ns_from_origin_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_SEEK_NS_FROM_ORIGIN_METHOD, _plugin_id, _component_class_id, filter, _seek_method); \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_can_seek_ns_from_origin_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_CAN_SEEK_NS_FROM_ORIGIN_METHOD, _plugin_id, _component_class_id, filter, _can_seek_method)
+
+/*!
+@brief
+ Alias of
+ BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_NS_FROM_ORIGIN_METHODS_WITH_ID()
+ with the \bt_p{_plugin_id} parameter set to <code>auto</code> and
+ the \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_NS_FROM_ORIGIN_METHODS(_name, _seek_method, _can_seek_method) \
+ BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_NS_FROM_ORIGIN_METHODS_WITH_ID(auto, _name, _seek_method, _can_seek_method)
+
+/*!
+@brief
+ Sets the "output port connected" method of the \bt_flt_comp_cls
+ having the ID \bt_p{_component_class_id} in the plugin having the ID
+ \bt_p{_plugin_id} to \bt_p{_method}.
+
+See the
+\ref api-comp-cls-dev-meth-oport-connected "output port connected"
+method.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the filter component class of which
+ to set the "output port connected" method.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the filter component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the "output port connected"
+ method to \bt_p{_method}.
+ @endparblock
+@param[in] _method
+ @parblock
+ #bt_component_class_filter_output_port_connected_method
+
+ Filter component class's "output port connected" method.
+ @endparblock
+
+@bt_pre_not_null{_method}
+*/
+#define BT_PLUGIN_FILTER_COMPONENT_CLASS_OUTPUT_PORT_CONNECTED_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(filter_output_port_connected_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_OUTPUT_PORT_CONNECTED_METHOD, _plugin_id, _component_class_id, filter, _method)
+
+/*!
+@brief
+ Alias of
+ BT_PLUGIN_FILTER_COMPONENT_CLASS_OUTPUT_PORT_CONNECTED_METHOD_WITH_ID()
+ with the \bt_p{_plugin_id} parameter set to <code>auto</code> and
+ the \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_FILTER_COMPONENT_CLASS_OUTPUT_PORT_CONNECTED_METHOD(_name, _method) \
+ BT_PLUGIN_FILTER_COMPONENT_CLASS_OUTPUT_PORT_CONNECTED_METHOD_WITH_ID(auto, _name, _method)
+
+/*!
+@brief
+ Sets the query method of the \bt_flt_comp_cls
+ having the ID \bt_p{_component_class_id} in the plugin having the ID
+ \bt_p{_plugin_id} to \bt_p{_method}.
+
+See the \ref api-comp-cls-dev-meth-query "query" method.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the filter component class of which
+ to set the query method.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the filter component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the query
+ method to \bt_p{_method}.
+ @endparblock
+@param[in] _method
+ @parblock
+ #bt_component_class_filter_query_method
+
+ Filter component class's query method.
+ @endparblock
+
+@bt_pre_not_null{_method}
+*/
+#define BT_PLUGIN_FILTER_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(filter_query_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_QUERY_METHOD, _plugin_id, _component_class_id, filter, _method)
+
+/*!
+@brief
+ Alias of
+ BT_PLUGIN_FILTER_COMPONENT_CLASS_QUERY_METHOD_WITH_ID()
+ with the \bt_p{_plugin_id} parameter set to <code>auto</code> and
+ the \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_FILTER_COMPONENT_CLASS_QUERY_METHOD(_name, _method) \
+ BT_PLUGIN_FILTER_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(auto, _name, _method)
+
+/*! @} */
+
+/*!
+@name Sink component class methods
+@{
+*/
+
+/*!
+@brief
+ Sets the finalization method of the \bt_sink_comp_cls having the ID
+ \bt_p{_component_class_id} in the plugin having the ID
+ \bt_p{_plugin_id} to \bt_p{_method}.
+
+See the \ref api-comp-cls-dev-meth-fini "finalize" method.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the sink component class of which
+ to set the finalization method.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the sink component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the finalization method to
+ \bt_p{_method}.
+ @endparblock
+@param[in] _method
+ @parblock
+ #bt_component_class_sink_finalize_method
+
+ Sink component class's finalization method.
+ @endparblock
+
+@bt_pre_not_null{_method}
+*/
+#define BT_PLUGIN_SINK_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(sink_finalize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_FINALIZE_METHOD, _plugin_id, _component_class_id, sink, _method)
+
+/*!
+@brief
+ Alias of
+ BT_PLUGIN_SINK_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID()
+ with the \bt_p{_plugin_id} parameter set to <code>auto</code> and
+ the \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_SINK_COMPONENT_CLASS_FINALIZE_METHOD(_name, _method) \
+ BT_PLUGIN_SINK_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(auto, _name, _method)
+
+/*!
+@brief
+ Sets the \"get supported \bt_mip versions\" method of the
+ \bt_sink_comp_cls having the ID \bt_p{_component_class_id} in the
+ plugin having the ID \bt_p{_plugin_id} to \bt_p{_method}.
+
+See the \ref api-comp-cls-dev-meth-mip "get supported MIP versions"
+method.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the sink component class of which
+ to set the "get supported MIP versions" method.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the sink component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the "get supported MIP versions"
+ method to \bt_p{_method}.
+ @endparblock
+@param[in] _method
+ @parblock
+ #bt_component_class_sink_get_supported_mip_versions_method
+
+ Sink component class's "get supported MIP versions" method.
+ @endparblock
+
+@bt_pre_not_null{_method}
+*/
+#define BT_PLUGIN_SINK_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(sink_get_supported_mip_versions_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_GET_SUPPORTED_MIP_VERSIONS, _plugin_id, _component_class_id, sink, _method)
+
+/*!
+@brief
+ Alias of
+ BT_PLUGIN_SINK_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD_WITH_ID()
+ with the \bt_p{_plugin_id} parameter set to <code>auto</code> and
+ the \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_SINK_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD(_name, _method) \
+ BT_PLUGIN_SINK_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD_WITH_ID(auto, _name, _method)
+
+/*!
+@brief
+ Sets the "graph is configured" method of the \bt_sink_comp_cls
+ having the ID \bt_p{_component_class_id} in the plugin having the ID
+ \bt_p{_plugin_id} to \bt_p{_method}.
+
+See the
+\ref api-comp-cls-dev-meth-graph-configured "graph is configured"
+method.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the sink component class of which
+ to set the "graph is configured" method.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the sink component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the "graph is configured"
+ method to \bt_p{_method}.
+ @endparblock
+@param[in] _method
+ @parblock
+ #bt_component_class_sink_graph_is_configured_method
+
+ Sink component class's "graph is configured" method.
+ @endparblock
+
+@bt_pre_not_null{_method}
+*/
+#define BT_PLUGIN_SINK_COMPONENT_CLASS_GRAPH_IS_CONFIGURED_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(sink_graph_is_configured_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_GRAPH_IS_CONFIGURED_METHOD, _plugin_id, _component_class_id, sink, _method)
+
+/*!
+@brief
+ Alias of
+ BT_PLUGIN_SINK_COMPONENT_CLASS_GRAPH_IS_CONFIGURED_METHOD_WITH_ID()
+ with the \bt_p{_plugin_id} parameter set to <code>auto</code> and
+ the \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_SINK_COMPONENT_CLASS_GRAPH_IS_CONFIGURED_METHOD(_name, _method) \
+ BT_PLUGIN_SINK_COMPONENT_CLASS_GRAPH_IS_CONFIGURED_METHOD_WITH_ID(auto, _name, _method)
+
+/*!
+@brief
+ Sets the initialization method of the \bt_sink_comp_cls having the
+ ID \bt_p{_component_class_id} in the plugin having the ID
+ \bt_p{_plugin_id} to \bt_p{_method}.
+
+See the \ref api-comp-cls-dev-meth-init "initialize" method.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the sink component class of which
+ to set the initialization method.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the sink component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the initialization method to
+ \bt_p{_method}.
+ @endparblock
+@param[in] _method
+ @parblock
+ #bt_component_class_sink_initialize_method
+
+ Sink component class's initialization method.
+ @endparblock
+
+@bt_pre_not_null{_method}
+*/
+#define BT_PLUGIN_SINK_COMPONENT_CLASS_INITIALIZE_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(sink_initialize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INITIALIZE_METHOD, _plugin_id, _component_class_id, sink, _method)
+
+/*!
+@brief
+ Alias of
+ BT_PLUGIN_SINK_COMPONENT_CLASS_INITIALIZE_METHOD_WITH_ID()
+ with the \bt_p{_plugin_id} parameter set to <code>auto</code> and
+ the \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_SINK_COMPONENT_CLASS_INITIALIZE_METHOD(_name, _method) \
+ BT_PLUGIN_SINK_COMPONENT_CLASS_INITIALIZE_METHOD_WITH_ID(auto, _name, _method)
+
+/*!
+@brief
+ Sets the "input port connected" method of the \bt_sink_comp_cls
+ having the ID \bt_p{_component_class_id} in the plugin having the ID
+ \bt_p{_plugin_id} to \bt_p{_method}.
+
+See the
+\ref api-comp-cls-dev-meth-iport-connected "input port connected"
+method.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the sink component class of which
+ to set the "input port connected" method.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the sink component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the "input port connected"
+ method to \bt_p{_method}.
+ @endparblock
+@param[in] _method
+ @parblock
+ #bt_component_class_sink_input_port_connected_method
+
+ Sink component class's "input port connected" method.
+ @endparblock
+
+@bt_pre_not_null{_method}
+*/
+#define BT_PLUGIN_SINK_COMPONENT_CLASS_INPUT_PORT_CONNECTED_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(sink_input_port_connected_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INPUT_PORT_CONNECTED_METHOD, _plugin_id, _component_class_id, sink, _method)
+
+/*!
+@brief
+ Alias of
+ BT_PLUGIN_SINK_COMPONENT_CLASS_INPUT_PORT_CONNECTED_METHOD_WITH_ID()
+ with the \bt_p{_plugin_id} parameter set to <code>auto</code> and
+ the \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_SINK_COMPONENT_CLASS_INPUT_PORT_CONNECTED_METHOD(_name, _method) \
+ BT_PLUGIN_SINK_COMPONENT_CLASS_INPUT_PORT_CONNECTED_METHOD_WITH_ID(auto, _name, _method)
+
+/*!
+@brief
+ Sets the query method of the \bt_sink_comp_cls
+ having the ID \bt_p{_component_class_id} in the plugin having the ID
+ \bt_p{_plugin_id} to \bt_p{_method}.
+
+See the \ref api-comp-cls-dev-meth-query "query" method.
+
+@param[in] _plugin_id
+ @parblock
+ C identifier.
+
+ ID of the plugin which contains the sink component class of which
+ to set the query method.
+ @endparblock
+@param[in] _component_class_id
+ @parblock
+ C identifier.
+
+ ID of the sink component class, within the plugin having the ID
+ \bt_p{_plugin_id}, of which to set the query
+ method to \bt_p{_method}.
+ @endparblock
+@param[in] _method
+ @parblock
+ #bt_component_class_sink_query_method
+
+ Sink component class's query method.
+ @endparblock
+
+@bt_pre_not_null{_method}
+*/
+#define BT_PLUGIN_SINK_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
+ __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(sink_query_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_QUERY_METHOD, _plugin_id, _component_class_id, sink, _method)
+
+/*!
+@brief
+ Alias of
+ BT_PLUGIN_SINK_COMPONENT_CLASS_QUERY_METHOD_WITH_ID()
+ with the \bt_p{_plugin_id} parameter set to <code>auto</code> and
+ the \bt_p{_component_class_id} parameter set to \bt_p{_name}.
+*/
+#define BT_PLUGIN_SINK_COMPONENT_CLASS_QUERY_METHOD(_name, _method) \
+ BT_PLUGIN_SINK_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(auto, _name, _method)
+
+/*! @} */
+
+/*! @} */
+
+/* Plugin descriptor: describes a single plugin (internal use) */
+struct __bt_plugin_descriptor {