parse: Add boxed type for GstParseContext for gobject-introspection

This commit is contained in:
Sebastian Dröge 2011-04-14 15:59:28 +02:00
parent bf6c3ea6df
commit 2d7c81f1d7
3 changed files with 40 additions and 0 deletions

View file

@ -758,6 +758,7 @@ init_post (GOptionContext * context, GOptionGroup * group, gpointer data,
_gst_buffer_list_initialize (); _gst_buffer_list_initialize ();
_gst_message_initialize (); _gst_message_initialize ();
_gst_tag_initialize (); _gst_tag_initialize ();
gst_parse_context_get_type ();
_gst_plugin_initialize (); _gst_plugin_initialize ();

View file

@ -44,6 +44,42 @@
#include "parse/types.h" #include "parse/types.h"
#endif #endif
static void
_prepend_missing_element (gchar * element, GList ** list)
{
*list = g_list_prepend (*list, g_strdup (element));
}
static GstParseContext *
gst_parse_context_copy (const GstParseContext * context)
{
GstParseContext *ret = NULL;
#ifndef GST_DISABLE_PARSE
ret = gst_parse_context_new ();
if (context) {
g_list_foreach (context->missing_elements, (GFunc) _prepend_missing_element,
&ret->missing_elements);
ret->missing_elements = g_list_reverse (ret->missing_elements);
}
#endif
return ret;
}
GType
gst_parse_context_get_type (void)
{
static GType type = 0;
if (G_UNLIKELY (type == 0)) {
type = g_boxed_type_register_static ("GstParseContext",
(GBoxedCopyFunc) gst_parse_context_copy,
(GBoxedFreeFunc) gst_parse_context_free);
}
return type;
}
/** /**
* gst_parse_error_quark: * gst_parse_error_quark:
* *

View file

@ -75,6 +75,8 @@ typedef enum
GST_PARSE_FLAG_FATAL_ERRORS = (1 << 0) GST_PARSE_FLAG_FATAL_ERRORS = (1 << 0)
} GstParseFlags; } GstParseFlags;
#define GST_TYPE_PARSE_CONTEXT (gst_parse_context_get_type())
/** /**
* GstParseContext: * GstParseContext:
* *
@ -86,6 +88,7 @@ typedef struct _GstParseContext GstParseContext;
/* create, process and free a parse context */ /* create, process and free a parse context */
GType gst_parse_context_get_type (void);
GstParseContext * gst_parse_context_new (void); GstParseContext * gst_parse_context_new (void);
gchar ** gst_parse_context_get_missing_elements (GstParseContext * context); gchar ** gst_parse_context_get_missing_elements (GstParseContext * context);