1 /* GStreamer 2 * Copyright (C) 2009-2010 Edward Hervey <bilboed@bilboed.com> 3 * 4 * gstqueuearray.h: 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Library General Public 8 * License as published by the Free Software Foundation; either 9 * version 2 of the License, or (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Library General Public License for more details. 15 * 16 * You should have received a copy of the GNU Library General Public 17 * License along with this library; if not, write to the 18 * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, 19 * Boston, MA 02110-1301, USA. 20 */ 21 22 #include <glib.h> 23 24 #ifndef __GST_QUEUE_ARRAY_H__ 25 #define __GST_QUEUE_ARRAY_H__ 26 27 #include <gst/base/base-prelude.h> 28 29 G_BEGIN_DECLS 30 31 /** 32 * GstQueueArray: (skip) 33 */ 34 typedef struct _GstQueueArray GstQueueArray; 35 36 GST_BASE_API 37 GstQueueArray * gst_queue_array_new (guint initial_size); 38 39 GST_BASE_API 40 void gst_queue_array_free (GstQueueArray * array); 41 42 GST_BASE_API 43 void gst_queue_array_set_clear_func (GstQueueArray *array, 44 GDestroyNotify clear_func); 45 46 GST_BASE_API 47 void gst_queue_array_clear (GstQueueArray * array); 48 49 GST_BASE_API 50 gpointer gst_queue_array_pop_head (GstQueueArray * array); 51 52 GST_BASE_API 53 gpointer gst_queue_array_peek_head (GstQueueArray * array); 54 55 GST_BASE_API 56 gpointer gst_queue_array_peek_nth (GstQueueArray * array, guint idx); 57 58 GST_BASE_API 59 gpointer gst_queue_array_pop_tail (GstQueueArray * array); 60 61 GST_BASE_API 62 gpointer gst_queue_array_peek_tail (GstQueueArray * array); 63 64 GST_BASE_API 65 void gst_queue_array_push_tail (GstQueueArray * array, 66 gpointer data); 67 GST_BASE_API 68 gboolean gst_queue_array_is_empty (GstQueueArray * array); 69 70 GST_BASE_API 71 gpointer gst_queue_array_drop_element (GstQueueArray * array, 72 guint idx); 73 GST_BASE_API 74 guint gst_queue_array_find (GstQueueArray * array, 75 GCompareFunc func, 76 gpointer data); 77 GST_BASE_API 78 guint gst_queue_array_get_length (GstQueueArray * array); 79 80 /* Functions for use with structures */ 81 82 GST_BASE_API 83 GstQueueArray * gst_queue_array_new_for_struct (gsize struct_size, 84 guint initial_size); 85 GST_BASE_API 86 void gst_queue_array_push_tail_struct (GstQueueArray * array, 87 gpointer p_struct); 88 GST_BASE_API 89 gpointer gst_queue_array_pop_head_struct (GstQueueArray * array); 90 91 GST_BASE_API 92 gpointer gst_queue_array_peek_head_struct (GstQueueArray * array); 93 94 GST_BASE_API 95 gpointer gst_queue_array_peek_nth_struct (GstQueueArray * array, guint idx); 96 97 GST_BASE_API 98 gboolean gst_queue_array_drop_struct (GstQueueArray * array, 99 guint idx, 100 gpointer p_struct); 101 GST_BASE_API 102 gpointer gst_queue_array_pop_tail_struct (GstQueueArray * array); 103 104 GST_BASE_API 105 gpointer gst_queue_array_peek_tail_struct (GstQueueArray * array); 106 107 G_END_DECLS 108 109 #endif 110