((dynstack)->base + SCM_DYNSTACK_HEADER_LEN) #define SCM_DYNSTACK_CAPACITY(dynstack) \ ((dynstack)->limit - (dynstack)->base) #define SCM_DYNSTACK_SPACE(dynstack) \ ((dynstack)->limit - (dynstack)->top) #define SCM_DYNSTACK_HEIGHT(dynstack) \ ((dynstack)->top - (dynstack)->base) #define SCM_DYNSTACK_HAS_SPACE(dynstack, n) \ (SCM_DYNSTACK_SPACE (dynstack) >= n + SCM_DYNSTACK_HEADER_LEN) typedef enum { SCM_F_DYNSTACK_FRAME_REWINDABLE = (1 << SCM_DYNSTACK_TAG_FLAGS_SHIFT) } scm_t_dynstack_frame_flags; typedef enum { SCM_F_DYNSTACK_WINDER_EXPLICIT = (1 << SCM_DYNSTACK_TAG_FLAGS_SHIFT) } scm_t_dynstack_winder_flags; typedef enum { SCM_F_DYNSTACK_PROMPT_ESCAPE_ONLY = (1 << SCM_DYNSTACK_TAG_FLAGS_SHIFT) } scm_t_dynstack_prompt_flags; typedef void (*scm_t_guard) (void *);