2002-07-20 Han-Wen <hanwen@cs.uu.nl>
[bpt/guile.git] / libguile / vectors.h
index 4d37b37..dda0c76 100644 (file)
 #define SCM_SET_VECTOR_BASE(v, b) (SCM_SET_CELL_WORD_1 ((v), (b)))
 #define SCM_VECTOR_MAX_LENGTH ((1L << 24) - 1)
 #define SCM_VECTOR_LENGTH(x) (((unsigned long) SCM_CELL_WORD_0 (x)) >> 8)
-#define SCM_MAKE_VECTOR_TAG(l,t)  (((l) << 8) + (t))
-#define SCM_SET_VECTOR_LENGTH(v, l, t) (SCM_SET_CELL_WORD_0 ((v), SCM_MAKE_VECTOR_TAG(l,t)))
+#define SCM_MAKE_VECTOR_TAG(l, t)  (((l) << 8) + (t))
+#define SCM_SET_VECTOR_LENGTH(v, l, t) (SCM_SET_CELL_WORD_0 ((v), SCM_MAKE_VECTOR_TAG(l, t)))
 
-#define SCM_VELTS(x) ((SCM *) SCM_CELL_WORD_1 (x))
+#define SCM_VELTS(x) ((const SCM *) SCM_CELL_WORD_1 (x))
 #define SCM_VELTS_AS_STACKITEMS(x) ((SCM_STACKITEM *) SCM_CELL_WORD_1 (x))
-#define SCM_SETVELTS(x,v) (SCM_SET_CELL_WORD_1 ((x), (v)))
+#define SCM_SETVELTS(x, v) (SCM_SET_CELL_WORD_1 ((x), (v)))
+#define SCM_VECTOR_SET(x, idx, val)  (((SCM*)SCM_CELL_WORD_1 (x))[(idx)] = (val))
 
+#define SCM_GC_WRITABLE_VELTS(x) ((SCM*) SCM_VELTS(x))
+
+/*
+  no WB yet.
+ */
+#define SCM_WRITABLE_VELTS(x) ((SCM*) SCM_VELTS(x))
 
 \f
 /*