mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-03 04:52:28 +00:00
utils: Remove GST_BOILERPLATE and friends
This commit is contained in:
parent
6e41a3cf2f
commit
0f3f816f3f
2 changed files with 2 additions and 146 deletions
|
@ -4,6 +4,8 @@ The 0.11 porting guide
|
|||
* All deprecated methods were removed. Recompile against 0.10 with
|
||||
DISABLE_DEPRECATED and fix issues before attempting to port to 0.11.
|
||||
|
||||
* GST_BOILERPLATE is gone, use G_DEFINE_TYPE instead.
|
||||
|
||||
* various methods take a gsize instead of a guint when talking about memory
|
||||
sizes.
|
||||
|
||||
|
|
146
gst/gstutils.h
146
gst/gstutils.h
|
@ -92,152 +92,6 @@ GType gst_type_register_static_full (GType parent_type,
|
|||
const GTypeValueTable *value_table,
|
||||
GTypeFlags flags);
|
||||
|
||||
|
||||
/* Macros for defining classes. Ideas taken from Bonobo, which took theirs
|
||||
from Nautilus and GOB. */
|
||||
|
||||
/**
|
||||
* GST_BOILERPLATE_FULL:
|
||||
* @type: the name of the type struct
|
||||
* @type_as_function: the prefix for the functions
|
||||
* @parent_type: the parent type struct name
|
||||
* @parent_type_macro: the parent type macro
|
||||
* @additional_initializations: function pointer in the form of
|
||||
* void additional_initializations (GType type) that can be used for
|
||||
* initializing interfaces and the like
|
||||
*
|
||||
* Define the boilerplate type stuff to reduce typos and code size. Defines
|
||||
* the get_type method and the parent_class static variable.
|
||||
*
|
||||
* <informalexample>
|
||||
* <programlisting>
|
||||
* GST_BOILERPLATE_FULL (GstFdSink, gst_fdsink, GstElement, GST_TYPE_ELEMENT, _do_init);
|
||||
* </programlisting>
|
||||
* </informalexample>
|
||||
*/
|
||||
#define GST_BOILERPLATE_FULL(type, type_as_function, parent_type, parent_type_macro, additional_initializations) \
|
||||
\
|
||||
static void type_as_function ## _base_init (gpointer g_class); \
|
||||
static void type_as_function ## _class_init (type ## Class *g_class);\
|
||||
static void type_as_function ## _init (type *object, \
|
||||
type ## Class *g_class);\
|
||||
static parent_type ## Class *parent_class = NULL; \
|
||||
static void \
|
||||
type_as_function ## _class_init_trampoline (gpointer g_class) \
|
||||
{ \
|
||||
parent_class = (parent_type ## Class *) \
|
||||
g_type_class_peek_parent (g_class); \
|
||||
type_as_function ## _class_init ((type ## Class *)g_class); \
|
||||
} \
|
||||
\
|
||||
GType \
|
||||
type_as_function ## _get_type (void) \
|
||||
{ \
|
||||
/* The typedef for GType may be gulong or gsize, depending on the \
|
||||
* system and whether the compiler is c++ or not. The g_once_init_* \
|
||||
* functions always take a gsize * though ... */ \
|
||||
static volatile gsize gonce_data = 0; \
|
||||
if (g_once_init_enter (&gonce_data)) { \
|
||||
GType _type; \
|
||||
_type = gst_type_register_static_full (parent_type_macro, \
|
||||
g_intern_static_string (#type), \
|
||||
sizeof (type ## Class), \
|
||||
type_as_function ## _base_init, \
|
||||
NULL, /* base_finalize */ \
|
||||
(GClassInitFunc) type_as_function ## _class_init_trampoline, \
|
||||
NULL, /* class_finalize */ \
|
||||
NULL, /* class_data */ \
|
||||
sizeof (type), \
|
||||
0, /* n_preallocs */ \
|
||||
(GInstanceInitFunc) type_as_function ## _init, \
|
||||
NULL, \
|
||||
(GTypeFlags) 0); \
|
||||
additional_initializations (_type); \
|
||||
g_once_init_leave (&gonce_data, (gsize) _type); \
|
||||
} \
|
||||
return (GType) gonce_data; \
|
||||
}
|
||||
|
||||
#define __GST_DO_NOTHING(type) /* NOP */
|
||||
|
||||
/**
|
||||
* GST_BOILERPLATE:
|
||||
* @type: the name of the type struct
|
||||
* @type_as_function: the prefix for the functions
|
||||
* @parent_type: the parent type struct name
|
||||
* @parent_type_macro: the parent type macro
|
||||
*
|
||||
* Define the boilerplate type stuff to reduce typos and code size. Defines
|
||||
* the get_type method and the parent_class static variable.
|
||||
*
|
||||
* <informalexample>
|
||||
* <programlisting>
|
||||
* GST_BOILERPLATE (GstFdSink, gst_fdsink, GstElement, GST_TYPE_ELEMENT);
|
||||
* </programlisting>
|
||||
* </informalexample>
|
||||
*/
|
||||
#define GST_BOILERPLATE(type,type_as_function,parent_type,parent_type_macro) \
|
||||
GST_BOILERPLATE_FULL (type, type_as_function, parent_type, parent_type_macro, \
|
||||
__GST_DO_NOTHING)
|
||||
|
||||
/* Like GST_BOILERPLATE, but makes the type 1) implement an interface, and 2)
|
||||
* implement GstImplementsInterface for that type
|
||||
*
|
||||
* After this you will need to implement interface_as_function ## _supported
|
||||
* and interface_as_function ## _interface_init
|
||||
*/
|
||||
/**
|
||||
* GST_BOILERPLATE_WITH_INTERFACE:
|
||||
* @type: the name of the type struct
|
||||
* @type_as_function: the prefix for the functions
|
||||
* @parent_type: the parent type struct name
|
||||
* @parent_type_as_macro: the parent type macro
|
||||
* @interface_type: the name of the interface type struct
|
||||
* @interface_type_as_macro: the interface type macro
|
||||
* @interface_as_function: the interface function name prefix
|
||||
*
|
||||
* Like GST_BOILERPLATE, but makes the type 1) implement an interface, and 2)
|
||||
* implement GstImplementsInterface for that type.
|
||||
*
|
||||
* After this you will need to implement interface_as_function ## _supported
|
||||
* and interface_as_function ## _interface_init
|
||||
*/
|
||||
#define GST_BOILERPLATE_WITH_INTERFACE(type, type_as_function, \
|
||||
parent_type, parent_type_as_macro, interface_type, \
|
||||
interface_type_as_macro, interface_as_function) \
|
||||
\
|
||||
static void interface_as_function ## _interface_init (interface_type ## Class *klass); \
|
||||
static gboolean interface_as_function ## _supported (type *object, GType iface_type); \
|
||||
\
|
||||
static void \
|
||||
type_as_function ## _implements_interface_init (GstImplementsInterfaceClass *klass) \
|
||||
{ \
|
||||
klass->supported = (gboolean (*)(GstImplementsInterface*, GType))interface_as_function ## _supported; \
|
||||
} \
|
||||
\
|
||||
static void \
|
||||
type_as_function ## _init_interfaces (GType type_var) \
|
||||
{ \
|
||||
static const GInterfaceInfo implements_iface_info = { \
|
||||
(GInterfaceInitFunc) type_as_function ## _implements_interface_init,\
|
||||
NULL, \
|
||||
NULL, \
|
||||
}; \
|
||||
static const GInterfaceInfo iface_info = { \
|
||||
(GInterfaceInitFunc) interface_as_function ## _interface_init, \
|
||||
NULL, \
|
||||
NULL, \
|
||||
}; \
|
||||
\
|
||||
g_type_add_interface_static (type_var, GST_TYPE_IMPLEMENTS_INTERFACE, \
|
||||
&implements_iface_info); \
|
||||
g_type_add_interface_static (type_var, interface_type_as_macro, \
|
||||
&iface_info); \
|
||||
} \
|
||||
\
|
||||
GST_BOILERPLATE_FULL (type, type_as_function, parent_type, \
|
||||
parent_type_as_macro, type_as_function ## _init_interfaces)
|
||||
|
||||
/**
|
||||
* GST_CALL_PARENT:
|
||||
* @parent_class_cast: the name of the class cast macro for the parent type
|
||||
|
|
Loading…
Reference in a new issue