Esempio n. 1
0
void *STK_get_item(STK_ID_t stack,STK_MARK_t mark,int offset){
	CDA_ASSERT(stack->stack+mark>=stack->stack);
	CDA_ASSERT(stack->stack+mark<stack->sptr);
	CDA_ASSERT(stack->stack+mark+offset>=stack->stack);
	CDA_ASSERT(stack->stack+mark+offset<stack->sptr);

	return *(stack->stack+mark+offset);
}
Esempio n. 2
0
void STK_change_item(STK_ID_t stack,STK_MARK_t mark,int offset,void *val){
	CDA_ASSERT(stack->stack+mark>=stack->stack);
	CDA_ASSERT(stack->stack+mark<stack->sptr);
	CDA_ASSERT(stack->stack+mark+offset>=stack->stack);
	CDA_ASSERT(stack->stack+mark+offset<stack->sptr);

	*(stack->stack+mark+offset)=val;
}
Esempio n. 3
0
void *STK_pop_item( STK_ID_t stack )
{
    CDA_ASSERT( ! STK_is_stack_empty( stack ) );

    --stack->sptr;
    return *stack->sptr;
}
Esempio n. 4
0
BTREE_NODE_ID_t BTREE_add_right(BTREE_NODE_ID_t node,void *data){
    CDA_ASSERT(node->right == NULL);
    
    BTREE_NODE_p_t right = CDA_NEW(BTREE_NODE_t);
    right->data = data;
    right->parent = node;
    right->tree = node->tree;
    right->left = NULL;
    right->right = NULL;
    
    node->right = right;
    
    return right;
}
Esempio n. 5
0
BTREE_NODE_ID_t BTREE_add_left(BTREE_NODE_ID_t node,void *data){
    CDA_ASSERT(node->left == NULL);
    
    BTREE_NODE_p_t left = CDA_NEW(BTREE_NODE_t);
    left->data = data;
    left->tree = node->tree;
    left->parent = node;
    left->left = NULL;
    left->right = NULL;

    node->left = left;
    
    return  left;
}
Esempio n. 6
0
BTREE_ID_t BTREE_traverse_tree(BTREE_ID_t tree,BTREE_TRAVERSE_ORDER_e_t order,BTREE_VISIT_PROC_p_t visit_proc){
    
    switch (order) {
        case BTREE_PREORDER:
            traverse_preorder(tree->root, visit_proc);
            break;
            case BTREE_INORDER:
            traverse_inorder(tree->root, visit_proc);
            break;
            case BTREE_POSTORDER:
            traverse_postorder(tree->root,visit_proc);
            break;
            
        default:
            CDA_ASSERT(CDA_FALSE);
            break;
    }
    
    return tree;
}
Esempio n. 7
0
BTREE_NODE_ID_t BTREE_destroy_subtree(BTREE_NODE_ID_t node,BTREE_DESTROY_PROC_p_t destroy_proc){
    if(node->left!=NULL)
        BTREE_destroy_subtree(node->left,destroy_proc);
    
    if(node->right!=NULL)
        BTREE_destroy_subtree(node->right,destroy_proc);
    
    if (node->data!=NULL) {
        destroy_proc(node->data);
    }
    
    if(node==node->tree->root)
        node->tree->root = NULL;
    else if (node->parent->left==node)
        node->parent->left=NULL;
    else if(node->parent->right==node)
        node->parent->right=NULL;
    else
        CDA_ASSERT(CDA_FALSE);
    
    CDA_free(node);
    
    return BTREE_NODE_NULL_ID;
}
Esempio n. 8
0
void *STK_peek_item(STK_ID_t stack)
{
    CDA_ASSERT(stack->sptr != stack->stack);
    return *(stack->sptr - 1);
}
Esempio n. 9
0
void STK_clear_to_mark(STK_ID_t stack,STK_MARK_t mark){
	CDA_ASSERT(stack->stack+mark>=stack->stack);
	CDA_ASSERT(stack->stack+mark<stack->sptr);

	stack->sptr = stack->stack+mark;
}
Esempio n. 10
0
int main(void)
{
    CDA_UINT32_t max_test[] = {9,9,9,3,4,5,6,7,8,9};
    char * name = "PRQ_TEST_QUEUE";
    int * data[] = {0,1,2,3,4,5,6,7,8,9};
    int inx = 0;
    PRQ_ITEM_p_t item = NULL, rmitem = NULL;
    PRQ_ITEM_p_t item_array[10];


    PRQ_ID_t queue =  PRQ_create_queue( name, 10 );


    /*-----------PRQ_create_item-------------------*/
    for (; inx < 10; ++inx )
    {
        item_array[inx] = PRQ_create_item( data[inx], max_test[inx] );
        printf("item_array[%d] = %p : priority =  %d\n",inx, item_array[inx], max_test[inx]);
    }



    /*CDA_ASSERT( (ENQ_ITEM_p_t)item->flink == (ENQ_ITEM_p_t)item->blink );

    CDA_ASSERT( item != NULL );

    CDA_ASSERT( item->priority >= 0 );
    printf("PRQ_create_item passed\n");
    */

    /*-----------PRQ_add_item-------------------*/
    for (inx = 0; inx < 10; ++inx )
    {
        item = PRQ_add_item( queue, item_array[inx] );
        CDA_ASSERT( ENQ_is_item_enqed( (ENQ_ITEM_p_t)item ) );
        CDA_ASSERT( item == item_array[inx]);
    }
    printf("PRQ_add_item passed\n");


    /*-----------PRQ_remove_item-------------------*/
    rmitem = PRQ_remove_item( queue );
    CDA_ASSERT( ! ENQ_is_item_enqed( (ENQ_ITEM_p_t)rmitem ) );
    CDA_ASSERT( rmitem == item_array[10] );

    PRQ_add_item( queue, rmitem );
    CDA_ASSERT( ENQ_is_item_enqed( (ENQ_ITEM_p_t)rmitem ) );
    printf("PRQ_remove_item passed\n");


    /*-----------PRQ_deq_item-------------------*/
    rmitem = PRQ_deq_item( item_array[5] );
    CDA_ASSERT( rmitem != NULL );
    CDA_ASSERT( rmitem->priority == 5 );
    printf("PRQ_deq_item passed\n");


    /*-----------PRQ_enq_pri_head-------------------*/
    item = PRQ_enq_pri_head( queue, rmitem );
    CDA_ASSERT( ENQ_is_item_enqed( (ENQ_ITEM_p_t)item ) );
    printf("PRQ_enq_pri_head passed\n");


    /*-----------PRQ_deq_pri_head-------------------*/
    rmitem = PRQ_deq_pri_head( queue, 5 );
    CDA_ASSERT( ! ENQ_is_item_enqed( (ENQ_ITEM_p_t)rmitem ) );
    CDA_ASSERT( rmitem->priority == 5 );
    printf("PRQ_deq_pri_head passed\n");


    /*-----------PRQ_GET_DATA-------------------

      CDA_ASSERT( 5 == (int)PRQ_GET_DATA(rmitem) );


      /*-----------PRQ_GET_PRIORITY-------------------
        CDA_ASSERT( 5 == (CDA_UINT32_t)PRQ_GET_PRIORITY( rmitem ) );

        /*-----------PRQ_destroy_item-------------------
    PRQ_destroy_item( item );
    CDA_ASSERT( ! ENQ_is_item_enqed( (ENQ_ITEM_p_t)item ) );
    printf("PRQ_destroy_item passed\n");
    -----------------------------------------------*/


    /*-----------PRQ_empty_queue-------------------*/
    PRQ_empty_queue( queue, NULL );
    for (inx = 0; inx < 10; ++inx )
    {
        printf("assert died - inx = %d\n", inx);
        CDA_ASSERT( ENQ_is_list_empty( (ENQ_ANCHOR_p_t)queue->anchor_array[inx] ) );
    }
    printf("PRQ_empty_queue passed\n");


    /*-----------PRQ_destroy_queue-------------------*/
    printf("destroying queue %d\n", sizeof(queue));
    PRQ_destroy_queue( queue, NULL );
    printf("destroyed queue %d\n", sizeof(queue));
    CDA_ASSERT( ! queue );
    printf("PRQ_destroy_queue passed\n");

    return 0;
}