home *** CD-ROM | disk | FTP | other *** search
- /*
- (c) Copyright Taiichi Yuasa and Masami Hagiya, 1984. All rights reserved.
- Copying of this file is authorized to users who have executed the true and
- proper "License Agreement for Kyoto Common LISP" with SIGLISP.
- */
-
- /*
- vs.h
-
- value stack
- */
-
- /*
- #define VSSIZE 2048
- */
- /* value stack size */
- #define VSGETA 128 /* value stack geta */
-
-
- object value_stack[VSSIZE + 2*VSGETA];
-
- #define vs_org value_stack
-
- object *vs_limit; /* value stack limit */
-
- object *vs_base; /* value stack base */
- object *vs_top; /* value stack top */
-
- #define vs_push(obje) (*vs_top++ = (obje))
-
- #define vs_pop (*--vs_top)
- #define vs_head vs_top[-1]
-
- #define vs_mark object *old_vs_top = vs_top
- #define vs_reset vs_top = old_vs_top
-
- #define vs_check if (vs_top >= vs_limit) \
- vs_overflow()
-
- #define vs_check_push(obje) \
- (vs_top >= vs_limit ? \
- (object)vs_overflow() : (*vs_top++ = (obje)))
-
- #define check_arg(n) \
- if (vs_top - vs_base != (n)) \
- check_arg_failed(n)
-
- #define MMcheck_arg(n) \
- if (vs_top - vs_base < (n)) \
- too_few_arguments(); \
- else if (vs_top - vs_base > (n)) \
- too_many_arguments()
-
- #define vs_reserve(x) if(vs_base+(x) >= vs_limit) \
- vs_overflow();
-