404 |
/* Stacks |
/* Stacks |
405 |
*/ |
*/ |
406 |
|
|
407 |
SCM scm_t_stackype; |
SCM scm_stack_type; |
408 |
|
|
409 |
SCM_DEFINE (scm_stack_p, "stack?", 1, 0, 0, |
SCM_DEFINE (scm_stack_p, "stack?", 1, 0, 0, |
410 |
(SCM obj), |
(SCM obj), |
467 |
size = n * SCM_FRAME_N_SLOTS; |
size = n * SCM_FRAME_N_SLOTS; |
468 |
|
|
469 |
/* Make the stack object. */ |
/* Make the stack object. */ |
470 |
stack = scm_make_struct (scm_t_stackype, SCM_MAKINUM (size), SCM_EOL); |
stack = scm_make_struct (scm_stack_type, SCM_MAKINUM (size), SCM_EOL); |
471 |
SCM_STACK (stack) -> id = id; |
SCM_STACK (stack) -> id = id; |
472 |
iframe = &SCM_STACK (stack) -> tail[0]; |
iframe = &SCM_STACK (stack) -> tail[0]; |
473 |
SCM_STACK (stack) -> frames = iframe; |
SCM_STACK (stack) -> frames = iframe; |
624 |
if (!dframe || SCM_VOIDFRAMEP (*dframe)) |
if (!dframe || SCM_VOIDFRAMEP (*dframe)) |
625 |
return SCM_BOOL_F; |
return SCM_BOOL_F; |
626 |
|
|
627 |
stack = scm_make_struct (scm_t_stackype, SCM_MAKINUM (SCM_FRAME_N_SLOTS), |
stack = scm_make_struct (scm_stack_type, SCM_MAKINUM (SCM_FRAME_N_SLOTS), |
628 |
SCM_EOL); |
SCM_EOL); |
629 |
SCM_STACK (stack) -> length = 1; |
SCM_STACK (stack) -> length = 1; |
630 |
SCM_STACK (stack) -> frames = &SCM_STACK (stack) -> tail[0]; |
SCM_STACK (stack) -> frames = &SCM_STACK (stack) -> tail[0]; |
759 |
SCM stack_layout |
SCM stack_layout |
760 |
= scm_make_struct_layout (scm_makfrom0str (SCM_STACK_LAYOUT)); |
= scm_make_struct_layout (scm_makfrom0str (SCM_STACK_LAYOUT)); |
761 |
vtable = scm_make_vtable_vtable (scm_nullstr, SCM_INUM0, SCM_EOL); |
vtable = scm_make_vtable_vtable (scm_nullstr, SCM_INUM0, SCM_EOL); |
762 |
scm_t_stackype |
scm_stack_type |
763 |
= scm_permanent_object (scm_make_struct (vtable, SCM_INUM0, |
= scm_permanent_object (scm_make_struct (vtable, SCM_INUM0, |
764 |
scm_cons (stack_layout, |
scm_cons (stack_layout, |
765 |
SCM_EOL))); |
SCM_EOL))); |
766 |
scm_set_struct_vtable_name_x (scm_t_stackype, scm_str2symbol ("stack")); |
scm_set_struct_vtable_name_x (scm_stack_type, scm_str2symbol ("stack")); |
767 |
#ifndef SCM_MAGIC_SNARFER |
#ifndef SCM_MAGIC_SNARFER |
768 |
#include "libguile/stacks.x" |
#include "libguile/stacks.x" |
769 |
#endif |
#endif |