## schroqueue schroqueue |

## Synopsis

                        SchroQueue;
                        SchroQueueElement;
    void                (*SchroQueueFreeFunc)               (void *data,
                                                             SchroPictureNumber number);
    void                schro_queue_add                     (SchroQueue *queue,
                                                             void *element,
                                                             SchroPictureNumber picture_number);
    void                schro_queue_clear                   (SchroQueue *queue);
    void                schro_queue_delete                  (SchroQueue *queue,
                                                             SchroPictureNumber picture_number);
    void *              schro_queue_find                    (SchroQueue *queue,
                                                             SchroPictureNumber picture_number);
    void                schro_queue_free                    (SchroQueue *queue);
    int                 schro_queue_is_empty                (SchroQueue *queue);
    int                 schro_queue_is_full                 (SchroQueue *queue);
    SchroQueue *        schro_queue_new                     (int size,
                                                             SchroQueueFreeFunc func);
    void                schro_queue_pop                     (SchroQueue *queue);
    void *              schro_queue_pull                    (SchroQueue *queue);
    void *              schro_queue_remove                  (SchroQueue *queue,
                                                             SchroPictureNumber picture_number);

## Description

## Details

### SchroQueue

    typedef struct {
      int size;
      int n;

      SchroQueueElement *elements;
      SchroQueueFreeFunc free;
    } SchroQueue;

### SchroQueueElement

    typedef struct {
      void *data;
      SchroPictureNumber picture_number;
    } SchroQueueElement;

### SchroQueueFreeFunc ()

    void                (*SchroQueueFreeFunc)               (void *data,
                                                             SchroPictureNumber number);

`data` : |
`number` : |

### schro_queue_add ()

    void                schro_queue_add                     (SchroQueue *queue,
                                                             void *element,
                                                             SchroPictureNumber picture_number);

`queue` : |
`element` : |
`picture_number` : |

### schro_queue_clear ()

    void                schro_queue_clear                   (SchroQueue *queue);

`queue` : |

### schro_queue_delete ()

    void                schro_queue_delete                  (SchroQueue *queue,
                                                             SchroPictureNumber picture_number);

`queue` : |
`picture_number` : |

### schro_queue_find ()

    void *              schro_queue_find                    (SchroQueue *queue,
                                                             SchroPictureNumber picture_number);

`queue` : |
`picture_number` : |
Returns : |

### schro_queue_free ()

    void                schro_queue_free                    (SchroQueue *queue);

`queue` : |

### schro_queue_is_empty ()

    int                 schro_queue_is_empty                (SchroQueue *queue);

`queue` : |
Returns : |

### schro_queue_is_full ()

    int                 schro_queue_is_full                 (SchroQueue *queue);

`queue` : |
Returns : |

### schro_queue_new ()

    SchroQueue *        schro_queue_new                     (int size,
                                                             SchroQueueFreeFunc func);

`size` : |
`func` : |
Returns : |

### schro_queue_pop ()

    void                schro_queue_pop                     (SchroQueue *queue);

`queue` : |

### schro_queue_pull ()

    void *              schro_queue_pull                    (SchroQueue *queue);

`queue` : |
Returns : |

### schro_queue_remove ()

    void *              schro_queue_remove                  (SchroQueue *queue,
                                                             SchroPictureNumber picture_number);

`queue` : |
`picture_number` : |
Returns : |