当前位置: 首页>>代码示例>>C++>>正文


C++ create_stack函数代码示例

本文整理汇总了C++中create_stack函数的典型用法代码示例。如果您正苦于以下问题:C++ create_stack函数的具体用法?C++ create_stack怎么用?C++ create_stack使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了create_stack函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: test_non_empty_stack_peek_shows_correct_value

static void test_non_empty_stack_peek_shows_correct_value(void) {
  Stack *stack = create_stack(3);
  push(stack, 8);
  int value = peek(stack);

  assert (8 == value && "peeked value should be 8");
  free(stack);
}
开发者ID:heptat,项目名称:unix,代码行数:8,代码来源:test_stack.c

示例2: test_empty_stack_peek

static void test_empty_stack_peek(void) {
  Stack *stack = create_stack();

  // Note: You can't tell if a stack is empty by simply peeking, you also have
  // to call "is_empty"
  assert (0 == peek(stack) && "peek at empty stack should show 0");
  destroy_stack(stack);
}
开发者ID:heptat,项目名称:unix,代码行数:8,代码来源:test_stack.c

示例3: test_pop_from_empty_stack_fails

static void test_pop_from_empty_stack_fails(void) {
  Stack *stack = create_stack(3);
  BOOL success;
  pop(stack, &success);

  assert (FALSE == success && "pop should fail");
  free(stack);
}
开发者ID:heptat,项目名称:unix,代码行数:8,代码来源:test_stack.c

示例4: test_push_onto_non_empty_stack_size_is_correct

static void test_push_onto_non_empty_stack_size_is_correct(void) {
  Stack *stack = create_stack();
  push(stack, 5);
  push(stack, 4);

  assert (2 == size(stack) && "stack size after pushes should be 2");
  destroy_stack(stack);
}
开发者ID:heptat,项目名称:unix,代码行数:8,代码来源:test_stack.c

示例5: test3

void test3() 
//@ requires true;
//@ ensures true;
{
    struct value* v2, v3;
    struct stack* s = create_stack();
    //@ close foreach(nil, value_helper2(27));
    //@ close stack_allClients3(s, nil, 27);
    //@ close stack_unsep(stack_inv3_unsep)(boxed_int(27), s, stack_inv3(s, 27), stack_inv3_sep, nil);
    //@ produce_lemma_function_pointer_chunk(stack_inv3_sep);
    //@ produce_lemma_function_pointer_chunk(stack_inv3_unsep);    
    //@ share_stack(s);
        
    struct value* v = malloc(sizeof(struct value));
    if(v == 0) abort();
    v->val = 27;
    
    //@ close stack_push_context_pre(allClients3_push)(stack_inv3_unsep, s, v, boxed_int(27));
    //@ produce_lemma_function_pointer_chunk(allClients3_push);
    stack_push(s, v);
    //@ leak is_stack_push_context(allClients3_push);
    //@ open stack_push_context_post(allClients3_push)(boxed_int(27));
    
    //@ close stack_try_pop_context_pre(allClients3_try_pop)(stack_inv3_unsep, s, boxed_int(27));
    //@ produce_lemma_function_pointer_chunk(allClients3_try_pop);
    bool result = stack_try_pop(s, &v2);
    //@ leak is_stack_try_pop_context(allClients3_try_pop);
    //@ open stack_try_pop_context_post(allClients3_try_pop)(_, _, boxed_int(27));
    if(result) { 
        //@ open value(v2, 27);
        free(v2); 
    }

    //@ unshare_stack(s);
    //@ open stack_unsep(stack_inv3_unsep)(boxed_int(27), s, stack_inv3(s, 27), stack_inv3_sep, _);
    //@ leak is_stack_sep(stack_inv3_sep);
    //@ leak is_stack_unsep(stack_inv3_unsep);
    
    
    bool hasMore = true;
    while(hasMore)
    //@ invariant stack(s, ?remElems) &*& stack_allClients3(s, remElems, 27) &*& pointer(&v3, _) &*& (hasMore ? true: remElems == nil);
    {
        hasMore = stack_try_pop_sequential(s, &v3);
        if(hasMore) {
            //@ open stack_allClients3(s, remElems, 27);
            //@ open foreach(remElems, value_helper2(27));
            //@ close stack_allClients3(s, tail(remElems), 27);
            //@ open value_helper2(27)(v3);
            //@ open value(v3, 27);
            free((struct value*)v3); 
        }
    }
    
    //@ open stack_allClients3(s, remElems, 27);
    //@ open foreach(remElems, value_helper2(27));
    dispose_stack(s);
}
开发者ID:amintimany,项目名称:verifast,代码行数:58,代码来源:stack_leaking_client.c

示例6: test_pop_from_empty_stack_size_is_zero

static void test_pop_from_empty_stack_size_is_zero(void) {
  Stack *stack = create_stack();
  Node *node = NULL;
  pop(stack, &node);

  assert (0 == size(stack) && "stack size should be 0");
  free(node);
  destroy_stack(stack);
}
开发者ID:heptat,项目名称:unix,代码行数:9,代码来源:test_stack.c

示例7: test_pop_from_non_empty_stack_returns_correct_value

static void test_pop_from_non_empty_stack_returns_correct_value(void) {
  Stack *stack = create_stack(3);
  push(stack, 8);
  BOOL success;
  int value = pop(stack, &success);

  assert (8 == value && "popped value should be 8");
  free(stack);
}
开发者ID:heptat,项目名称:unix,代码行数:9,代码来源:test_stack.c

示例8: test_pop_from_stack_with_one_element_sets_head_to_negative

static void test_pop_from_stack_with_one_element_sets_head_to_negative(void) {
  Stack *stack = create_stack(3);
  push(stack, 8);
  BOOL success;
  pop(stack, &success);

  assert (0 > stack->head && "pop should set head to negative");
  free(stack);
}
开发者ID:heptat,项目名称:unix,代码行数:9,代码来源:test_stack.c

示例9: test_pop_from_non_empty_stack_succeeds

static void test_pop_from_non_empty_stack_succeeds(void) {
  Stack *stack = create_stack(3);
  push(stack, 8);
  BOOL success;
  pop(stack, &success);

  assert (TRUE == success && "pop should succeed");
  free(stack);
}
开发者ID:heptat,项目名称:unix,代码行数:9,代码来源:test_stack.c

示例10: push

void push(int val, Stack *s)
{
	Stack new_s = create_stack(val);	
	
	if(s != NULL)
		new_s->next = *s;
	
	*s = new_s;
}
开发者ID:Mehyo,项目名称:Bongo,代码行数:9,代码来源:stack.c

示例11: test_pop_from_empty_stack_node_is_null

static void test_pop_from_empty_stack_node_is_null(void) {
  Stack *stack = create_stack();
  Node *node = NULL;
  pop(stack, &node);

  assert (NULL == node && "popped node should be NULL");
  free(node);
  destroy_stack(stack);
}
开发者ID:heptat,项目名称:unix,代码行数:9,代码来源:test_stack.c

示例12: LOG

void
rust_task::new_stack(size_t requested_sz) {
    LOG(this, mem, "creating new stack for task %" PRIxPTR, this);
    if (stk) {
        ::check_stack_canary(stk);
    }

    // The minimum stack size, in bytes, of a Rust stack, excluding red zone
    size_t min_sz = thread->min_stack_size;

    // Try to reuse an existing stack segment
    while (stk != NULL && stk->next != NULL) {
        size_t next_sz = user_stack_size(stk->next);
        if (min_sz <= next_sz && requested_sz <= next_sz) {
            LOG(this, mem, "reusing existing stack");
            stk = stk->next;
            return;
        } else {
            LOG(this, mem, "existing stack is not big enough");
            stk_seg *new_next = stk->next->next;
            free_stack(stk->next);
            stk->next = new_next;
            if (new_next) {
                new_next->prev = stk;
            }
        }
    }

    // The size of the current stack segment, excluding red zone
    size_t current_sz = 0;
    if (stk != NULL) {
        current_sz = user_stack_size(stk);
    }
    // The calculated size of the new stack, excluding red zone
    size_t rust_stk_sz = get_next_stack_size(min_sz,
                                             current_sz, requested_sz);

    if (total_stack_sz + rust_stk_sz > thread->env->max_stack_size) {
        LOG_ERR(this, task, "task %" PRIxPTR " ran out of stack", this);
        fail();
    }

    size_t sz = rust_stk_sz + RED_ZONE_SIZE;
    stk_seg *new_stk = create_stack(&local_region, sz);
    LOGPTR(thread, "new stk", (uintptr_t)new_stk);
    new_stk->task = this;
    new_stk->next = NULL;
    new_stk->prev = stk;
    if (stk) {
        stk->next = new_stk;
    }
    LOGPTR(thread, "stk end", new_stk->end);

    stk = new_stk;
    total_stack_sz += user_stack_size(new_stk);
}
开发者ID:Arreth,项目名称:rust,代码行数:56,代码来源:rust_task.cpp

示例13: test_push_onto_full_stack_fails

static void test_push_onto_full_stack_fails(void) {
  Stack *stack = create_stack(3);
  push(stack, 8);
  push(stack, 7);
  push(stack, 6);
  BOOL pushed = push(stack, 5);

  assert (FALSE == pushed && "push should fail");
  free(stack);
}
开发者ID:heptat,项目名称:unix,代码行数:10,代码来源:test_stack.c

示例14: test_pop_from_stack_with_one_node_value_is_correct

static void test_pop_from_stack_with_one_node_value_is_correct(void) {
  Stack *stack = create_stack();
  push(stack, 5);
  Node *node = NULL;
  pop(stack, &node);

  assert (5 == node->value && "popped value should be 5");
  free(node);
  destroy_stack(stack);
}
开发者ID:heptat,项目名称:unix,代码行数:10,代码来源:test_stack.c

示例15: test_pop_from_stack_with_one_node_size_is_correct

static void test_pop_from_stack_with_one_node_size_is_correct(void) {
  Stack *stack = create_stack();
  push(stack, 5);
  Node *node = NULL;
  pop(stack, &node);

  assert (0 == size(stack) && "stack size after pop should be 0");
  free(node);
  destroy_stack(stack);
}
开发者ID:heptat,项目名称:unix,代码行数:10,代码来源:test_stack.c


注:本文中的create_stack函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。