## GstQueueArray GstQueueArray — Array based queue object |

## Synopsis

    #include <gst/base/gstqueuearray.h>

                        GstQueueArray;
    GstQueueArray *     gst_queue_array_new                 (guint initial_size);
    void                gst_queue_array_free                (GstQueueArray *array);
    guint               gst_queue_array_get_length          (GstQueueArray *array);
    gpointer            gst_queue_array_pop_head            (GstQueueArray *array);
    gpointer            gst_queue_array_peek_head           (GstQueueArray *array);
    void                gst_queue_array_push_tail           (GstQueueArray *array,
                                                             gpointer data);
    gboolean            gst_queue_array_is_empty            (GstQueueArray *array);
    gpointer            gst_queue_array_drop_element        (GstQueueArray *array,
                                                             guint idx);
    guint               gst_queue_array_find                (GstQueueArray *array,
                                                             GCompareFunc func,
                                                             gpointer data);

## Description

GstQueueArray is an object that provides standard queue functionality based on an array instead of linked lists. This reduces the overhead caused by memory managment by a large factor.

## Details

### GstQueueArray

    typedef struct _GstQueueArray GstQueueArray;

### gst_queue_array_new ()

    GstQueueArray *     gst_queue_array_new                 (guint initial_size);

Allocates a new GstQueueArray object with an initial queue size of `initial_size`.

`initial_size` : | Initial size of the new queue
Returns : | a new GstQueueArray object

Since 1.2.0

### gst_queue_array_free ()

    void                gst_queue_array_free                (GstQueueArray *array);

Frees queue `array` and all memory associated to it.

`array` : | a GstQueueArray object

Since 1.2.0

### gst_queue_array_get_length ()

    guint               gst_queue_array_get_length          (GstQueueArray *array);

Returns the length of the queue `array`

`array` : | a GstQueueArray object
Returns : | the length of the queue `array`.

Since 1.2.0

### gst_queue_array_pop_head ()

    gpointer            gst_queue_array_pop_head            (GstQueueArray *array);

Returns and head of the queue `array` and does not remove it from the queue.

`array` : | a GstQueueArray object
Returns : | The head of the queue

Since 1.2.0

### gst_queue_array_peek_head ()

    gpointer            gst_queue_array_peek_head           (GstQueueArray *array);

### gst_queue_array_push_tail ()

    void                gst_queue_array_push_tail           (GstQueueArray *array,
                                                             gpointer data);

Pushes `data` to the tail of the queue `array`.

`array` : | a GstQueueArray object
`data` : | object to push

Since 1.2.0

### gst_queue_array_is_empty ()

    gboolean            gst_queue_array_is_empty            (GstQueueArray *array);

Checks if the queue `array` is empty.

`array` : | a GstQueueArray object
Returns : | `TRUE` if the queue `array` is empty

Since 1.2.0

### gst_queue_array_drop_element ()

    gpointer            gst_queue_array_drop_element        (GstQueueArray *array,
                                                             guint idx);

Drops the queue element at position `idx` from queue `array`.

`array` : | a GstQueueArray object
`idx` : | index to drop
Returns : | the dropped element

Since 1.2.0

### gst_queue_array_find ()

    guint               gst_queue_array_find                (GstQueueArray *array,
                                                             GCompareFunc func,
                                                             gpointer data);

Finds an element in the queue `array`, either by comparing every element with `func` or by looking up `data` if no compare function `func` is provided, and returning the index of the found element.

Note that the index is not 0-based, but an internal index number with a random offset. The index can be used in connection with `gst_queue_array_drop_element()`. FIXME: return index 0-based and make `_drop_element()` take a 0-based index.

`array` : | a GstQueueArray object
`func` : | comparison function, or `NULL` to find `data` by value. [allow-none]
`data` : | data for comparison function
Returns : | Index of the found element or -1 if nothing was found.

Since 1.2.0