structure: Add get/set_array/list using GValueArray
[platform/upstream/gstreamer.git] / gst / gststructure.h
index f7cc61b..6af9c83 100644 (file)
@@ -47,8 +47,8 @@ typedef struct _GstStructure GstStructure;
  * A function that will be called in gst_structure_foreach(). The function may
  * not modify @value.
  *
- * Returns: TRUE if the foreach operation should continue, FALSE if
- * the foreach operation should stop with FALSE.
+ * Returns: %TRUE if the foreach operation should continue, %FALSE if
+ * the foreach operation should stop with %FALSE.
  */
 typedef gboolean (*GstStructureForeachFunc) (GQuark   field_id,
                                              const GValue * value,
@@ -63,14 +63,31 @@ typedef gboolean (*GstStructureForeachFunc) (GQuark   field_id,
  * A function that will be called in gst_structure_map_in_place(). The function
  * may modify @value.
  *
- * Returns: TRUE if the map operation should continue, FALSE if
- * the map operation should stop with FALSE.
+ * Returns: %TRUE if the map operation should continue, %FALSE if
+ * the map operation should stop with %FALSE.
  */
 typedef gboolean (*GstStructureMapFunc)     (GQuark   field_id,
                                              GValue * value,
                                              gpointer user_data);
 
 /**
+ * GstStructureFilterMapFunc:
+ * @field_id: the #GQuark of the field name
+ * @value: the #GValue of the field
+ * @user_data: user data
+ *
+ * A function that will be called in gst_structure_filter_and_map_in_place().
+ * The function may modify @value, and the value will be removed from
+ * the structure if %FALSE is returned.
+ *
+ * Returns: %TRUE if the field should be preserved, %FALSE if it
+ * should be removed.
+ */
+typedef gboolean (*GstStructureFilterMapFunc) (GQuark   field_id,
+                                               GValue * value,
+                                               gpointer user_data);
+
+/**
  * GstStructure:
  * @type: the GType of a structure
  *
@@ -128,6 +145,14 @@ void                  gst_structure_set_value            (GstStructure        *
                                                           const gchar         * fieldname,
                                                           const GValue        * value);
 
+void                  gst_structure_set_array            (GstStructure        * structure,
+                                                          const gchar         * fieldname,
+                                                          const GValueArray   * array);
+
+void                  gst_structure_set_list             (GstStructure        * structure,
+                                                          const gchar         * fieldname,
+                                                          const GValueArray   * array);
+
 void                  gst_structure_id_take_value        (GstStructure        * structure,
                                                           GQuark                field,
                                                           GValue              * value);
@@ -198,6 +223,10 @@ gboolean              gst_structure_map_in_place         (GstStructure        *
                                                           GstStructureMapFunc   func,
                                                           gpointer              user_data);
 
+void                  gst_structure_filter_and_map_in_place (GstStructure        * structure,
+                                                          GstStructureFilterMapFunc   func,
+                                                          gpointer              user_data);
+
 gint                  gst_structure_n_fields             (const GstStructure  * structure);
 
 const gchar *         gst_structure_nth_field_name       (const GstStructure  * structure,
@@ -230,6 +259,14 @@ gboolean              gst_structure_get_uint             (const GstStructure  *
                                                           const gchar         * fieldname,
                                                           guint               * value);
 
+gboolean              gst_structure_get_int64            (const GstStructure  * structure,
+                                                          const gchar         * fieldname,
+                                                          gint64              * value);
+
+gboolean              gst_structure_get_uint64           (const GstStructure  * structure,
+                                                          const gchar         * fieldname,
+                                                          guint64             * value);
+
 gboolean              gst_structure_get_double           (const GstStructure  * structure,
                                                           const gchar         * fieldname,
                                                           gdouble             * value);
@@ -259,6 +296,19 @@ gboolean              gst_structure_get_fraction         (const GstStructure  *
                                                           gint                * value_numerator,
                                                           gint                * value_denominator);
 
+gboolean              gst_structure_get_flagset          (const GstStructure  * structure,
+                                                          const gchar         * fieldname,
+                                                          guint               * value_flags,
+                                                          guint               * value_mask);
+
+gboolean              gst_structure_get_array            (GstStructure        * structure,
+                                                          const gchar         * fieldname,
+                                                          GValueArray        ** array);
+
+gboolean              gst_structure_get_list             (GstStructure        * structure,
+                                                          const gchar         * fieldname,
+                                                          GValueArray        ** array);
+
 gchar *               gst_structure_to_string    (const GstStructure * structure) G_GNUC_MALLOC;
 
 GstStructure *        gst_structure_from_string  (const gchar * string,
@@ -302,6 +352,10 @@ gboolean              gst_structure_can_intersect (const GstStructure * struct1,
 GstStructure *        gst_structure_intersect     (const GstStructure * struct1,
                                                    const GstStructure * struct2) G_GNUC_MALLOC;
 
+#ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstStructure, gst_structure_free)
+#endif
+
 G_END_DECLS
 
 #endif