static void gst_value_register_subtract_func (GType minuend_type,
GType subtrahend_type, GstValueSubtractFunc func);
+static gboolean _priv_gst_value_parse_list (gchar * s, gchar ** after,
+ GValue * value, GType type);
static gboolean _priv_gst_value_parse_array (gchar * s, gchar ** after,
GValue * value, GType type);
static gboolean
gst_value_deserialize_value_list (GValue * dest, const gchar * s)
{
- g_warning ("gst_value_deserialize_list: unimplemented");
- return FALSE;
+ gchar *s2 = (gchar *) s;
+ return _priv_gst_value_parse_list (s2, &s2, dest, G_TYPE_INVALID);
}
static gchar *
gst_value_serialize_value_array (const GValue * value)
{
- return _priv_gst_value_serialize_any_list (value, "{ ", " }", TRUE);
+ return _priv_gst_value_serialize_any_list (value, "< ", " >", TRUE);
}
static gboolean
gst_value_deserialize_value_array (GValue * dest, const gchar * s)
{
- g_warning ("gst_value_deserialize_array: unimplemented");
- return FALSE;
+ gchar *s2 = (gchar *) s;
+ return _priv_gst_value_parse_array (s2, &s2, dest, G_TYPE_INVALID);
}
static gchar *
GST_END_TEST;
+GST_START_TEST (test_serialize_deserialize_value_array)
+{
+ GValue v = G_VALUE_INIT, v2 = G_VALUE_INIT, v3 = G_VALUE_INIT;
+ gchar *str = NULL;
+
+ g_value_init (&v, GST_TYPE_ARRAY);
+ g_value_init (&v2, GST_TYPE_ARRAY);
+ g_value_init (&v3, G_TYPE_DOUBLE);
+ g_value_set_double (&v3, 1);
+ gst_value_array_append_value (&v2, &v3);
+ g_value_unset (&v3);
+ g_value_init (&v3, G_TYPE_DOUBLE);
+ g_value_set_double (&v3, 0);
+ gst_value_array_append_value (&v2, &v3);
+ g_value_unset (&v3);
+ gst_value_array_append_value (&v, &v2);
+ g_value_unset (&v2);
+
+ str = gst_value_serialize (&v);
+
+ g_value_init (&v2, GST_TYPE_ARRAY);
+ fail_unless (gst_value_deserialize (&v2, str));
+ fail_unless (gst_value_compare (&v, &v2) == 0);
+
+ g_value_unset (&v2);
+ g_value_unset (&v);
+ g_free (str);
+}
+
+GST_END_TEST;
+
GST_START_TEST (test_serialize_deserialize_caps)
{
GValue value = { 0 }
tcase_add_test (tc_chain, test_serialize_flags);
tcase_add_test (tc_chain, test_deserialize_flags);
tcase_add_test (tc_chain, test_serialize_deserialize_format_enum);
+ tcase_add_test (tc_chain, test_serialize_deserialize_value_array);
tcase_add_test (tc_chain, test_string);
tcase_add_test (tc_chain, test_deserialize_string);
tcase_add_test (tc_chain, test_value_compare);