Changeset 151 in libcf for trunk/src/cf_stack.c


Ignore:
Timestamp:
10/31/13 10:17:24 (11 years ago)
Author:
cheese
Message:

#1 fix interface and add util module

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/cf_stack.c

    r128 r151  
    88#include "cf_stack.h"
    99#include "cf_list.h"
     10#include "cf_local.h"
    1011#include "cf_error.h"
    1112
    1213#include <stdio.h>
     14
     15static int
     16CF_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}
    1338
    1439/**
     
    2045 */
    2146int
    22 CF_Stack_CreateCtx (CF_Stack_Ctx * ctx)
     47CF_Stack_Create (cf_ctx * ctx)
    2348{
    24     return CF_List_CreateCtx ((CF_List_Ctx *) ctx);
     49    return CF_List_Create ((cf_ctx *) ctx);
    2550}
    2651
     
    3358 */
    3459int
    35 CF_Stack_DestroyCtx (CF_Stack_Ctx ctx)
     60CF_Stack_Destroy (cf_ctx ctx)
    3661{
    37     return CF_List_DestroyCtx (ctx);
     62    return CF_List_Destroy (ctx);
    3863}
    3964
     
    4772 */
    4873int
    49 CF_Stack_Push (CF_Stack_Ctx ctx,
     74CF_Stack_Push (cf_ctx       ctx,
    5075               const void   * element)
    5176{
    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;
    5578
    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);
    6180}
    6281
     
    7089 */
    7190int
    72 CF_Stack_Pop (CF_Stack_Ctx  ctx,
    73               void          ** element)
     91CF_Stack_Pop (cf_ctx    ctx,
     92              void      ** element)
    7493{
    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);
    8895}
    8996
     
    97104 */
    98105int
    99 CF_Stack_Top (CF_Stack_Ctx  ctx,
    100               void          ** element)
     106CF_Stack_Top (cf_ctx    ctx,
     107              void      ** element)
    101108{
    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);
    111110}
    112111
     
    119118 */
    120119int
    121 CF_Stack_GetSize (CF_Stack_Ctx ctx)
     120CF_Stack_GetSize (cf_ctx ctx)
    122121{
    123     return CF_List_GetSize ((CF_List_Ctx) ctx);
     122    return CF_List_GetSize ((cf_ctx) ctx);
    124123}
Note: See TracChangeset for help on using the changeset viewer.