source: libcf/trunk/src/cf_queue.c@ 109

Last change on this file since 109 was 109, checked in by cheese, 11 years ago

#1 add typical data structure algorithms (linked-list / queue / stak) and rename symbol for context of each modules

File size: 1.3 KB
Line 
1/**
2 * @file cf_queue.c
3 * @author myusgun <myusgun@gmail.com>
4 */
5#include "cf_queue.h"
6#include "cf_list.h"
7#include "cf_error.h"
8
9#include <stdio.h>
10
11int
12CF_Queue_CreateCtx (CF_Queue_Ctx * ctx)
13{
14 return CF_List_CreateCtx ((CF_List_Ctx *) ctx);
15}
16
17int
18CF_Queue_DestroyCtx (CF_Queue_Ctx ctx)
19{
20 return CF_List_DestroyCtx (ctx);
21}
22
23int
24CF_Queue_Put (CF_Queue_Ctx ctx,
25 const void * element)
26{
27 int result = 0;
28 CF_List_Ctx list = (CF_List_Ctx) ctx;
29 CF_Traverser traverser = NULL;
30
31 result = CF_List_Rear (list, &traverser);
32 if (result < 0)
33 return result;
34
35 return CF_List_Insert (list, traverser, CF_DIRECTION_AFTER, element);
36}
37
38int
39CF_Queue_Get (CF_Queue_Ctx ctx,
40 void ** element)
41{
42 int result = 0;
43 CF_List_Ctx list = (CF_List_Ctx) ctx;
44 CF_Traverser traverser = NULL;
45
46 result = CF_Queue_Front (ctx, element);
47 if (result < 0)
48 return result;
49
50 result = CF_List_Front (list, &traverser);
51 if (result < 0)
52 return result;
53
54 return CF_List_Remove (ctx, &traverser);
55}
56
57int
58CF_Queue_Front (CF_Queue_Ctx ctx,
59 void ** element)
60{
61 int result = 0;
62 CF_List_Ctx list = (CF_List_Ctx) ctx;
63 CF_Traverser traverser = NULL;
64
65 result = CF_List_Front (list, &traverser);
66 if (result < 0)
67 return result;
68
69 return CF_List_GetElement (traverser, element);
70}
71
72int
73CF_Queue_GetSize (CF_Queue_Ctx ctx)
74{
75 return CF_List_GetSize ((CF_List_Ctx) ctx);
76}
Note: See TracBrowser for help on using the repository browser.