structure: Add get/set_array/list using GValueArray
[platform/upstream/gstreamer.git] / gst / gststructure.h
index 6687970..6af9c83 100644 (file)
@@ -71,6 +71,23 @@ typedef gboolean (*GstStructureMapFunc)     (GQuark   field_id,
                                              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,
@@ -267,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,
@@ -310,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