summaryrefslogtreecommitdiff
path: root/libguile/macros.c
diff options
context:
space:
mode:
authorMarius Vollmer <mvo@zagadka.de>2004-05-06 16:43:14 +0000
committerMarius Vollmer <mvo@zagadka.de>2004-05-06 16:43:14 +0000
commitf5710d53b1a67d7b965701b4b34004b9db1a6813 (patch)
treee6e4e2a562a827adba4f3c374c1152016dd6b68c /libguile/macros.c
parent41a2f6fc0c62afeb09bd7fbae4e9eca794c26bbe (diff)
downloadguile-f5710d53b1a67d7b965701b4b34004b9db1a6813.tar.gz
Use SCM_SMOB_* instead of SCM_CELL_* as appropriate. Use
SCM_SMOB_FLAGS and SCM_SET_SMOB_FLAGS instead of accessing the zeroth word directly. Use SCM_SMOB_PREDICATE as appropriate.
Diffstat (limited to 'libguile/macros.c')
-rw-r--r--libguile/macros.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/libguile/macros.c b/libguile/macros.c
index 32282f19c..bc14784e7 100644
--- a/libguile/macros.c
+++ b/libguile/macros.c
@@ -77,6 +77,14 @@ macro_print (SCM macro, SCM port, scm_print_state *pstate)
return 1;
}
+static SCM
+makmac (SCM code, scm_t_bits flags)
+{
+ SCM z;
+ SCM_NEWSMOB (z, scm_tc16_macro, SCM_UNPACK (code));
+ SCM_SET_SMOB_FLAGS (z, flags);
+ return z;
+}
/* Return a mmacro that is known to be one of guile's built in macros. */
SCM
@@ -84,7 +92,7 @@ scm_i_makbimacro (SCM code)
#define FUNC_NAME "scm_i_makbimacro"
{
SCM_VALIDATE_PROC (1, code);
- SCM_RETURN_NEWSMOB (scm_tc16_macro | (3L << 16), SCM_UNPACK (code));
+ return makmac (code, 3);
}
#undef FUNC_NAME
@@ -102,7 +110,7 @@ SCM_DEFINE (scm_makmmacro, "procedure->memoizing-macro", 1, 0, 0,
#define FUNC_NAME s_scm_makmmacro
{
SCM_VALIDATE_PROC (1, code);
- SCM_RETURN_NEWSMOB (scm_tc16_macro | (2L << 16), SCM_UNPACK (code));
+ return makmac (code, 2);
}
#undef FUNC_NAME
@@ -116,7 +124,7 @@ SCM_DEFINE (scm_makacro, "procedure->syntax", 1, 0, 0,
#define FUNC_NAME s_scm_makacro
{
SCM_VALIDATE_PROC (1, code);
- SCM_RETURN_NEWSMOB (scm_tc16_macro, SCM_UNPACK (code));
+ return makmac (code, 0);
}
#undef FUNC_NAME
@@ -144,7 +152,7 @@ SCM_DEFINE (scm_makmacro, "procedure->macro", 1, 0, 0,
" or r5rs macros instead.");
SCM_VALIDATE_PROC (1, code);
- SCM_RETURN_NEWSMOB (scm_tc16_macro | (1L << 16), SCM_UNPACK (code));
+ return makmac (code, 1);
}
#undef FUNC_NAME
@@ -157,7 +165,7 @@ SCM_DEFINE (scm_macro_p, "macro?", 1, 0, 0,
"syntax transformer.")
#define FUNC_NAME s_scm_macro_p
{
- return SCM_BOOL (SCM_TYP16_PREDICATE (scm_tc16_macro, obj));
+ return SCM_BOOL (SCM_SMOB_PREDICATE (scm_tc16_macro, obj));
}
#undef FUNC_NAME
@@ -178,7 +186,7 @@ SCM_DEFINE (scm_macro_type, "macro-type", 1, 0, 0,
"returned.")
#define FUNC_NAME s_scm_macro_type
{
- if (!SCM_TYP16_PREDICATE (scm_tc16_macro, m))
+ if (!SCM_SMOB_PREDICATE (scm_tc16_macro, m))
return SCM_BOOL_F;
switch (SCM_MACRO_TYPE (m))
{