*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef __GST_ITERATOR_H__
*
* A function to be passed to gst_iterator_fold().
*
- * Returns: TRUE if the fold should continue, FALSE if it should stop.
+ * Returns: %TRUE if the fold should continue, %FALSE if it should stop.
*/
typedef gboolean (*GstIteratorFoldFunction) (const GValue * item, GValue * ret, gpointer user_data);
gpointer _gst_reserved[GST_PADDING];
};
+GST_API
GType gst_iterator_get_type (void);
/* creating iterators */
+
+GST_API
GstIterator* gst_iterator_new (guint size,
GType type,
GMutex *lock,
GstIteratorItemFunction item,
GstIteratorResyncFunction resync,
GstIteratorFreeFunction free) G_GNUC_MALLOC;
-
+GST_API
GstIterator* gst_iterator_new_list (GType type,
GMutex *lock,
guint32 *master_cookie,
GList **list,
GObject * owner,
GstIteratorItemFunction item) G_GNUC_MALLOC;
-
+GST_API
GstIterator* gst_iterator_new_single (GType type,
const GValue * object) G_GNUC_MALLOC;
-
+GST_API
GstIterator* gst_iterator_copy (const GstIterator *it) G_GNUC_MALLOC;
/* using iterators */
+
+GST_API
GstIteratorResult gst_iterator_next (GstIterator *it, GValue * elem);
+
+GST_API
void gst_iterator_resync (GstIterator *it);
+
+GST_API
void gst_iterator_free (GstIterator *it);
+GST_API
void gst_iterator_push (GstIterator *it, GstIterator *other);
/* higher-order functions that operate on iterators */
+
+GST_API
GstIterator* gst_iterator_filter (GstIterator *it, GCompareFunc func,
const GValue * user_data) G_GNUC_MALLOC;
+GST_API
GstIteratorResult gst_iterator_fold (GstIterator *it,
GstIteratorFoldFunction func,
GValue *ret, gpointer user_data);
+GST_API
GstIteratorResult gst_iterator_foreach (GstIterator *it,
GstIteratorForeachFunction func, gpointer user_data);
+GST_API
gboolean gst_iterator_find_custom (GstIterator *it, GCompareFunc func,
GValue *elem, gpointer user_data);
+#ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstIterator, gst_iterator_free)
+#endif
+
G_END_DECLS
#endif /* __GST_ITERATOR_H__ */