Пример #1
0
void
stack_pushstring(struct stack *stack, char *string)
{
	stack_grow(stack);
	stack->stack[stack->sp].type = BCODE_STRING;
	stack->stack[stack->sp].u.string = string;
}
Пример #2
0
void
stack_pushnumber(struct stack *stack, struct number *b)
{
	stack_grow(stack);
	stack->stack[stack->sp].type = BCODE_NUMBER;
	stack->stack[stack->sp].u.num = b;
}
Пример #3
0
void stack_push(struct stack *st, void *data)
{
	if (st->nr >= st->sz) {
		stack_grow(st);
	}

	memcpy((char *) st->st + st->elemSz * st->nr++, data, st->elemSz);
}
Пример #4
0
int
stack_push(struct stack *st, void *item)
{
    if (stack_grow(st, st->size * 2) < 0)
        return -1;

    st->item[st->size++] = item;
    return 0;
}
Пример #5
0
/* Insert a new element onto stack */
void 
stack_push(Stack stk, ElementAddr elemaddr)
{
	ElementAddr target;
	if ( stk->loglength == stk->alloclength )
		stack_grow(stk);
	target = (char *)stk->array + stk->loglength * stk->elemsize;
	memcpy(target, elemaddr, stk->elemsize);
	stk->loglength++;	
}
Пример #6
0
/* Insert a new data onto stack */
void 
push(Stack myStack, MyData myData)
{
	MyData target;
	if ( myStack->loglength == myStack->alloclength )
		stack_grow(myStack);
	target = (char *)myStack->array + myStack->loglength * myStack->eleSize;
	memcpy(target, myData, myStack->eleSize);
	myStack->loglength++;	
}
Пример #7
0
/* Push an item on the top of the stack. */
int stack_push(struct stack *stack, void *data) {
    assert(stack != NULL);

    if (stack->len <= stack->cap &&
        stack_grow(stack, stack->len + 1) != STACK_OK)
        return STACK_ENOMEM;

    stack->data[stack->len++] = data;
    return STACK_OK;
}
Пример #8
0
int
stack_init(struct stack *st, size_t initial_size)
{
    st->item = NULL;
    st->size = 0;
    st->asize = 0;

    if (!initial_size)
        initial_size = 8;

    return stack_grow(st, initial_size);
}
Пример #9
0
/* Create new stack with an initialized capacity. */
struct stack *stack_new(size_t cap) {
    struct stack *stack = malloc(sizeof(struct stack));

    if (stack != NULL) {
        stack->data = NULL;
        stack->len = 0;
        stack->cap = 0;

        if (cap > 0 && stack_grow(stack, cap) != STACK_OK) return NULL;
    }

    return stack;
}
Пример #10
0
void
stack_push(struct stack *stack, struct value *v)
{
	switch (v->type) {
	case BCODE_NONE:
		stack_grow(stack);
		stack->stack[stack->sp].type = BCODE_NONE;
		break;
	case BCODE_NUMBER:
		stack_pushnumber(stack, v->u.num);
		break;
	case BCODE_STRING:
		stack_pushstring(stack, v->u.string);
		break;
	}
	stack->stack[stack->sp].array = v->array == NULL ?
	    NULL : array_dup(v->array);
}
Пример #11
0
unsigned stack_grow_to(stack* s, unsigned n)
{
  stack_grow(s);
  s->c = MAX(s->c, n);
  return s->c;
}