/******************************************************************************** * Copyright: (C) 2012 Guo Wenxue * All rights reserved. * * Filename: cp_queue.h * Description: This head file is for the queue implement based on link list. * * Version: 1.0.0(11/12/2012~) * Author: Guo Wenxue * ChangeLog: 1, Release initial version on "11/12/2012 01:26:34 PM" * ********************************************************************************/ #ifndef __CP_QUEUE #define __CP_QUEUE #include #include #include #include typedef struct _CP_QNODE { void *item; struct _CP_QNODE *next; } CP_QNODE; typedef struct _CP_QUEUE { CP_QNODE *front; CP_QNODE *rear; int items; int size; } CP_QUEUE; #define cp_queue_is_full(pq) ( (pq)->size==(pq)->items ? 1 :0 ) #define cp_queue_is_empty(pq) ( 0==(pq)->items ? 1 : 0) #define cp_queue_count(pq) ( (pq)->items ) #define cp_queue_size(pq) ( (pq)->size ) CP_QUEUE *cp_queue_init(CP_QUEUE *queue, int size); void *cp_enqueue(CP_QUEUE *queue, void *data); void cp_travel_queue(CP_QUEUE *queue); void *cp_rmqueue(CP_QUEUE *queue, void *data); void *cp_dequeue(CP_QUEUE *queue); void cp_queue_destroy(CP_QUEUE *queue); #define cp_queue_destroy_clear(queue) {cp_queue_destroy(queue); queue=NULL;} #endif