/*! * \file deque08.h * \brief * This file provides double ended queue capability based on a ring buffer * * Author: Christos Choutouridis AEM: 8997 * email : * */ #ifndef __deque08_h__ #define __deque08_h__ #ifdef __cplusplus extern "C" { #endif #include "driver_types.h" #include typedef struct { byte_t *m; /*!< pointer to queue's buffer */ iterator_t capacity; /*!< queue's max item capacity */ iterator_t items; /*!< current item count */ iterator_t f, r; /*!< queue iterators */ }deque08_t; /* * ============= PUBLIC EE API ============= */ /* * Link and Glue functions */ void deque08_link_buffer (deque08_t *q, byte_t* buf); /* * Set functions */ void deque08_set_capacity (deque08_t *q, size_t capacity); /* * User Functions */ int deque08_is_full (deque08_t *q); int deque08_is_empty (deque08_t *q); int deque08_size (deque08_t *q); void deque08_flush (deque08_t *q); void deque08_init (deque08_t *q); int deque08_push_front (deque08_t *q, byte_t b); int deque08_pop_front (deque08_t *q, byte_t *b); int deque08_push_back (deque08_t *q, byte_t b); int deque08_pop_back (deque08_t *q, byte_t *b); int deque08_back (deque08_t *q, byte_t *b); int deque08_front (deque08_t *q, byte_t *b); #ifdef __cplusplus } #endif #endif //#ifndef __deque08_h__