Added some more useful functions to create props
authorWim Taymans <wim.taymans@gmail.com>
Wed, 1 May 2002 19:38:58 +0000 (19:38 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Wed, 1 May 2002 19:38:58 +0000 (19:38 +0000)
Original commit message from CVS:
Added some more useful functions to create props

gst/gstprops.c
gst/gstprops.h

index b6d2352..6c6a12f 100644 (file)
@@ -274,8 +274,15 @@ gst_props_entry_destroy (GstPropsEntry *entry)
   g_mutex_unlock (_gst_props_entries_chunk_lock);
 }
 
-static GstProps*
-gst_props_alloc (void)
+/**
+ * gst_props_empty_new:
+ *
+ * Create a new empty property.
+ *
+ * Returns: the new property
+ */
+GstProps*
+gst_props_empty_new (void)
 {
   GstProps *props;
 
@@ -290,7 +297,14 @@ gst_props_alloc (void)
   return props;
 }
 
-static void
+/**
+ * gst_props_add_entry:
+ * @props: the property to add the entry to
+ * @entry: the entry to add
+ *
+ * Addes the given propsentry to the props
+ */
+void
 gst_props_add_entry (GstProps *props, GstPropsEntry *entry)
 {
   g_return_if_fail (props);
@@ -455,6 +469,40 @@ gst_props_add_to_int_list (GList * entries, GstPropsEntry * newentry)
   return g_list_prepend (entries, newentry);
 }
 
+static GstPropsEntry*
+gst_props_entry_newv (const gchar *name, va_list var_args)
+{
+  GstPropsEntry *entry;
+
+  entry = gst_props_alloc_entry ();
+  entry->propid = g_quark_from_string (name);
+  GST_PROPS_ENTRY_FILL (entry, var_args);
+  
+  return entry;
+}
+
+/**
+ * gst_props_entry_new:
+ * @name: the name of the props entry
+ * @...: the value of the entry
+ *
+ * Create a new property entry with the given key/value.
+ *
+ * Returns: the new entry.
+ */
+GstPropsEntry*
+gst_props_entry_new (const gchar *name, ...)
+{
+  va_list var_args;
+  GstPropsEntry *entry;
+  
+  va_start (var_args, name);
+  entry = gst_props_entry_newv (name, var_args);
+  va_end (var_args);
+
+  return entry;
+}
+
 /**
  * gst_props_newv:
  * @firstname: the first property name
@@ -487,7 +535,7 @@ gst_props_newv (const gchar *firstname, va_list var_args)
   if (firstname == NULL)
     return NULL;
 
-  props = gst_props_alloc ();
+  props = gst_props_empty_new ();
 
   prop_name = firstname;
 
@@ -599,6 +647,8 @@ gst_props_set (GstProps *props, const gchar *name, ...)
   GQuark quark;
   GList *lentry;
   va_list var_args;
+
+  g_return_val_if_fail (props != NULL, NULL);
   
   quark = g_quark_from_string (name);
 
@@ -622,6 +672,7 @@ gst_props_set (GstProps *props, const gchar *name, ...)
   return props;
 }
 
+
 /**
  * gst_props_unref:
  * @props: the props to unref
@@ -738,7 +789,7 @@ gst_props_copy (GstProps *props)
   if (props == NULL)
     return NULL;
 
-  new = gst_props_alloc ();
+  new = gst_props_empty_new ();
   new->properties = gst_props_list_copy (props->properties);
   new->fixed = props->fixed;
 
@@ -1575,7 +1626,7 @@ gst_props_intersect (GstProps *props1, GstProps *props2)
   GList *leftovers;
   GstPropsEntry *iprops = NULL;
 
-  intersection = gst_props_alloc ();
+  intersection = gst_props_empty_new ();
   intersection->fixed = TRUE;
 
   g_return_val_if_fail (props1 != NULL, NULL);
@@ -1697,7 +1748,7 @@ gst_props_normalize (GstProps *props)
        GstProps *newprops;
        GList *lentry;
 
-       newprops = gst_props_alloc ();
+       newprops = gst_props_empty_new ();
        newprops->properties = gst_props_list_copy (props->properties);
         lentry = g_list_find_custom (newprops->properties, GINT_TO_POINTER (list_entry->propid), props_find_func);
        if (lentry) {
@@ -1940,7 +1991,7 @@ gst_props_load_thyself (xmlNodePtr parent)
   xmlNodePtr field = parent->xmlChildrenNode;
   gchar *prop;
 
-  props = gst_props_alloc ();
+  props = gst_props_empty_new ();
 
   while (field) {
     if (!strcmp (field->name, "list")) {
index 0f6b8d4..ae85584 100644 (file)
@@ -87,6 +87,7 @@ void                  _gst_props_initialize           (void);
 
 GstProps*              gst_props_new                   (const gchar *firstname, ...);
 GstProps*              gst_props_newv                  (const gchar *firstname, va_list var_args);
+GstProps*              gst_props_empty_new             (void);
 
 void                   gst_props_unref                 (GstProps *props);
 void                   gst_props_ref                   (GstProps *props);
@@ -110,9 +111,12 @@ gboolean           gst_props_has_property          (GstProps *props, const gchar *name);
 gboolean               gst_props_has_property_typed    (GstProps *props, const gchar *name, GstPropsType type);
 gboolean               gst_props_has_fixed_property    (GstProps *props, const gchar *name);
 
+const GstPropsEntry*   gst_props_get_entry             (GstProps *props, const gchar *name);
+void                   gst_props_add_entry             (GstProps *props, GstPropsEntry *entry);
 
 /* working with props entries */
-const GstPropsEntry*   gst_props_get_entry             (GstProps *props, const gchar *name);
+GstPropsEntry*         gst_props_entry_new             (const gchar *name, ...);
+
 GstPropsType           gst_props_entry_get_type        (const GstPropsEntry *entry);
 const gchar*           gst_props_entry_get_name        (const GstPropsEntry *entry);
 gboolean               gst_props_entry_is_fixed        (const GstPropsEntry *entry);