66 lines
1.4 KiB
C
66 lines
1.4 KiB
C
/*!
|
|
* \file deque08.h
|
|
* \brief
|
|
* This file provides double ended queue capability based on a ring buffer
|
|
*
|
|
* Author: Christos Choutouridis AEM: 8997
|
|
* email : <cchoutou@ece.auth.gr>
|
|
*
|
|
*/
|
|
#ifndef __deque08_h__
|
|
#define __deque08_h__
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include "driver_types.h"
|
|
#include <string.h>
|
|
|
|
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__
|