a simple c queue
queue.h
- Committer:
- danilob
- Date:
- 2015-02-14
- Revision:
- 0:8b473c4a0afc
File content as of revision 0:8b473c4a0afc:
/* * queue.h * * Created on: Jan 15, 2015 * Author: danilob */ #ifndef QUEUE_H_ #define QUEUE_H_ #include <stdint.h> #include <stdbool.h> typedef uint32_t queue_index_t; typedef double queue_data_t; typedef uint32_t queue_size_t; typedef struct { queue_index_t indexIn; queue_index_t indexOut; queue_size_t size; queue_size_t elementCount; queue_data_t * data; } queue_t; // Allocates the memory to you queue (the data* pointer) and initializes all parts of the data structure. void queue_init(queue_t* q, queue_size_t size); // Returns the size of the queue.. queue_size_t queue_size(queue_t* q); // Returns true if the queue is full. bool queueFull(queue_t* q); // Returns true if the queue is empty. bool queue_empty(queue_t* q); // Pushes a new element into the queue. Reports an error if the queue is full. void queue_push(queue_t* q, queue_data_t value); // Removes the oldest element in the queue. queue_data_t queue_pop(queue_t* q); // Pushes a new element into the queue, making room by removing the oldest element. void queue_overwritePush(queue_t* q, queue_data_t value); // Provides random-access read capability to the queue. // Low-valued indexes access older queue elements while higher-value indexes access newer elements // (according to the order that they were added). queue_data_t queue_readElementAt(queue_t* q, queue_index_t index); // Returns a count of the elements currently contained in the queue. queue_size_t queue_elementCount(queue_t* q); // Frees the storage that you malloc'd before. void gueue_garbageCollect(queue_t* q); // Prints the current contents of the queue. Handy for debugging. void queue_print(queue_t* q); // Performs a comprehensive test of all queue functions. int queue_runTest(); #endif /* QUEUE_H_ */