[gst-devel] glib quad support
vishnu at pobox.com
vishnu at pobox.com
Sat Sep 15 12:08:02 CEST 2001
Here's an untested patch.
--
Victory to the Divine Mother!!
http://sahajayoga.org
-------------- next part --------------
Index: docs/reference/gobject/tmpl/types.sgml
===================================================================
RCS file: /cvs/gnome/glib/docs/reference/gobject/tmpl/types.sgml,v
retrieving revision 1.18
diff -u -p -u -p -r1.18 types.sgml
--- docs/reference/gobject/tmpl/types.sgml 2001/08/12 00:56:22 1.18
+++ docs/reference/gobject/tmpl/types.sgml 2001/09/15 18:56:26
@@ -188,6 +188,8 @@ The predefined identifiers of the reserv
@G_TYPE_UINT: Identifier for the built-in type "guint".
@G_TYPE_LONG: Identifier for the built-in type "glong".
@G_TYPE_ULONG: Identifier for the built-in type "gulong".
+ at G_TYPE_QUAD: Identifier for the built-in type "gquad".
+ at G_TYPE_UQUAD: Identifier for the built-in type "guquad".
@G_TYPE_ENUM: Identifier for the "#GEnum" type.
@G_TYPE_FLAGS: Identifier for the "#GFlags" type.
@G_TYPE_FLOAT: Identifier for the built-in type "gfloat".
@@ -211,6 +213,8 @@ The predefined identifiers of the reserv
@G_TYPE_PARAM_UINT: Identifier for the "#GParamSpecUInt" type.
@G_TYPE_PARAM_LONG: Identifier for the "#GParamSpecLong" type.
@G_TYPE_PARAM_ULONG: Identifier for the "#GParamSpecULong" type.
+ at G_TYPE_PARAM_QUAD: Identifier for the "#GParamSpecQuad" type.
+ at G_TYPE_PARAM_UQUAD: Identifier for the "#GParamSpecUQuad" type.
@G_TYPE_PARAM_UNICHAR:
@G_TYPE_PARAM_ENUM: Identifier for the "#GParamSpecEnum" type.
@G_TYPE_PARAM_FLAGS: Identifier for the "#GParamSpecFlags" type.
Index: glib/gtypes.h
===================================================================
RCS file: /cvs/gnome/glib/glib/gtypes.h,v
retrieving revision 1.10
diff -u -p -u -p -r1.10 gtypes.h
--- glib/gtypes.h 2001/07/27 10:46:13 1.10
+++ glib/gtypes.h 2001/09/15 18:56:26
@@ -49,6 +49,14 @@ typedef unsigned short gushort;
typedef unsigned long gulong;
typedef unsigned int guint;
+#ifdef G_HAVE_GINT64
+typedef gint64 gquad;
+typedef guint64 guquad;
+#else
+typedef glong gquad;
+typedef gulong guquad;
+#endif
+
typedef float gfloat;
typedef double gdouble;
Index: gobject/glib-genmarshal.c
===================================================================
RCS file: /cvs/gnome/glib/gobject/glib-genmarshal.c,v
retrieving revision 1.9
diff -u -p -u -p -r1.9 glib-genmarshal.c
--- gobject/glib-genmarshal.c 2001/07/26 10:36:01 1.9
+++ gobject/glib-genmarshal.c 2001/09/15 18:56:26
@@ -144,6 +144,8 @@ complete_in_arg (InArgument *iarg)
{ "UINT", "UINT", "guint", "g_value_get_uint", },
{ "LONG", "LONG", "glong", "g_value_get_long", },
{ "ULONG", "ULONG", "gulong", "g_value_get_ulong", },
+ { "QUAD", "QUAD", "gquad", "g_value_get_quad", },
+ { "UQUAD", "UQUAD", "guquad", "g_value_get_uquad", },
{ "ENUM", "ENUM", "gint", "g_value_get_enum", },
{ "FLAGS", "FLAGS", "guint", "g_value_get_flags", },
{ "FLOAT", "FLOAT", "gfloat", "g_value_get_float", },
@@ -187,6 +189,8 @@ complete_out_arg (OutArgument *oarg)
{ "UINT", "UINT", "guint", "g_value_set_uint", NULL, NULL },
{ "LONG", "LONG", "glong", "g_value_set_long", NULL, NULL },
{ "ULONG", "ULONG", "gulong", "g_value_set_ulong", NULL, NULL },
+ { "QUAD", "QUAD", "gquad", "g_value_set_quad", NULL, NULL },
+ { "UQUAD", "UQUAD", "guquad", "g_value_set_uquad", NULL, NULL },
{ "ENUM", "ENUM", "gint", "g_value_set_enum", NULL, NULL },
{ "FLAGS", "FLAGS", "guint", "g_value_set_flags", NULL, NULL },
{ "FLOAT", "FLOAT", "gfloat", "g_value_set_float", NULL, NULL },
Index: gobject/gparamspecs.c
===================================================================
RCS file: /cvs/gnome/glib/gobject/gparamspecs.c,v
retrieving revision 1.16
diff -u -p -u -p -r1.16 gparamspecs.c
--- gobject/gparamspecs.c 2001/05/10 13:58:40 1.16
+++ gobject/gparamspecs.c 2001/09/15 18:56:26
@@ -279,6 +279,91 @@ param_ulong_values_cmp (GParamSpec *ps
}
static void
+param_quad_init (GParamSpec *pspec)
+{
+ GParamSpecQuad *lspec = G_PARAM_SPEC_QUAD (pspec);
+
+#if SIZEOF_LONG_LONG == 8
+ lspec->minimum = 0x7fffffffffffffff;
+ lspec->maximum = 0x8000000000000000;
+#else
+ lspec->minimum = 0x7fffffff;
+ lspec->maximum = 0x80000000;
+#endif
+ lspec->default_value = 0;
+}
+
+static void
+param_quad_set_default (GParamSpec *pspec,
+ GValue *value)
+{
+ value->data[0].v_quad = G_PARAM_SPEC_QUAD (pspec)->default_value;
+}
+
+static gboolean
+param_quad_validate (GParamSpec *pspec,
+ GValue *value)
+{
+ GParamSpecQuad *lspec = G_PARAM_SPEC_QUAD (pspec);
+ gquad oval = value->data[0].v_quad;
+
+ value->data[0].v_quad = CLAMP (value->data[0].v_quad, lspec->minimum, lspec->maximum);
+
+ return value->data[0].v_quad != oval;
+}
+
+static gint
+param_quad_values_cmp (GParamSpec *pspec,
+ const GValue *value1,
+ const GValue *value2)
+{
+ if (value1->data[0].v_quad < value2->data[0].v_quad)
+ return -1;
+ else
+ return value1->data[0].v_quad > value2->data[0].v_quad;
+}
+
+static void
+param_uquad_init (GParamSpec *pspec)
+{
+ GParamSpecUQuad *uspec = G_PARAM_SPEC_UQUAD (pspec);
+
+ uspec->minimum = 0;
+ uspec->maximum = ~0;
+ uspec->default_value = 0;
+}
+
+static void
+param_uquad_set_default (GParamSpec *pspec,
+ GValue *value)
+{
+ value->data[0].v_uquad = G_PARAM_SPEC_UQUAD (pspec)->default_value;
+}
+
+static gboolean
+param_uquad_validate (GParamSpec *pspec,
+ GValue *value)
+{
+ GParamSpecUQuad *uspec = G_PARAM_SPEC_UQUAD (pspec);
+ guquad oval = value->data[0].v_uquad;
+
+ value->data[0].v_uquad = CLAMP (value->data[0].v_uquad, uspec->minimum, uspec->maximum);
+
+ return value->data[0].v_uquad != oval;
+}
+
+static gint
+param_uquad_values_cmp (GParamSpec *pspec,
+ const GValue *value1,
+ const GValue *value2)
+{
+ if (value1->data[0].v_uquad < value2->data[0].v_uquad)
+ return -1;
+ else
+ return value1->data[0].v_uquad > value2->data[0].v_uquad;
+}
+
+static void
param_unichar_init (GParamSpec *pspec)
{
GParamSpecUnichar *uspec = G_PARAM_SPEC_UNICHAR (pspec);
@@ -1040,6 +1125,40 @@ g_param_spec_types_init (void) /* sync w
};
type = g_param_type_register_static ("GParamULong", &pspec_info);
g_assert (type == G_TYPE_PARAM_ULONG);
+ }
+
+ /* G_TYPE_PARAM_QUAD
+ */
+ {
+ static const GParamSpecTypeInfo pspec_info = {
+ sizeof (GParamSpecQuad), /* instance_size */
+ 16, /* n_preallocs */
+ param_quad_init, /* instance_init */
+ G_TYPE_QUAD, /* value_type */
+ NULL, /* finalize */
+ param_quad_set_default, /* value_set_default */
+ param_quad_validate, /* value_validate */
+ param_quad_values_cmp, /* values_cmp */
+ };
+ type = g_param_type_register_static ("GParamQuad", &pspec_info);
+ g_assert (type == G_TYPE_PARAM_QUAD);
+ }
+
+ /* G_TYPE_PARAM_UQUAD
+ */
+ {
+ static const GParamSpecTypeInfo pspec_info = {
+ sizeof (GParamSpecUQuad), /* instance_size */
+ 16, /* n_preallocs */
+ param_uquad_init, /* instance_init */
+ G_TYPE_UQUAD, /* value_type */
+ NULL, /* finalize */
+ param_uquad_set_default, /* value_set_default */
+ param_uquad_validate, /* value_validate */
+ param_uquad_values_cmp, /* values_cmp */
+ };
+ type = g_param_type_register_static ("GParamUQuad", &pspec_info);
+ g_assert (type == G_TYPE_PARAM_UQUAD);
}
/* G_TYPE_PARAM_UNICHAR
Index: gobject/gparamspecs.h
===================================================================
RCS file: /cvs/gnome/glib/gobject/gparamspecs.h,v
retrieving revision 1.12
diff -u -p -u -p -r1.12 gparamspecs.h
--- gobject/gparamspecs.h 2001/06/21 00:41:55 1.12
+++ gobject/gparamspecs.h 2001/09/15 18:56:26
@@ -43,9 +43,13 @@ G_BEGIN_DECLS
#define G_IS_PARAM_SPEC_LONG(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_LONG))
#define G_PARAM_SPEC_LONG(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_LONG, GParamSpecLong))
#define G_IS_PARAM_SPEC_ULONG(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_ULONG))
-#define G_PARAM_SPEC_UNICHAR(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_UNICHAR, GParamSpecUnichar))
-#define G_IS_PARAM_SPEC_UNICHAR(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_UNICHAR))
#define G_PARAM_SPEC_ULONG(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_ULONG, GParamSpecULong))
+#define G_IS_PARAM_SPEC_QUAD(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_QUAD))
+#define G_PARAM_SPEC_QUAD(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_QUAD, GParamSpecQuad))
+#define G_IS_PARAM_SPEC_UQUAD(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_UQUAD))
+#define G_PARAM_SPEC_UQUAD(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_UQUAD, GParamSpecUQuad))
+#define G_IS_PARAM_SPEC_UNICHAR(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_UNICHAR))
+#define G_PARAM_SPEC_UNICHAR(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_UNICHAR, GParamSpecUnichar))
#define G_IS_PARAM_SPEC_ENUM(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_ENUM))
#define G_PARAM_SPEC_ENUM(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_ENUM, GParamSpecEnum))
#define G_IS_PARAM_SPEC_FLAGS(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_FLAGS))
@@ -78,6 +82,8 @@ typedef struct _GParamSpecInt GPa
typedef struct _GParamSpecUInt GParamSpecUInt;
typedef struct _GParamSpecLong GParamSpecLong;
typedef struct _GParamSpecULong GParamSpecULong;
+typedef struct _GParamSpecQuad GParamSpecQuad;
+typedef struct _GParamSpecUQuad GParamSpecUQuad;
typedef struct _GParamSpecUnichar GParamSpecUnichar;
typedef struct _GParamSpecEnum GParamSpecEnum;
typedef struct _GParamSpecFlags GParamSpecFlags;
@@ -144,6 +150,22 @@ struct _GParamSpecULong
gulong maximum;
gulong default_value;
};
+struct _GParamSpecQuad
+{
+ GParamSpec parent_instance;
+
+ gquad minimum;
+ gquad maximum;
+ gquad default_value;
+};
+struct _GParamSpecUQuad
+{
+ GParamSpec parent_instance;
+
+ guquad minimum;
+ guquad maximum;
+ guquad default_value;
+};
struct _GParamSpecUnichar
{
GParamSpec parent_instance;
@@ -268,6 +290,20 @@ GParamSpec* g_param_spec_ulong (const g
gulong minimum,
gulong maximum,
gulong default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_quad (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ gquad minimum,
+ gquad maximum,
+ gquad default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_uquad (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ guquad minimum,
+ guquad maximum,
+ guquad default_value,
GParamFlags flags);
GParamSpec* g_param_spec_unichar (const gchar *name,
const gchar *nick,
Index: gobject/gtype.c
===================================================================
RCS file: /cvs/gnome/glib/gobject/gtype.c,v
retrieving revision 1.33
diff -u -p -u -p -r1.33 gtype.c
--- gobject/gtype.c 2001/09/10 18:03:31 1.33
+++ gobject/gtype.c 2001/09/15 18:56:27
@@ -629,6 +629,7 @@ check_collect_format_I (const gchar *col
{
const gchar *p = collect_format;
gchar valid_format[] = { G_VALUE_COLLECT_INT, G_VALUE_COLLECT_LONG,
+ G_VALUE_COLLECT_QUAD,
G_VALUE_COLLECT_DOUBLE, G_VALUE_COLLECT_POINTER,
0 };
Index: gobject/gtype.h
===================================================================
RCS file: /cvs/gnome/glib/gobject/gtype.h,v
retrieving revision 1.31
diff -u -p -u -p -r1.31 gtype.h
--- gobject/gtype.h 2001/09/10 18:03:31 1.31
+++ gobject/gtype.h 2001/09/15 18:56:27
@@ -50,6 +50,8 @@ typedef enum /*< skip >*/
G_TYPE_UINT,
G_TYPE_LONG,
G_TYPE_ULONG,
+ G_TYPE_QUAD,
+ G_TYPE_UQUAD,
G_TYPE_ENUM,
G_TYPE_FLAGS,
G_TYPE_FLOAT,
@@ -79,18 +81,20 @@ typedef enum /*< skip >*/
G_TYPE_PARAM_UINT = G_TYPE_DERIVE_ID (G_TYPE_PARAM, 5),
G_TYPE_PARAM_LONG = G_TYPE_DERIVE_ID (G_TYPE_PARAM, 6),
G_TYPE_PARAM_ULONG = G_TYPE_DERIVE_ID (G_TYPE_PARAM, 7),
- G_TYPE_PARAM_UNICHAR = G_TYPE_DERIVE_ID (G_TYPE_PARAM, 8),
- G_TYPE_PARAM_ENUM = G_TYPE_DERIVE_ID (G_TYPE_PARAM, 9),
- G_TYPE_PARAM_FLAGS = G_TYPE_DERIVE_ID (G_TYPE_PARAM, 10),
- G_TYPE_PARAM_FLOAT = G_TYPE_DERIVE_ID (G_TYPE_PARAM, 11),
- G_TYPE_PARAM_DOUBLE = G_TYPE_DERIVE_ID (G_TYPE_PARAM, 12),
- G_TYPE_PARAM_STRING = G_TYPE_DERIVE_ID (G_TYPE_PARAM, 13),
- G_TYPE_PARAM_PARAM = G_TYPE_DERIVE_ID (G_TYPE_PARAM, 14),
- G_TYPE_PARAM_BOXED = G_TYPE_DERIVE_ID (G_TYPE_PARAM, 15),
- G_TYPE_PARAM_POINTER = G_TYPE_DERIVE_ID (G_TYPE_PARAM, 16),
- G_TYPE_PARAM_VALUE_ARRAY = G_TYPE_DERIVE_ID (G_TYPE_PARAM, 17),
- G_TYPE_PARAM_CLOSURE = G_TYPE_DERIVE_ID (G_TYPE_PARAM, 18),
- G_TYPE_PARAM_OBJECT = G_TYPE_DERIVE_ID (G_TYPE_PARAM, 19)
+ G_TYPE_PARAM_QUAD = G_TYPE_DERIVE_ID (G_TYPE_PARAM, 8),
+ G_TYPE_PARAM_UQUAD = G_TYPE_DERIVE_ID (G_TYPE_PARAM, 9),
+ G_TYPE_PARAM_UNICHAR = G_TYPE_DERIVE_ID (G_TYPE_PARAM, 10),
+ G_TYPE_PARAM_ENUM = G_TYPE_DERIVE_ID (G_TYPE_PARAM, 11),
+ G_TYPE_PARAM_FLAGS = G_TYPE_DERIVE_ID (G_TYPE_PARAM, 12),
+ G_TYPE_PARAM_FLOAT = G_TYPE_DERIVE_ID (G_TYPE_PARAM, 13),
+ G_TYPE_PARAM_DOUBLE = G_TYPE_DERIVE_ID (G_TYPE_PARAM, 14),
+ G_TYPE_PARAM_STRING = G_TYPE_DERIVE_ID (G_TYPE_PARAM, 15),
+ G_TYPE_PARAM_PARAM = G_TYPE_DERIVE_ID (G_TYPE_PARAM, 16),
+ G_TYPE_PARAM_BOXED = G_TYPE_DERIVE_ID (G_TYPE_PARAM, 17),
+ G_TYPE_PARAM_POINTER = G_TYPE_DERIVE_ID (G_TYPE_PARAM, 18),
+ G_TYPE_PARAM_VALUE_ARRAY = G_TYPE_DERIVE_ID (G_TYPE_PARAM, 19),
+ G_TYPE_PARAM_CLOSURE = G_TYPE_DERIVE_ID (G_TYPE_PARAM, 20),
+ G_TYPE_PARAM_OBJECT = G_TYPE_DERIVE_ID (G_TYPE_PARAM, 21)
} GTypeFundamentals;
Index: gobject/gvalue.h
===================================================================
RCS file: /cvs/gnome/glib/gobject/gvalue.h,v
retrieving revision 1.10
diff -u -p -u -p -r1.10 gvalue.h
--- gobject/gvalue.h 2001/03/09 21:39:51 1.10
+++ gobject/gvalue.h 2001/09/15 18:56:27
@@ -50,6 +50,8 @@ struct _GValue
guint v_uint;
glong v_long;
gulong v_ulong;
+ gquad v_quad;
+ guquad v_uquad;
gfloat v_float;
gdouble v_double;
gpointer v_pointer;
Index: gobject/gvaluecollector.h
===================================================================
RCS file: /cvs/gnome/glib/gobject/gvaluecollector.h,v
retrieving revision 1.7
diff -u -p -u -p -r1.7 gvaluecollector.h
--- gobject/gvaluecollector.h 2001/03/18 04:44:38 1.7
+++ gobject/gvaluecollector.h 2001/09/15 18:56:27
@@ -32,6 +32,7 @@ enum /*< skip >*/
{
G_VALUE_COLLECT_INT = 'i',
G_VALUE_COLLECT_LONG = 'l',
+ G_VALUE_COLLECT_QUAD = 'q',
G_VALUE_COLLECT_DOUBLE = 'd',
G_VALUE_COLLECT_POINTER = 'p'
};
@@ -43,6 +44,7 @@ union _GTypeCValue
{
gint v_int;
glong v_long;
+ gquad v_quad;
gdouble v_double;
gpointer v_pointer;
};
@@ -84,6 +86,9 @@ G_STMT_START { \
case G_VALUE_COLLECT_LONG: \
_cvalue->v_long = va_arg ((var_args), glong); \
break; \
+ case G_VALUE_COLLECT_QUAD: \
+ _cvalue->v_quad = va_arg ((var_args), gquad); \
+ break; \
case G_VALUE_COLLECT_DOUBLE: \
_cvalue->v_double = va_arg ((var_args), gdouble); \
break; \
@@ -125,6 +130,9 @@ G_STMT_START { \
break; \
case G_VALUE_COLLECT_LONG: \
_cvalue->v_long = va_arg ((var_args), glong); \
+ break; \
+ case G_VALUE_COLLECT_QUAD: \
+ _cvalue->v_quad = va_arg ((var_args), gquad); \
break; \
case G_VALUE_COLLECT_DOUBLE: \
_cvalue->v_double = va_arg ((var_args), gdouble); \
Index: gobject/gvaluetypes.c
===================================================================
RCS file: /cvs/gnome/glib/gobject/gvaluetypes.c,v
retrieving revision 1.11
diff -u -p -u -p -r1.11 gvaluetypes.c
--- gobject/gvaluetypes.c 2001/03/18 04:44:38 1.11
+++ gobject/gvaluetypes.c 2001/09/15 18:56:27
@@ -129,6 +129,46 @@ value_lcopy_long (const GValue *value,
}
static void
+value_init_quad (GValue *value)
+{
+ value->data[0].v_quad = 0;
+}
+
+static void
+value_copy_quad (const GValue *src_value,
+ GValue *dest_value)
+{
+ dest_value->data[0].v_quad = src_value->data[0].v_quad;
+}
+
+static gchar*
+value_collect_quad (GValue *value,
+ guint n_collect_values,
+ GTypeCValue *collect_values,
+ guint collect_flags)
+{
+ value->data[0].v_quad = collect_values[0].v_quad;
+
+ return NULL;
+}
+
+static gchar*
+value_lcopy_quad (const GValue *value,
+ guint n_collect_values,
+ GTypeCValue *collect_values,
+ guint collect_flags)
+{
+ gquad *quad_p = collect_values[0].v_pointer;
+
+ if (!quad_p)
+ return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
+
+ *quad_p = value->data[0].v_quad;
+
+ return NULL;
+}
+
+static void
value_init_float (GValue *value)
{
value->data[0].v_float = 0.0;
@@ -412,6 +452,26 @@ g_value_types_init (void) /* sync with
g_assert (type == G_TYPE_ULONG);
}
+ /* G_TYPE_QUAD / G_TYPE_UQUAD
+ */
+ {
+ static const GTypeValueTable value_table = {
+ value_init_quad, /* value_init */
+ NULL, /* value_free */
+ value_copy_quad, /* value_copy */
+ NULL, /* value_peek_pointer */
+ "q", /* collect_format */
+ value_collect_quad, /* collect_value */
+ "p", /* lcopy_format */
+ value_lcopy_quad, /* lcopy_value */
+ };
+ info.value_table = &value_table;
+ type = g_type_register_fundamental (G_TYPE_QUAD, "gquad", &info, &finfo, 0);
+ g_assert (type == G_TYPE_QUAD);
+ type = g_type_register_fundamental (G_TYPE_UQUAD, "guquad", &info, &finfo, 0);
+ g_assert (type == G_TYPE_UQUAD);
+ }
+
/* G_TYPE_FLOAT
*/
{
@@ -604,6 +664,40 @@ g_value_get_ulong (const GValue *value)
g_return_val_if_fail (G_VALUE_HOLDS_ULONG (value), 0);
return value->data[0].v_ulong;
+}
+
+void
+g_value_set_quad (GValue *value,
+ gquad v_quad)
+{
+ g_return_if_fail (G_VALUE_HOLDS_QUAD (value));
+
+ value->data[0].v_quad = v_quad;
+}
+
+gquad
+g_value_get_quad (const GValue *value)
+{
+ g_return_val_if_fail (G_VALUE_HOLDS_QUAD (value), 0);
+
+ return value->data[0].v_quad;
+}
+
+void
+g_value_set_uquad (GValue *value,
+ guquad v_uquad)
+{
+ g_return_if_fail (G_VALUE_HOLDS_UQUAD (value));
+
+ value->data[0].v_uquad = v_uquad;
+}
+
+guquad
+g_value_get_uquad (const GValue *value)
+{
+ g_return_val_if_fail (G_VALUE_HOLDS_UQUAD (value), 0);
+
+ return value->data[0].v_uquad;
}
void
Index: gobject/gvaluetypes.h
===================================================================
RCS file: /cvs/gnome/glib/gobject/gvaluetypes.h,v
retrieving revision 1.10
diff -u -p -u -p -r1.10 gvaluetypes.h
--- gobject/gvaluetypes.h 2001/03/18 04:44:38 1.10
+++ gobject/gvaluetypes.h 2001/09/15 18:56:27
@@ -34,6 +34,8 @@ G_BEGIN_DECLS
#define G_VALUE_HOLDS_UINT(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_UINT))
#define G_VALUE_HOLDS_LONG(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_LONG))
#define G_VALUE_HOLDS_ULONG(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_ULONG))
+#define G_VALUE_HOLDS_QUAD(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_QUAD))
+#define G_VALUE_HOLDS_UQUAD(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_UQUAD))
#define G_VALUE_HOLDS_FLOAT(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_FLOAT))
#define G_VALUE_HOLDS_DOUBLE(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_DOUBLE))
#define G_VALUE_HOLDS_STRING(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_STRING))
@@ -62,6 +64,12 @@ glong g_value_get_long (const GV
void g_value_set_ulong (GValue *value,
gulong v_ulong);
gulong g_value_get_ulong (const GValue *value);
+void g_value_set_quad (GValue *value,
+ gquad v_quad);
+gquad g_value_get_quad (const GValue *value);
+void g_value_set_uquad (GValue *value,
+ guquad v_uquad);
+guquad g_value_get_uquad (const GValue *value);
void g_value_set_float (GValue *value,
gfloat v_float);
gfloat g_value_get_float (const GValue *value);
More information about the gstreamer-devel
mailing list