diff options
author | Dirk Herrmann <dirk@dirk-herrmanns-seiten.de> | 2000-11-22 14:45:41 +0000 |
---|---|---|
committer | Dirk Herrmann <dirk@dirk-herrmanns-seiten.de> | 2000-11-22 14:45:41 +0000 |
commit | bc0eaf7b78140d9215d2ae7b88ca93000145e4a3 (patch) | |
tree | ece59502920f9022d197d6b1b450e00b084160dd | |
parent | 34f0f2b8af3585c4057cf076739151accde02147 (diff) | |
download | guile-bc0eaf7b78140d9215d2ae7b88ca93000145e4a3.tar.gz |
* Added SCM_SET_VECTOR_LENGTH as one replacement for SCM_SETLENGTH.
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | libguile/ChangeLog | 7 | ||||
-rw-r--r-- | libguile/vectors.c | 2 | ||||
-rw-r--r-- | libguile/vectors.h | 1 | ||||
-rw-r--r-- | libguile/weaks.c | 3 |
5 files changed, 15 insertions, 2 deletions
@@ -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; |