Changeset 151 in libcf for trunk/src/cf_stack.c
- Timestamp:
- 10/31/13 10:17:24 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/cf_stack.c
r128 r151 8 8 #include "cf_stack.h" 9 9 #include "cf_list.h" 10 #include "cf_local.h" 10 11 #include "cf_error.h" 11 12 12 13 #include <stdio.h> 14 15 static int 16 CF_Stack_Local_Get (cf_ctx ctx, 17 void ** element, 18 CF_BOOL removeFlag) 19 { 20 int result = 0; 21 cf_ctx list = (cf_ctx) ctx; 22 cf_traverser trav = NULL; 23 24 result = CF_List_Front (list, &trav); 25 if (result < 0) 26 return result; 27 28 result = CF_List_Get (trav, element); 29 if (result < 0) 30 return result; 31 32 result = (removeFlag == CF_TRUE) 33 ? CF_List_Remove (ctx, &trav) 34 : CF_OK; 35 36 return result; 37 } 13 38 14 39 /** … … 20 45 */ 21 46 int 22 CF_Stack_Create Ctx (CF_Stack_Ctx * ctx)47 CF_Stack_Create (cf_ctx * ctx) 23 48 { 24 return CF_List_Create Ctx ((CF_List_Ctx *) ctx);49 return CF_List_Create ((cf_ctx *) ctx); 25 50 } 26 51 … … 33 58 */ 34 59 int 35 CF_Stack_Destroy Ctx (CF_Stack_Ctx ctx)60 CF_Stack_Destroy (cf_ctx ctx) 36 61 { 37 return CF_List_Destroy Ctx(ctx);62 return CF_List_Destroy (ctx); 38 63 } 39 64 … … 47 72 */ 48 73 int 49 CF_Stack_Push ( CF_Stack_Ctxctx,74 CF_Stack_Push (cf_ctx ctx, 50 75 const void * element) 51 76 { 52 int result = 0; 53 CF_List_Ctx list = (CF_List_Ctx) ctx; 54 CF_Traverser traverser = NULL; 77 cf_ctx list = (cf_ctx) ctx; 55 78 56 result = CF_List_Front (list, &traverser); 57 if (result < 0) 58 return result; 59 60 return CF_List_Insert (list, traverser, CF_DIRECTION_BEFORE, element); 79 return CF_List_AddFront (list, element); 61 80 } 62 81 … … 70 89 */ 71 90 int 72 CF_Stack_Pop ( CF_Stack_Ctx ctx,73 void 91 CF_Stack_Pop (cf_ctx ctx, 92 void ** element) 74 93 { 75 int result = 0; 76 CF_List_Ctx list = (CF_List_Ctx) ctx; 77 CF_Traverser traverser = NULL; 78 79 result = CF_Stack_Top (ctx, element); 80 if (result < 0) 81 return result; 82 83 result = CF_List_Front (list, &traverser); 84 if (result < 0) 85 return result; 86 87 return CF_List_Remove (ctx, &traverser); 94 return CF_Stack_Local_Get (ctx, element, CF_TRUE); 88 95 } 89 96 … … 97 104 */ 98 105 int 99 CF_Stack_Top ( CF_Stack_Ctx ctx,100 void 106 CF_Stack_Top (cf_ctx ctx, 107 void ** element) 101 108 { 102 int result = 0; 103 CF_List_Ctx list = (CF_List_Ctx) ctx; 104 CF_Traverser traverser = NULL; 105 106 result = CF_List_Front (list, &traverser); 107 if (result < 0) 108 return result; 109 110 return CF_List_GetElement (traverser, element); 109 return CF_Stack_Local_Get (ctx, element, CF_FALSE); 111 110 } 112 111 … … 119 118 */ 120 119 int 121 CF_Stack_GetSize ( CF_Stack_Ctx ctx)120 CF_Stack_GetSize (cf_ctx ctx) 122 121 { 123 return CF_List_GetSize (( CF_List_Ctx) ctx);122 return CF_List_GetSize ((cf_ctx) ctx); 124 123 }
Note:
See TracChangeset
for help on using the changeset viewer.