summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDirk Herrmann <dirk@dirk-herrmanns-seiten.de>2000-11-22 14:45:41 +0000
committerDirk Herrmann <dirk@dirk-herrmanns-seiten.de>2000-11-22 14:45:41 +0000
commitbc0eaf7b78140d9215d2ae7b88ca93000145e4a3 (patch)
treeece59502920f9022d197d6b1b450e00b084160dd
parent34f0f2b8af3585c4057cf076739151accde02147 (diff)
downloadguile-bc0eaf7b78140d9215d2ae7b88ca93000145e4a3.tar.gz
* Added SCM_SET_VECTOR_LENGTH as one replacement for SCM_SETLENGTH.
-rw-r--r--NEWS4
-rw-r--r--libguile/ChangeLog7
-rw-r--r--libguile/vectors.c2
-rw-r--r--libguile/vectors.h1
-rw-r--r--libguile/weaks.c3
5 files changed, 15 insertions, 2 deletions
diff --git a/NEWS b/NEWS
index 99e6d6694..bad32a89b 100644
--- a/NEWS
+++ b/NEWS
@@ -243,6 +243,10 @@ SCM_BITVECTOR_LENGTH, SCM_VECTOR_LENGTH.
Use these instead of SCM_LENGTH.
+** New macros: SCM_SET_VECTOR_LENGTH
+
+Use these instead of SCM_SETLENGTH
+
** New macros: SCM_STRING_CHARS, SCM_SYMBOL_CHARS, SCM_CCLO_BASE,
SCM_VECTOR_BASE, SCM_UVECTOR_BASE, SCM_BITVECTOR_BASE, SCM_COMPLEX_MEM,
SCM_ARRAY_MEM
diff --git a/libguile/ChangeLog b/libguile/ChangeLog
index 9934bd78a..c0901f54b 100644
--- a/libguile/ChangeLog
+++ b/libguile/ChangeLog
@@ -1,5 +1,12 @@
2000-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
+ * vectors.c (scm_make_vector), weaks.c (scm_make_weak_vector):
+ Use SCM_SET_VECTOR_LENGTH instead of SCM_SETLENGTH.
+
+ * vectors.h (SCM_SET_VECTOR_LENGTH): Added.
+
+2000-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
* dynl.c (scm_make_argv_from_stringlist), filesys.c (scm_dirname,
scm_basename), gh_data.c (gh_scm2newstr, gh_get_substr), hash.c
(scm_hasher), load.c (scm_parse_path, scm_search_path,
diff --git a/libguile/vectors.c b/libguile/vectors.c
index 9dd7d8b66..f4225c754 100644
--- a/libguile/vectors.c
+++ b/libguile/vectors.c
@@ -293,7 +293,7 @@ SCM_DEFINE (scm_make_vector, "make-vector", 1, 1, 0,
velts[j] = SCM_UNPACK (fill);
SCM_SETCHARS (v, velts);
- SCM_SETLENGTH (v, i, scm_tc7_vector);
+ SCM_SET_VECTOR_LENGTH (v, i, scm_tc7_vector);
}
SCM_ALLOW_INTS;
diff --git a/libguile/vectors.h b/libguile/vectors.h
index 55404554d..3d64a1b91 100644
--- a/libguile/vectors.h
+++ b/libguile/vectors.h
@@ -54,6 +54,7 @@
#define SCM_VECTORP(x) (SCM_NIMP (x) && (SCM_TYP7S (x) == scm_tc7_vector))
#define SCM_VECTOR_BASE(x) ((scm_bits_t *) SCM_CELL_WORD_1 (x))
#define SCM_VECTOR_LENGTH(x) (((unsigned long) SCM_CELL_WORD_0 (x)) >> 8)
+#define SCM_SET_VECTOR_LENGTH(v, l, t) (SCM_SET_CELL_WORD_0 ((v), ((l) << 8) + (t)))
#define SCM_VELTS(x) ((SCM *) SCM_CELL_WORD_1 (x))
#define SCM_VELTS_AS_STACKITEMS(x) ((SCM_STACKITEM *) SCM_CELL_WORD_1 (x))
diff --git a/libguile/weaks.c b/libguile/weaks.c
index 1d803401b..e7f6cd89d 100644
--- a/libguile/weaks.c
+++ b/libguile/weaks.c
@@ -63,10 +63,11 @@ SCM_DEFINE (scm_make_weak_vector, "make-weak-vector", 1, 1, 0,
"@var{fill}. The default value for @var{fill} is the empty list.")
#define FUNC_NAME s_scm_make_weak_vector
{
+ /* Dirk:FIXME:: We should probably rather use a double cell for weak vectors. */
SCM v;
v = scm_make_vector (scm_sum (k, SCM_MAKINUM (2)), fill);
SCM_DEFER_INTS;
- SCM_SETLENGTH(v, SCM_INUM (k), scm_tc7_wvect);
+ SCM_SET_VECTOR_LENGTH (v, SCM_INUM (k), scm_tc7_wvect);
SCM_SETVELTS(v, SCM_VELTS(v) + 2);
SCM_VELTS(v)[-2] = SCM_EOL;
SCM_UNPACK (SCM_VELTS (v)[-1]) = 0;