1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-14 23:50:19 +02:00

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.
This commit is contained in:
Marius Vollmer 2004-05-06 16:43:14 +00:00
parent 41a2f6fc0c
commit f5710d53b1
18 changed files with 99 additions and 88 deletions

View file

@ -111,9 +111,9 @@ sysdep_dynl_init ()
scm_t_bits scm_tc16_dynamic_obj; scm_t_bits scm_tc16_dynamic_obj;
#define DYNL_FILENAME(x) (SCM_CELL_OBJECT_1 (x)) #define DYNL_FILENAME SCM_SMOB_OBJECT
#define DYNL_HANDLE(x) ((void *) SCM_CELL_WORD_2 (x)) #define DYNL_HANDLE(x) ((void *) SCM_SMOB_DATA_2 (x))
#define SET_DYNL_HANDLE(x, v) (SCM_SET_CELL_WORD_2 ((x), (v))) #define SET_DYNL_HANDLE(x, v) (SCM_SET_SMOB_DATA_2 ((x), (v)))
static SCM static SCM

View file

@ -132,27 +132,28 @@ scm_internal_dynamic_wind (scm_t_guard before,
static scm_t_bits tc16_frame; static scm_t_bits tc16_frame;
#define FRAME_P(f) SCM_SMOB_PREDICATE (tc16_frame, (f)) #define FRAME_P(f) SCM_SMOB_PREDICATE (tc16_frame, (f))
#define FRAME_F_REWINDABLE (1 << 16) #define FRAME_F_REWINDABLE (1 << 0)
#define FRAME_REWINDABLE_P(f) (SCM_CELL_WORD_0(f) & FRAME_F_REWINDABLE) #define FRAME_REWINDABLE_P(f) (SCM_SMOB_FLAGS(f) & FRAME_F_REWINDABLE)
static scm_t_bits tc16_winder; static scm_t_bits tc16_winder;
#define WINDER_P(w) SCM_SMOB_PREDICATE (tc16_winder, (w)) #define WINDER_P(w) SCM_SMOB_PREDICATE (tc16_winder, (w))
#define WINDER_PROC(w) ((void (*)(void *))SCM_CELL_WORD_1 (w)) #define WINDER_PROC(w) ((void (*)(void *))SCM_SMOB_DATA (w))
#define WINDER_DATA(w) ((void *)SCM_CELL_WORD_2 (w)) #define WINDER_DATA(w) ((void *)SCM_SMOB_DATA_2 (w))
#define WINDER_F_EXPLICIT (1 << 16) #define WINDER_F_EXPLICIT (1 << 0)
#define WINDER_F_REWIND (1 << 17) #define WINDER_F_REWIND (1 << 1)
#define WINDER_F_MARK (1 << 18) #define WINDER_F_MARK (1 << 2)
#define WINDER_EXPLICIT_P(w) (SCM_CELL_WORD_0(w) & WINDER_F_EXPLICIT) #define WINDER_EXPLICIT_P(w) (SCM_SMOB_FLAGS(w) & WINDER_F_EXPLICIT)
#define WINDER_REWIND_P(w) (SCM_CELL_WORD_0(w) & WINDER_F_REWIND) #define WINDER_REWIND_P(w) (SCM_SMOB_FLAGS(w) & WINDER_F_REWIND)
#define WINDER_MARK_P(w) (SCM_CELL_WORD_0(w) & WINDER_F_MARK) #define WINDER_MARK_P(w) (SCM_SMOB_FLAGS(w) & WINDER_F_MARK)
void void
scm_frame_begin (scm_t_frame_flags flags) scm_frame_begin (scm_t_frame_flags flags)
{ {
SCM f; SCM f;
scm_t_bits fl = ((flags&SCM_F_FRAME_REWINDABLE)? FRAME_F_REWINDABLE : 0); SCM_NEWSMOB (f, tc16_frame, 0);
SCM_NEWSMOB (f, tc16_frame | fl, 0); if (flags & SCM_F_FRAME_REWINDABLE)
SCM_SET_SMOB_FLAGS (f, FRAME_F_REWINDABLE);
scm_dynwinds = scm_cons (f, scm_dynwinds); scm_dynwinds = scm_cons (f, scm_dynwinds);
} }
@ -192,9 +193,9 @@ scm_frame_unwind_handler (void (*proc) (void *), void *data,
scm_t_wind_flags flags) scm_t_wind_flags flags)
{ {
SCM w; SCM w;
scm_t_bits fl = ((flags&SCM_F_WIND_EXPLICITLY)? WINDER_F_EXPLICIT : 0); SCM_NEWSMOB2 (w, tc16_winder, (scm_t_bits) proc, (scm_t_bits) data);
SCM_NEWSMOB2 (w, tc16_winder | fl, if (flags & SCM_F_WIND_EXPLICITLY)
(scm_t_bits) proc, (scm_t_bits) data); SCM_SET_SMOB_FLAGS (w, WINDER_F_EXPLICIT);
scm_dynwinds = scm_cons (w, scm_dynwinds); scm_dynwinds = scm_cons (w, scm_dynwinds);
} }
@ -203,8 +204,8 @@ scm_frame_rewind_handler (void (*proc) (void *), void *data,
scm_t_wind_flags flags) scm_t_wind_flags flags)
{ {
SCM w; SCM w;
SCM_NEWSMOB2 (w, tc16_winder | WINDER_F_REWIND, SCM_NEWSMOB2 (w, tc16_winder, (scm_t_bits) proc, (scm_t_bits) data);
(scm_t_bits) proc, (scm_t_bits) data); SCM_SET_SMOB_FLAGS (w, WINDER_F_REWIND);
scm_dynwinds = scm_cons (w, scm_dynwinds); scm_dynwinds = scm_cons (w, scm_dynwinds);
if (flags & SCM_F_WIND_EXPLICITLY) if (flags & SCM_F_WIND_EXPLICITLY)
proc (data); proc (data);
@ -216,8 +217,8 @@ scm_frame_unwind_handler_with_scm (void (*proc) (SCM), SCM data,
{ {
SCM w; SCM w;
scm_t_bits fl = ((flags&SCM_F_WIND_EXPLICITLY)? WINDER_F_EXPLICIT : 0); scm_t_bits fl = ((flags&SCM_F_WIND_EXPLICITLY)? WINDER_F_EXPLICIT : 0);
SCM_NEWSMOB2 (w, tc16_winder | fl | WINDER_F_MARK, SCM_NEWSMOB2 (w, tc16_winder, (scm_t_bits) proc, SCM_UNPACK (data));
(scm_t_bits) proc, SCM_UNPACK (data)); SCM_SET_SMOB_FLAGS (w, fl | WINDER_F_MARK);
scm_dynwinds = scm_cons (w, scm_dynwinds); scm_dynwinds = scm_cons (w, scm_dynwinds);
} }
@ -226,8 +227,8 @@ scm_frame_rewind_handler_with_scm (void (*proc) (SCM), SCM data,
scm_t_wind_flags flags) scm_t_wind_flags flags)
{ {
SCM w; SCM w;
SCM_NEWSMOB2 (w, tc16_winder | WINDER_F_REWIND | WINDER_F_MARK, SCM_NEWSMOB2 (w, tc16_winder, (scm_t_bits) proc, SCM_UNPACK (data));
(scm_t_bits) proc, SCM_UNPACK (data)); SCM_SET_SMOB_FLAGS (w, WINDER_F_REWIND | WINDER_F_MARK);
scm_dynwinds = scm_cons (w, scm_dynwinds); scm_dynwinds = scm_cons (w, scm_dynwinds);
if (flags & SCM_F_WIND_EXPLICITLY) if (flags & SCM_F_WIND_EXPLICITLY)
proc (data); proc (data);

View file

@ -66,15 +66,17 @@ SCM_API SCM scm_eval_options_interface (SCM setting);
/* {Promises} /* {Promises}
*/ */
#define SCM_F_PROMISE_COMPUTED (1L << 16) #define SCM_F_PROMISE_COMPUTED (1L << 0)
#define SCM_PROMISE_COMPUTED_P(promise) \ #define SCM_PROMISE_COMPUTED_P(promise) \
(SCM_F_PROMISE_COMPUTED & SCM_CELL_WORD_0 (promise)) (SCM_F_PROMISE_COMPUTED & SCM_SMOB_FLAGS (promise))
#define SCM_SET_PROMISE_COMPUTED(promise) \ #define SCM_SET_PROMISE_COMPUTED(promise) \
SCM_SET_CELL_WORD_0 (promise, scm_tc16_promise | SCM_F_PROMISE_COMPUTED) SCM_SET_SMOB_FLAGS ((promise), SCM_F_PROMISE_COMPUTED)
#define SCM_PROMISE_MUTEX(promise) \ #define SCM_PROMISE_MUTEX(promise) \
((scm_t_rec_mutex *) SCM_CELL_WORD_2 (promise)) ((scm_t_rec_mutex *) SCM_SMOB_DATA_2 (promise))
#define SCM_PROMISE_DATA SCM_CELL_OBJECT_1 #define SCM_PROMISE_DATA SCM_SMOB_OBJECT
#define SCM_SET_PROMISE_DATA SCM_SET_CELL_OBJECT_1 #define SCM_SET_PROMISE_DATA SCM_SET_SMOB_OBJECT
SCM_API scm_t_bits scm_tc16_promise; SCM_API scm_t_bits scm_tc16_promise;

View file

@ -50,7 +50,7 @@
SCM_API scm_t_bits scm_tc16_fluid; SCM_API scm_t_bits scm_tc16_fluid;
#define SCM_FLUIDP(x) (!SCM_IMP (x) && (SCM_CELL_TYPE (x) == scm_tc16_fluid)) #define SCM_FLUIDP(x) (SCM_SMOB_PREDICATE (scm_tc16_fluid, (x)))
#define SCM_FLUID_NUM(x) (SCM_CELL_WORD_1 (x)) #define SCM_FLUID_NUM(x) (SCM_CELL_WORD_1 (x))
/* The fastest way to acces/modify the value of a fluid. These macros /* The fastest way to acces/modify the value of a fluid. These macros

View file

@ -43,7 +43,7 @@ typedef struct scm_t_future {
#define SCM_VALIDATE_FUTURE(pos, obj) \ #define SCM_VALIDATE_FUTURE(pos, obj) \
SCM_ASSERT_TYPE (SCM_TYP16_PREDICATE (scm_tc16_future, obj), \ SCM_ASSERT_TYPE (SCM_TYP16_PREDICATE (scm_tc16_future, obj), \
obj, pos, FUNC_NAME, "future"); obj, pos, FUNC_NAME, "future");
#define SCM_FUTURE(future) ((scm_t_future *) SCM_CELL_WORD_2 (future)) #define SCM_FUTURE(future) ((scm_t_future *) SCM_SMOB_DATA_2 (future))
#define SCM_FUTURE_MUTEX(future) (&SCM_FUTURE (future)->mutex) #define SCM_FUTURE_MUTEX(future) (&SCM_FUTURE (future)->mutex)
#define SCM_FUTURE_COND(future) (&SCM_FUTURE (future)->cond) #define SCM_FUTURE_COND(future) (&SCM_FUTURE (future)->cond)
#define SCM_FUTURE_STATUS(future) (SCM_FUTURE (future)->status) #define SCM_FUTURE_STATUS(future) (SCM_FUTURE (future)->status)
@ -53,9 +53,9 @@ typedef struct scm_t_future {
#define SCM_FUTURE_DATA(future) (SCM_FUTURE (future)->data) #define SCM_FUTURE_DATA(future) (SCM_FUTURE (future)->data)
#define SCM_SET_FUTURE_DATA(future, x) \ #define SCM_SET_FUTURE_DATA(future, x) \
do { SCM_FUTURE (future)->data = (x); } while (0) do { SCM_FUTURE (future)->data = (x); } while (0)
#define SCM_FUTURE_NEXT SCM_CELL_OBJECT_1 #define SCM_FUTURE_NEXT SCM_SMOB_OBJECT
#define SCM_FUTURE_NEXTLOC(x) ((SCM *) SCM_CELL_WORD_LOC ((x), 1)) #define SCM_FUTURE_NEXTLOC SCM_SMOB_OBJECT_LOC
#define SCM_SET_FUTURE_NEXT SCM_SET_CELL_OBJECT_1 #define SCM_SET_FUTURE_NEXT SCM_SET_SMOB_OBJECT
SCM_API scm_t_bits scm_tc16_future; SCM_API scm_t_bits scm_tc16_future;

View file

@ -33,15 +33,15 @@
extern scm_t_bits scm_tc16_hashtable; extern scm_t_bits scm_tc16_hashtable;
#define SCM_HASHTABLE_P(x) SCM_TYP16_PREDICATE (scm_tc16_hashtable, x) #define SCM_HASHTABLE_P(x) SCM_SMOB_PREDICATE (scm_tc16_hashtable, x)
#define SCM_VALIDATE_HASHTABLE(pos, arg) \ #define SCM_VALIDATE_HASHTABLE(pos, arg) \
SCM_MAKE_VALIDATE_MSG (pos, arg, HASHTABLE_P, "hash-table") SCM_MAKE_VALIDATE_MSG (pos, arg, HASHTABLE_P, "hash-table")
#define SCM_HASHTABLE_VECTOR(h) SCM_CELL_OBJECT_1 (h) #define SCM_HASHTABLE_VECTOR(h) SCM_SMOB_OBJECT (h)
#define SCM_SET_HASHTABLE_VECTOR(x, v) SCM_SET_CELL_OBJECT_1 (x, v) #define SCM_SET_HASHTABLE_VECTOR(x, v) SCM_SET_SMOB_OBJECT ((x), (v))
#define SCM_HASHTABLE(x) ((scm_t_hashtable *) SCM_CELL_WORD_2 (x)) #define SCM_HASHTABLE(x) ((scm_t_hashtable *) SCM_SMOB_DATA_2 (x))
#define SCM_HASHTABLE_NEXT(x) SCM_CELL_OBJECT_3 (x) #define SCM_HASHTABLE_NEXT(x) SCM_SMOB_OBJECT_3 (x)
#define SCM_HASHTABLE_NEXTLOC(x) ((SCM *) SCM_CELL_WORD_LOC (x, 3)) #define SCM_HASHTABLE_NEXTLOC(x) SCM_SMOB_OBJECT_3_LOC (x)
#define SCM_SET_HASHTABLE_NEXT(x, n) SCM_SET_CELL_OBJECT_3 (x, n) #define SCM_SET_HASHTABLE_NEXT(x, n) SCM_SET_SMOB_OBJECT_3 ((x), (n))
#define SCM_HASHTABLE_FLAGS(x) (SCM_HASHTABLE (x)->flags) #define SCM_HASHTABLE_FLAGS(x) (SCM_HASHTABLE (x)->flags)
#define SCM_HASHTABLE_WEAK_KEY_P(x) \ #define SCM_HASHTABLE_WEAK_KEY_P(x) \
(SCM_HASHTABLE_FLAGS (x) & SCM_HASHTABLEF_WEAK_CAR) (SCM_HASHTABLE_FLAGS (x) & SCM_HASHTABLEF_WEAK_CAR)

View file

@ -73,10 +73,10 @@ SCM_API void *scm_c_hook_run (scm_t_c_hook *hook, void *data);
SCM_API scm_t_bits scm_tc16_hook; SCM_API scm_t_bits scm_tc16_hook;
#define SCM_HOOKP(x) SCM_TYP16_PREDICATE (scm_tc16_hook, x) #define SCM_HOOKP(x) SCM_SMOB_PREDICATE (scm_tc16_hook, x)
#define SCM_HOOK_ARITY(hook) (SCM_CELL_WORD_0 (hook) >> 16) #define SCM_HOOK_ARITY(hook) SCM_SMOB_FLAGS (hook)
#define SCM_HOOK_PROCEDURES(hook) SCM_CELL_OBJECT_1 (hook) #define SCM_HOOK_PROCEDURES(hook) SCM_SMOB_OBJECT (hook)
#define SCM_SET_HOOK_PROCEDURES(hook, procs) SCM_SET_CELL_OBJECT_1 ((hook), (procs)) #define SCM_SET_HOOK_PROCEDURES(hook, procs) SCM_SET_SMOB_OBJECT ((hook), (procs))
SCM_API SCM scm_make_hook (SCM n_args); SCM_API SCM scm_make_hook (SCM n_args);
SCM_API SCM scm_hook_p (SCM x); SCM_API SCM scm_hook_p (SCM x);

View file

@ -28,8 +28,8 @@
SCM_API scm_t_bits scm_tc16_keyword; SCM_API scm_t_bits scm_tc16_keyword;
#define SCM_KEYWORDP(X) (!SCM_IMP (X) && (SCM_CELL_TYPE (X) == scm_tc16_keyword)) #define SCM_KEYWORDP(X) (SCM_SMOB_PREDICATE (scm_tc16_keyword, (X)))
#define SCM_KEYWORDSYM(X) (SCM_CELL_OBJECT_1 (X)) #define SCM_KEYWORDSYM(X) (SCM_SMOB_OBJECT (X))

View file

@ -77,6 +77,14 @@ macro_print (SCM macro, SCM port, scm_print_state *pstate)
return 1; 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. */ /* Return a mmacro that is known to be one of guile's built in macros. */
SCM SCM
@ -84,7 +92,7 @@ scm_i_makbimacro (SCM code)
#define FUNC_NAME "scm_i_makbimacro" #define FUNC_NAME "scm_i_makbimacro"
{ {
SCM_VALIDATE_PROC (1, code); SCM_VALIDATE_PROC (1, code);
SCM_RETURN_NEWSMOB (scm_tc16_macro | (3L << 16), SCM_UNPACK (code)); return makmac (code, 3);
} }
#undef FUNC_NAME #undef FUNC_NAME
@ -102,7 +110,7 @@ SCM_DEFINE (scm_makmmacro, "procedure->memoizing-macro", 1, 0, 0,
#define FUNC_NAME s_scm_makmmacro #define FUNC_NAME s_scm_makmmacro
{ {
SCM_VALIDATE_PROC (1, code); SCM_VALIDATE_PROC (1, code);
SCM_RETURN_NEWSMOB (scm_tc16_macro | (2L << 16), SCM_UNPACK (code)); return makmac (code, 2);
} }
#undef FUNC_NAME #undef FUNC_NAME
@ -116,7 +124,7 @@ SCM_DEFINE (scm_makacro, "procedure->syntax", 1, 0, 0,
#define FUNC_NAME s_scm_makacro #define FUNC_NAME s_scm_makacro
{ {
SCM_VALIDATE_PROC (1, code); SCM_VALIDATE_PROC (1, code);
SCM_RETURN_NEWSMOB (scm_tc16_macro, SCM_UNPACK (code)); return makmac (code, 0);
} }
#undef FUNC_NAME #undef FUNC_NAME
@ -144,7 +152,7 @@ SCM_DEFINE (scm_makmacro, "procedure->macro", 1, 0, 0,
" or r5rs macros instead."); " or r5rs macros instead.");
SCM_VALIDATE_PROC (1, code); SCM_VALIDATE_PROC (1, code);
SCM_RETURN_NEWSMOB (scm_tc16_macro | (1L << 16), SCM_UNPACK (code)); return makmac (code, 1);
} }
#undef FUNC_NAME #undef FUNC_NAME
@ -157,7 +165,7 @@ SCM_DEFINE (scm_macro_p, "macro?", 1, 0, 0,
"syntax transformer.") "syntax transformer.")
#define FUNC_NAME s_scm_macro_p #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 #undef FUNC_NAME
@ -178,7 +186,7 @@ SCM_DEFINE (scm_macro_type, "macro-type", 1, 0, 0,
"returned.") "returned.")
#define FUNC_NAME s_scm_macro_type #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; return SCM_BOOL_F;
switch (SCM_MACRO_TYPE (m)) switch (SCM_MACRO_TYPE (m))
{ {

View file

@ -29,10 +29,10 @@
#define SCM_ASSYNT(_cond, _msg, _subr) \ #define SCM_ASSYNT(_cond, _msg, _subr) \
if (!(_cond)) scm_misc_error (_subr, _msg, SCM_EOL); if (!(_cond)) scm_misc_error (_subr, _msg, SCM_EOL);
#define SCM_MACROP(x) SCM_TYP16_PREDICATE (scm_tc16_macro, (x)) #define SCM_MACROP(x) SCM_SMOB_PREDICATE (scm_tc16_macro, (x))
#define SCM_MACRO_TYPE(m) (SCM_CELL_WORD_0 (m) >> 16) #define SCM_MACRO_TYPE(m) SCM_SMOB_FLAGS (m)
#define SCM_BUILTIN_MACRO_P(x) (SCM_MACROP (x) && SCM_MACRO_TYPE (x) == 3) #define SCM_BUILTIN_MACRO_P(x) (SCM_MACROP (x) && SCM_MACRO_TYPE (x) == 3)
#define SCM_MACRO_CODE(m) SCM_CELL_OBJECT_1 (m) #define SCM_MACRO_CODE(m) SCM_SMOB_OBJECT (m)
SCM_API scm_t_bits scm_tc16_macro; SCM_API scm_t_bits scm_tc16_macro;

View file

@ -54,7 +54,7 @@ static int
malloc_print (SCM exp, SCM port, scm_print_state *pstate SCM_UNUSED) malloc_print (SCM exp, SCM port, scm_print_state *pstate SCM_UNUSED)
{ {
scm_puts("#<malloc ", port); scm_puts("#<malloc ", port);
scm_intprint (SCM_CELL_WORD_1 (exp), 16, port); scm_intprint (SCM_SMOB_DATA (exp), 16, port);
scm_putc('>', port); scm_putc('>', port);
return 1; return 1;
} }

View file

@ -27,9 +27,9 @@
SCM_API scm_t_bits scm_tc16_malloc; SCM_API scm_t_bits scm_tc16_malloc;
#define SCM_MALLOCP(X) (SCM_TYP16 (X) == scm_tc16_malloc) #define SCM_MALLOCP(X) (SCM_SMOB_PREDICATE (scm_tc16_malloc, (X)))
#define SCM_MALLOCDATA(obj) ((char *) SCM_CELL_WORD_1 (obj)) #define SCM_MALLOCDATA(obj) ((char *) SCM_SMOB_DATA (obj))
#define SCM_SETMALLOCDATA(obj, val) (SCM_SET_CELL_WORD_1 (obj, val)) #define SCM_SETMALLOCDATA(obj, val) (SCM_SET_SMOB_DATA ((obj), (val)))

View file

@ -84,8 +84,8 @@ SCM_API SCM scm_c_random_bignum (scm_t_rstate *, SCM m);
* Scheme level interface * Scheme level interface
*/ */
SCM_API scm_t_bits scm_tc16_rstate; SCM_API scm_t_bits scm_tc16_rstate;
#define SCM_RSTATEP(obj) SCM_TYP16_PREDICATE (scm_tc16_rstate, obj) #define SCM_RSTATEP(obj) SCM_SMOB_PREDICATE (scm_tc16_rstate, obj)
#define SCM_RSTATE(obj) ((scm_t_rstate *) SCM_CELL_WORD_1 (obj)) #define SCM_RSTATE(obj) ((scm_t_rstate *) SCM_SMOB_DATA (obj))
SCM_API unsigned char scm_masktab[256]; SCM_API unsigned char scm_masktab[256];

View file

@ -25,8 +25,8 @@
#include "libguile/__scm.h" #include "libguile/__scm.h"
SCM_API scm_t_bits scm_tc16_regex; SCM_API scm_t_bits scm_tc16_regex;
#define SCM_RGX(X) ((regex_t *) SCM_CELL_WORD_1 (X)) #define SCM_RGX(X) ((regex_t *) SCM_SMOB_DATA (X))
#define SCM_RGXP(X) (!SCM_IMP (X) && (SCM_CELL_TYPE (X) == scm_tc16_regex)) #define SCM_RGXP(X) (SCM_SMOB_PREDICATE (scm_tc16_regex, (X)))
SCM_API SCM scm_make_regexp (SCM pat, SCM flags); SCM_API SCM scm_make_regexp (SCM pat, SCM flags);
SCM_API SCM scm_regexp_p (SCM x); SCM_API SCM scm_regexp_p (SCM x);

View file

@ -49,8 +49,8 @@ SCM_API SCM scm_sys_protects[];
SCM_API scm_t_bits scm_tc16_root; SCM_API scm_t_bits scm_tc16_root;
#define SCM_ROOTP(obj) SCM_TYP16_PREDICATE (scm_tc16_root, obj) #define SCM_ROOTP(obj) SCM_SMOB_PREDICATE (scm_tc16_root, (obj))
#define SCM_ROOT_STATE(root) ((scm_root_state *) SCM_CELL_WORD_1 (root)) #define SCM_ROOT_STATE(root) ((scm_root_state *) SCM_SMOB_DATA (root))
typedef struct scm_root_state typedef struct scm_root_state
{ {

View file

@ -71,8 +71,8 @@ srcprops_mark (SCM obj)
static size_t static size_t
srcprops_free (SCM obj) srcprops_free (SCM obj)
{ {
*((scm_t_srcprops **) SCM_CELL_WORD_1 (obj)) = srcprops_freelist; *((scm_t_srcprops **) SCM_SMOB_DATA (obj)) = srcprops_freelist;
srcprops_freelist = (scm_t_srcprops *) SCM_CELL_WORD_1 (obj); srcprops_freelist = (scm_t_srcprops *) SCM_SMOB_DATA (obj);
return 0; /* srcprops_chunks are not freed until leaving guile */ return 0; /* srcprops_chunks are not freed until leaving guile */
} }

View file

@ -67,22 +67,22 @@ typedef struct scm_t_srcprops_chunk
scm_t_srcprops srcprops[1]; scm_t_srcprops srcprops[1];
} scm_t_srcprops_chunk; } scm_t_srcprops_chunk;
#define SCM_SOURCE_PROPERTY_FLAG_BREAK (1L << 16) #define SCM_SOURCE_PROPERTY_FLAG_BREAK 1
#define SRCPROPSP(p) (SCM_TYP16_PREDICATE (scm_tc16_srcprops, p)) #define SRCPROPSP(p) (SCM_SMOB_PREDICATE (scm_tc16_srcprops, (p)))
#define SRCPROPBRK(p) (SCM_CELL_WORD_0 (p) & SCM_SOURCE_PROPERTY_FLAG_BREAK) #define SRCPROPBRK(p) (SCM_SMOB_FLAGS (p) & SCM_SOURCE_PROPERTY_FLAG_BREAK)
#define SRCPROPPOS(p) ((scm_t_srcprops *) SCM_CELL_WORD_1 (p))->pos #define SRCPROPPOS(p) ((scm_t_srcprops *) SCM_SMOB_DATA (p))->pos
#define SRCPROPLINE(p) (SRCPROPPOS(p) >> 12) #define SRCPROPLINE(p) (SRCPROPPOS(p) >> 12)
#define SRCPROPCOL(p) (SRCPROPPOS(p) & 0x0fffL) #define SRCPROPCOL(p) (SRCPROPPOS(p) & 0x0fffL)
#define SRCPROPFNAME(p) ((scm_t_srcprops *) SCM_CELL_WORD_1 (p))->fname #define SRCPROPFNAME(p) ((scm_t_srcprops *) SCM_SMOB_DATA (p))->fname
#define SRCPROPCOPY(p) ((scm_t_srcprops *) SCM_CELL_WORD_1 (p))->copy #define SRCPROPCOPY(p) ((scm_t_srcprops *) SCM_SMOB_DATA (p))->copy
#define SRCPROPPLIST(p) ((scm_t_srcprops *) SCM_CELL_WORD_1 (p))->plist #define SRCPROPPLIST(p) ((scm_t_srcprops *) SCM_SMOB_DATA (p))->plist
#define SETSRCPROPBRK(p) \ #define SETSRCPROPBRK(p) \
(SCM_SET_CELL_WORD_0 ((p), SCM_CELL_WORD_0 (p) \ (SCM_SET_SMOB_FLAGS ((p), \
| SCM_SOURCE_PROPERTY_FLAG_BREAK)) SCM_SMOB_FLAGS (p) | SCM_SOURCE_PROPERTY_FLAG_BREAK))
#define CLEARSRCPROPBRK(p) \ #define CLEARSRCPROPBRK(p) \
(SCM_SET_CELL_WORD_0 ((p), SCM_CELL_WORD_0 (p) \ (SCM_SET_SMOB_FLAGS ((p), \
& ~SCM_SOURCE_PROPERTY_FLAG_BREAK)) SCM_SMOB_FLAGS (p) & ~SCM_SOURCE_PROPERTY_FLAG_BREAK))
#define SRCPROPMAKPOS(l, c) (((l) << 12) + (c)) #define SRCPROPMAKPOS(l, c) (((l) << 12) + (c))
#define SETSRCPROPPOS(p, l, c) (SRCPROPPOS (p) = SRCPROPMAKPOS (l, c)) #define SETSRCPROPPOS(p, l, c) (SRCPROPPOS (p) = SRCPROPMAKPOS (l, c))
#define SETSRCPROPLINE(p, l) SETSRCPROPPOS (p, l, SRCPROPCOL (p)) #define SETSRCPROPLINE(p, l) SETSRCPROPPOS (p, l, SRCPROPCOL (p))

View file

@ -37,16 +37,16 @@ SCM_API scm_t_bits scm_tc16_fair_mutex;
SCM_API scm_t_bits scm_tc16_condvar; SCM_API scm_t_bits scm_tc16_condvar;
SCM_API scm_t_bits scm_tc16_fair_condvar; SCM_API scm_t_bits scm_tc16_fair_condvar;
#define SCM_THREADP(x) SCM_TYP16_PREDICATE (scm_tc16_thread, x) #define SCM_THREADP(x) SCM_SMOB_PREDICATE (scm_tc16_thread, x)
#define SCM_THREAD_DATA(x) ((scm_thread *) SCM_CELL_WORD_1 (x)) #define SCM_THREAD_DATA(x) ((scm_thread *) SCM_SMOB_DATA (x))
#define SCM_MUTEXP(x) SCM_TYP16_PREDICATE (scm_tc16_mutex, x) #define SCM_MUTEXP(x) SCM_SMOB_PREDICATE (scm_tc16_mutex, x)
#define SCM_FAIR_MUTEX_P(x) SCM_TYP16_PREDICATE (scm_tc16_fair_mutex, x) #define SCM_FAIR_MUTEX_P(x) SCM_SMOB_PREDICATE (scm_tc16_fair_mutex, x)
#define SCM_MUTEX_DATA(x) ((void *) SCM_CELL_WORD_1 (x)) #define SCM_MUTEX_DATA(x) ((void *) SCM_SMOB_DATA (x))
#define SCM_CONDVARP(x) SCM_TYP16_PREDICATE (scm_tc16_condvar, x) #define SCM_CONDVARP(x) SCM_SMOB_PREDICATE (scm_tc16_condvar, x)
#define SCM_FAIR_CONDVAR_P(x) SCM_TYP16_PREDICATE (scm_tc16_fair_condvar, x) #define SCM_FAIR_CONDVAR_P(x) SCM_SMOB_PREDICATE (scm_tc16_fair_condvar, x)
#define SCM_CONDVAR_DATA(x) ((void *) SCM_CELL_WORD_1 (x)) #define SCM_CONDVAR_DATA(x) ((void *) SCM_SMOB_DATA (x))
#define SCM_VALIDATE_THREAD(pos, a) \ #define SCM_VALIDATE_THREAD(pos, a) \
SCM_MAKE_VALIDATE_MSG (pos, a, THREADP, "thread") SCM_MAKE_VALIDATE_MSG (pos, a, THREADP, "thread")