/** * @file cf_queue.c * @author myusgun */ #include "cf_queue.h" #include "cf_list.h" #include "cf_error.h" #include int CF_Queue_CreateCtx (CF_Queue_Ctx * ctx) { return CF_List_CreateCtx ((CF_List_Ctx *) ctx); } int CF_Queue_DestroyCtx (CF_Queue_Ctx ctx) { return CF_List_DestroyCtx (ctx); } int CF_Queue_Put (CF_Queue_Ctx ctx, const void * element) { int result = 0; CF_List_Ctx list = (CF_List_Ctx) ctx; CF_Traverser traverser = NULL; result = CF_List_Rear (list, &traverser); if (result < 0) return result; return CF_List_Insert (list, traverser, CF_DIRECTION_AFTER, element); } int CF_Queue_Get (CF_Queue_Ctx ctx, void ** element) { int result = 0; CF_List_Ctx list = (CF_List_Ctx) ctx; CF_Traverser traverser = NULL; result = CF_Queue_Front (ctx, element); if (result < 0) return result; result = CF_List_Front (list, &traverser); if (result < 0) return result; return CF_List_Remove (ctx, &traverser); } int CF_Queue_Front (CF_Queue_Ctx ctx, void ** element) { int result = 0; CF_List_Ctx list = (CF_List_Ctx) ctx; CF_Traverser traverser = NULL; result = CF_List_Front (list, &traverser); if (result < 0) return result; return CF_List_GetElement (traverser, element); } int CF_Queue_GetSize (CF_Queue_Ctx ctx) { return CF_List_GetSize ((CF_List_Ctx) ctx); }