2002-07-20 Han-Wen <hanwen@cs.uu.nl>
[bpt/guile.git] / libguile / smob.h
index e804a60..c1893a4 100644 (file)
@@ -72,9 +72,7 @@ typedef struct scm_smob_descriptor
 
 #define SCM_NEWSMOB(z, tc, data) \
 do { \
-  SCM_NEWCELL (z); \
-  SCM_SET_CELL_WORD_1 ((z), (data)); \
-  SCM_SET_CELL_TYPE ((z), (tc)); \
+  z = scm_cell ((tc), (scm_t_bits) (data)); \
 } while (0)
 
 #define SCM_RETURN_NEWSMOB(tc, data) \
@@ -85,10 +83,7 @@ do { \
 
 #define SCM_NEWSMOB2(z, tc, data1, data2) \
 do { \
-  SCM_NEWCELL2 (z); \
-  SCM_SET_CELL_WORD_1 ((z), (data1)); \
-  SCM_SET_CELL_WORD_2 ((z), (data2)); \
-  SCM_SET_CELL_TYPE ((z), (tc)); \
+  z = scm_double_cell ((tc), (scm_t_bits)(data1), (scm_t_bits)(data2), 0); \
 } while (0)
 
 #define SCM_RETURN_NEWSMOB2(tc, data1, data2) \
@@ -99,11 +94,8 @@ do { \
 
 #define SCM_NEWSMOB3(z, tc, data1, data2, data3) \
 do { \
-  SCM_NEWCELL2 (z); \
-  SCM_SET_CELL_WORD_1 ((z), (data1)); \
-  SCM_SET_CELL_WORD_2 ((z), (data2)); \
-  SCM_SET_CELL_WORD_3 ((z), (data3)); \
-  SCM_SET_CELL_TYPE ((z), (tc)); \
+  z = scm_double_cell ((tc), (scm_t_bits)(data1), \
+                       (scm_t_bits)(data2), (scm_t_bits)(data3)); \
 } while (0)
 
 #define SCM_RETURN_NEWSMOB3(tc, data1, data2, data3) \
@@ -123,9 +115,9 @@ do { \
 #define SCM_SMOB_DESCRIPTOR(x)         (scm_smobs[SCM_SMOBNUM (x)])
 #define SCM_SMOB_APPLICABLE_P(x)       (SCM_SMOB_DESCRIPTOR (x).apply)
 #define SCM_SMOB_APPLY_0(x)            (SCM_SMOB_DESCRIPTOR (x).apply_0 (x))
-#define SCM_SMOB_APPLY_1(x,a1)         (SCM_SMOB_DESCRIPTOR (x).apply_1 (x, (a1)))
-#define SCM_SMOB_APPLY_2(x,a1,a2)      (SCM_SMOB_DESCRIPTOR (x).apply_2 (x, (a1), (a2)))
-#define SCM_SMOB_APPLY_3(x,a1,a2,rst)  (SCM_SMOB_DESCRIPTOR (x).apply_3 (x, (a1), (a2), (rst)))
+#define SCM_SMOB_APPLY_1(x, a1)                (SCM_SMOB_DESCRIPTOR (x).apply_1 (x, (a1)))
+#define SCM_SMOB_APPLY_2(x, a1, a2)    (SCM_SMOB_DESCRIPTOR (x).apply_2 (x, (a1), (a2)))
+#define SCM_SMOB_APPLY_3(x, a1, a2, rst)       (SCM_SMOB_DESCRIPTOR (x).apply_3 (x, (a1), (a2), (rst)))
 
 SCM_API long scm_numsmob;
 SCM_API scm_smob_descriptor scm_smobs[];