Sha256: eec0fa4695f25a1a92683fca8e43eea27a98241cad9613946bfa581c855ba8f4
Contents?: true
Size: 939 Bytes
Versions: 8
Compression:
Stored size: 939 Bytes
Contents
#include "stack.h" #include <string.h> int greenmat_stack_grow(struct stack *st, size_t new_size) { void **new_st; if (st->asize >= new_size) return 0; new_st = realloc(st->item, new_size * sizeof(void *)); if (new_st == NULL) return -1; memset(new_st + st->asize, 0x0, (new_size - st->asize) * sizeof(void *)); st->item = new_st; st->asize = new_size; if (st->size > new_size) st->size = new_size; return 0; } void greenmat_stack_free(struct stack *st) { if (!st) return; free(st->item); st->item = NULL; st->size = 0; st->asize = 0; } int greenmat_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 greenmat_stack_grow(st, initial_size); } int greenmat_stack_push(struct stack *st, void *item) { if (greenmat_stack_grow(st, st->size * 2) < 0) return -1; st->item[st->size++] = item; return 0; }
Version data entries
8 entries across 8 versions & 1 rubygems