mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-24 12:20:20 +02:00
Greg's smob patch
This commit is contained in:
parent
8ac40ce887
commit
23a621512f
25 changed files with 183 additions and 408 deletions
|
@ -47,21 +47,15 @@
|
|||
|
||||
long scm_tc16_macro;
|
||||
|
||||
static const scm_smobfuns macrosmob = {scm_markcdr, scm_free0};
|
||||
|
||||
SCM_PROC(s_makacro, "procedure->syntax", 1, 0, 0, scm_makacro);
|
||||
|
||||
SCM
|
||||
scm_makacro (code)
|
||||
SCM code;
|
||||
{
|
||||
register SCM z;
|
||||
SCM_ASSERT (SCM_NFALSEP (scm_procedure_p (code)),
|
||||
code, SCM_ARG1, s_makacro);
|
||||
SCM_NEWCELL (z);
|
||||
SCM_SETCDR (z, code);
|
||||
SCM_SETCAR (z, scm_tc16_macro);
|
||||
return z;
|
||||
SCM_RETURN_NEWSMOB (scm_tc16_macro, code);
|
||||
}
|
||||
|
||||
|
||||
|
@ -71,13 +65,9 @@ SCM
|
|||
scm_makmacro (code)
|
||||
SCM code;
|
||||
{
|
||||
register SCM z;
|
||||
SCM_ASSERT (SCM_NFALSEP (scm_procedure_p (code)),
|
||||
code, SCM_ARG1, s_makmacro);
|
||||
SCM_NEWCELL (z);
|
||||
SCM_SETCDR (z, code);
|
||||
SCM_SETCAR (z, scm_tc16_macro | (1L << 16));
|
||||
return z;
|
||||
SCM_RETURN_NEWSMOB (scm_tc16_macro | (1L << 16), code);
|
||||
}
|
||||
|
||||
|
||||
|
@ -87,13 +77,9 @@ SCM
|
|||
scm_makmmacro (code)
|
||||
SCM code;
|
||||
{
|
||||
register SCM z;
|
||||
SCM_ASSERT (SCM_NFALSEP (scm_procedure_p (code)),
|
||||
code, SCM_ARG1, s_makmmacro);
|
||||
SCM_NEWCELL (z);
|
||||
SCM_SETCDR (z, code);
|
||||
SCM_SETCAR (z, scm_tc16_macro | (2L << 16));
|
||||
return z;
|
||||
SCM_RETURN_NEWSMOB (scm_tc16_macro | (2L << 16), code);
|
||||
}
|
||||
|
||||
|
||||
|
@ -179,6 +165,7 @@ scm_make_synt (name, macroizer, fcn)
|
|||
void
|
||||
scm_init_macros ()
|
||||
{
|
||||
scm_tc16_macro = scm_newsmob (¯osmob);
|
||||
scm_tc16_macro = scm_make_smob_type_mfpe ("macro", 0,
|
||||
scm_markcdr, NULL, NULL, NULL);
|
||||
#include "macros.x"
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue