diff options
author | Marius Vollmer <mvo@zagadka.de> | 2004-05-06 16:41:27 +0000 |
---|---|---|
committer | Marius Vollmer <mvo@zagadka.de> | 2004-05-06 16:41:27 +0000 |
commit | 37fc18ae734bcf7a0346e4231dfd1a41f0aec2f9 (patch) | |
tree | 1cabc6e777b9e39efa68736614c225eef49f5420 /libguile/smob.h | |
parent | 33c527ec83a8506599b8e6b7168f2f43478bc95a (diff) | |
download | guile-37fc18ae734bcf7a0346e4231dfd1a41f0aec2f9.tar.gz |
* smob.h (SCM_SMOB_DATA_2, SCM_SMOB_DATA_3, SCM_SMOB_FLAGS,
SCM_SET_SMOB_DATA_2, SCM_SET_SMOB_DATA_3, SCM_SET_SMOB_FLAGS,
SCM_SMOB_OBJECT, SCM_SMOB_OBJECT_2, SCM_SMOB_OBJECT_3,
SCM_SET_SMOB_OBJECT, SCM_SET_SMOB_OBJECT_2, SCM_SET_SMOB_OBJECT_3,
SCM_SMOB_OBJECT_LOC, SCM_SMOB_OBJECT_2_LOC,
SCM_SMOB_OBJECT_3_LOC): New.
* smob.c (scm_i_set_smob_flags): New function.
Diffstat (limited to 'libguile/smob.h')
-rw-r--r-- | libguile/smob.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/libguile/smob.h b/libguile/smob.h index 97af67a0b..37188b894 100644 --- a/libguile/smob.h +++ b/libguile/smob.h @@ -81,8 +81,25 @@ do { \ } while (0) +#define SCM_SMOB_FLAGS(x) (SCM_CELL_WORD_0 (x) >> 16) #define SCM_SMOB_DATA(x) (SCM_CELL_WORD_1 (x)) +#define SCM_SMOB_DATA_2(x) (SCM_CELL_WORD_2 (x)) +#define SCM_SMOB_DATA_3(x) (SCM_CELL_WORD_3 (x)) #define SCM_SET_SMOB_DATA(x, data) (SCM_SET_CELL_WORD_1 ((x), (data))) +#define SCM_SET_SMOB_DATA_2(x, data) (SCM_SET_CELL_WORD_2 ((x), (data))) +#define SCM_SET_SMOB_DATA_3(x, data) (SCM_SET_CELL_WORD_3 ((x), (data))) +#define SCM_SET_SMOB_FLAGS(x, data) (scm_i_set_smob_flags((x),(data)<<16)) + +#define SCM_SMOB_OBJECT(x) (SCM_CELL_OBJECT_1 (x)) +#define SCM_SMOB_OBJECT_2(x) (SCM_CELL_OBJECT_2 (x)) +#define SCM_SMOB_OBJECT_3(x) (SCM_CELL_OBJECT_3 (x)) +#define SCM_SET_SMOB_OBJECT(x,obj) (SCM_SET_CELL_OBJECT_1 ((x), (obj))) +#define SCM_SET_SMOB_OBJECT_2(x,obj) (SCM_SET_CELL_OBJECT_2 ((x), (obj))) +#define SCM_SET_SMOB_OBJECT_3(x,obj) (SCM_SET_CELL_OBJECT_3 ((x), (obj))) +#define SCM_SMOB_OBJECT_LOC(x) (SCM_CELL_OBJECT_LOC ((x), 1)) +#define SCM_SMOB_OBJECT_2_LOC(x) (SCM_CELL_OBJECT_LOC ((x), 2)) +#define SCM_SMOB_OBJECT_3_LOC(x) (SCM_CELL_OBJECT_LOC ((x), 3)) + #define SCM_TC2SMOBNUM(x) (0x0ff & ((x) >> 8)) #define SCM_SMOBNUM(x) (SCM_TC2SMOBNUM (SCM_CELL_TYPE (x))) /* SCM_SMOBNAME can be 0 if name is missing */ @@ -98,6 +115,8 @@ do { \ SCM_API long scm_numsmob; SCM_API scm_smob_descriptor scm_smobs[]; +SCM_API void scm_i_set_smob_flags (SCM x, scm_t_bits data); + SCM_API SCM scm_mark0 (SCM ptr); |