00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __BML_STACK_H__
00020 #define __BML_STACK_H__
00021
00022 #include "vm_types.h"
00023
00030 generic_stack_t new_gstack(word_t token_size);
00032 void gstack_init(generic_stack_t, word_t token_size);
00034 void gstack_deinit(generic_stack_t, void (*callback)(void*));
00035
00037 void gpush(generic_stack_t s, void* w);
00038
00040 void* _gpop(generic_stack_t s);
00042 #define gpop(__t,__s) ((__t)_gpop(__s))
00043
00044 void* _gpeek(generic_stack_t s,int);
00046 #define gpeek(__t,__s,__i) ((__t)_gpeek(__s,__i))
00047
00048 void free_gstack(generic_stack_t s);
00049
00051 word_t gstack_size(generic_stack_t s);
00052
00054 void gstack_grow(generic_stack_t s, word_t count);
00056 void gstack_shrink(generic_stack_t s, word_t count);
00057
00059 #define gstack_is_empty(_s) (_s->sp==((word_t)-1))
00060
00061 #define gstack_is_not_empty(_s) (_s->sp!=((word_t)-1))
00062
00065 #endif
00066