Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Very simple queue
- * These are FIFO queues which discard the new data when full.
- *
- * Queue is empty when in == out.
- * If in != out, then
- * - items are placed into in before incrementing in
- * - items are removed from out before incrementing out
- * Queue is full when in == (out-1 + QUEUE_SIZE) % QUEUE_SIZE;
- *
- * The queue will hold QUEUE_ELEMENTS number of items before the
- * calls to QueuePut fail.
- */
- /* Queue structure */
- #define QUEUE_ELEMENTS 100
- #define QUEUE_SIZE (QUEUE_ELEMENTS + 1)
- int Queue[QUEUE_SIZE];
- int QueueIn, QueueOut;
- void QueueInit(void)
- {
- QueueIn = QueueOut = 0;
- }
- int QueuePut(int new)
- {
- if(QueueIn == (( QueueOut - 1 + QUEUE_SIZE) % QUEUE_SIZE))
- {
- return -1; /* Queue Full*/
- }
- Queue[QueueIn] = new;
- QueueIn = (QueueIn + 1) % QUEUE_SIZE;
- return 0; // No errors
- }
- int QueueGet(int *old)
- {
- if(QueueIn == QueueOut)
- {
- return -1; /* Queue Empty - nothing to get*/
- }
- *old = Queue[QueueOut];
- QueueOut = (QueueOut + 1) % QUEUE_SIZE;
- return 0; // No errors
- }
Add Comment
Please, Sign In to add comment