mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-01 12:20:26 +02:00
* Deprecated SCM_LENGTH_MAX.
This commit is contained in:
parent
6a0476fd11
commit
5b9eb8ae16
6 changed files with 32 additions and 17 deletions
7
NEWS
7
NEWS
|
@ -237,6 +237,10 @@ collector has set this variable. But, this is an implementation detail that
|
||||||
may change. Further, scm_gc_heap_lock is not set throughout gc, thus the use
|
may change. Further, scm_gc_heap_lock is not set throughout gc, thus the use
|
||||||
of this variable is (and has been) not fully safe anyway.
|
of this variable is (and has been) not fully safe anyway.
|
||||||
|
|
||||||
|
** New macros: SCM_BITVECTOR_MAX_LENGTH, SCM_UVECTOR_MAX_LENGTH
|
||||||
|
|
||||||
|
Use these instead of SCM_LENGTH_MAX.
|
||||||
|
|
||||||
** New macros: SCM_CONTINUATION_LENGTH, SCM_CCLO_LENGTH, SCM_STACK_LENGTH,
|
** New macros: SCM_CONTINUATION_LENGTH, SCM_CCLO_LENGTH, SCM_STACK_LENGTH,
|
||||||
SCM_STRING_LENGTH, SCM_SYMBOL_LENGTH, SCM_UVECTOR_LENGTH,
|
SCM_STRING_LENGTH, SCM_SYMBOL_LENGTH, SCM_UVECTOR_LENGTH,
|
||||||
SCM_BITVECTOR_LENGTH, SCM_VECTOR_LENGTH.
|
SCM_BITVECTOR_LENGTH, SCM_VECTOR_LENGTH.
|
||||||
|
@ -276,7 +280,7 @@ SCM_VALIDATE_ROSTRING, SCM_VALIDATE_ROSTRING_COPY,
|
||||||
SCM_VALIDATE_NULLORROSTRING_COPY, SCM_ROLENGTH, SCM_LENGTH, SCM_HUGE_LENGTH,
|
SCM_VALIDATE_NULLORROSTRING_COPY, SCM_ROLENGTH, SCM_LENGTH, SCM_HUGE_LENGTH,
|
||||||
SCM_SUBSTRP, SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_COERCE_SUBSTR,
|
SCM_SUBSTRP, SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_COERCE_SUBSTR,
|
||||||
SCM_ROSTRINGP, SCM_RWSTRINGP, SCM_VALIDATE_RWSTRING, SCM_ROCHARS,
|
SCM_ROSTRINGP, SCM_RWSTRINGP, SCM_VALIDATE_RWSTRING, SCM_ROCHARS,
|
||||||
SCM_ROUCHARS, SCM_SETLENGTH, SCM_SETCHARS
|
SCM_ROUCHARS, SCM_SETLENGTH, SCM_SETCHARS, SCM_LENGTH_MAX
|
||||||
|
|
||||||
Use SCM_ASSERT_RANGE or SCM_VALIDATE_XXX_RANGE instead of SCM_OUTOFRANGE.
|
Use SCM_ASSERT_RANGE or SCM_VALIDATE_XXX_RANGE instead of SCM_OUTOFRANGE.
|
||||||
Use scm_memory_error instead of SCM_NALLOC.
|
Use scm_memory_error instead of SCM_NALLOC.
|
||||||
|
@ -294,6 +298,7 @@ Use SCM_STRING_CHARS instead of SCM_ROCHARS.
|
||||||
Use SCM_STRING_UCHARS instead of SCM_ROUCHARS.
|
Use SCM_STRING_UCHARS instead of SCM_ROUCHARS.
|
||||||
Use a type specific setter macro instead of SCM_SETLENGTH.
|
Use a type specific setter macro instead of SCM_SETLENGTH.
|
||||||
Use a type specific setter macro instead of SCM_SETCHARS.
|
Use a type specific setter macro instead of SCM_SETCHARS.
|
||||||
|
Use a type specific length macro instead of SCM_LENGTH_MAX.
|
||||||
|
|
||||||
** Removed function: scm_struct_init
|
** Removed function: scm_struct_init
|
||||||
|
|
||||||
|
|
2
RELEASE
2
RELEASE
|
@ -50,7 +50,7 @@ In release 1.6:
|
||||||
SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY, SCM_ROLENGTH,
|
SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY, SCM_ROLENGTH,
|
||||||
SCM_LENGTH, SCM_HUGE_LENGTH, SCM_SUBSTRP, SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET,
|
SCM_LENGTH, SCM_HUGE_LENGTH, SCM_SUBSTRP, SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET,
|
||||||
SCM_COERCE_SUBSTR, SCM_ROSTRINGP, SCM_RWSTRINGP, SCM_VALIDATE_RWSTRING,
|
SCM_COERCE_SUBSTR, SCM_ROSTRINGP, SCM_RWSTRINGP, SCM_VALIDATE_RWSTRING,
|
||||||
SCM_ROCHARS, SCM_ROUCHARS, SCM_SETLENGTH, SCM_SETCHARS
|
SCM_ROCHARS, SCM_ROUCHARS, SCM_SETLENGTH, SCM_SETCHARS, SCM_LENGTH_MAX
|
||||||
- remove scm_vector_set_length_x
|
- remove scm_vector_set_length_x
|
||||||
- remove function scm_call_catching_errors
|
- remove function scm_call_catching_errors
|
||||||
(replaced by catch functions from throw.[ch])
|
(replaced by catch functions from throw.[ch])
|
||||||
|
|
|
@ -1,4 +1,19 @@
|
||||||
2000-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
|
2000-11-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
|
||||||
|
|
||||||
|
* symbols.h (SCM_LENGTH_MAX): Deprecated.
|
||||||
|
|
||||||
|
* unif.c (scm_make_uve): Use SCM_BITVECTOR_MAX_LENGTH and
|
||||||
|
SCM_UVECTOR_MAX_LENGTH instead of SCM_LENGTH_MAX. Postpone length
|
||||||
|
checks for strings and vectors to their constructors. Eliminate
|
||||||
|
redundant SCM_IMP test.
|
||||||
|
|
||||||
|
(scm_dimensions_to_uniform_array): Postpone length checks to
|
||||||
|
scm_make_uve.
|
||||||
|
|
||||||
|
* unif.h (SCM_BITVECTOR_MAX_LENGTH, SCM_UVECTOR_MAX_LENGTH):
|
||||||
|
Added.
|
||||||
|
|
||||||
|
2000-11-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
|
||||||
|
|
||||||
* gh_data.c (makvect), numbers.c (scm_mkbig, scm_adjbig),
|
* gh_data.c (makvect), numbers.c (scm_mkbig, scm_adjbig),
|
||||||
strings.c (scm_makstr, scm_take_str), symbols.c
|
strings.c (scm_makstr, scm_take_str), symbols.c
|
||||||
|
|
|
@ -63,8 +63,6 @@ extern int scm_symhash_dim;
|
||||||
#define SCM_SYMBOL_LENGTH(x) (((unsigned long) SCM_CELL_WORD_0 (x)) >> 8)
|
#define SCM_SYMBOL_LENGTH(x) (((unsigned long) SCM_CELL_WORD_0 (x)) >> 8)
|
||||||
#define SCM_SET_SYMBOL_LENGTH(s, l) (SCM_SET_CELL_WORD_0 ((s), ((l) << 8) + scm_tc7_symbol))
|
#define SCM_SET_SYMBOL_LENGTH(s, l) (SCM_SET_CELL_WORD_0 ((s), ((l) << 8) + scm_tc7_symbol))
|
||||||
|
|
||||||
#define SCM_LENGTH_MAX (0xffffffL)
|
|
||||||
|
|
||||||
#define SCM_PROP_SLOTS(X) (SCM_CELL_WORD_3 (X))
|
#define SCM_PROP_SLOTS(X) (SCM_CELL_WORD_3 (X))
|
||||||
#define SCM_SET_PROP_SLOTS(X, v) (SCM_SET_CELL_WORD_3 ((X), (v)))
|
#define SCM_SET_PROP_SLOTS(X, v) (SCM_SET_CELL_WORD_3 ((X), (v)))
|
||||||
#define SCM_SYMBOL_FUNC(X) (SCM_CAR (SCM_CELL_WORD_3 (X)))
|
#define SCM_SYMBOL_FUNC(X) (SCM_CAR (SCM_CELL_WORD_3 (X)))
|
||||||
|
@ -119,6 +117,7 @@ extern void scm_init_symbols (void);
|
||||||
#define SCM_SLOPPY_SUBSTRP(x) (SCM_SUBSTRP (x))
|
#define SCM_SLOPPY_SUBSTRP(x) (SCM_SUBSTRP (x))
|
||||||
#define SCM_SUBSTR_STR(x) (SCM_CDDR (x))
|
#define SCM_SUBSTR_STR(x) (SCM_CDDR (x))
|
||||||
#define SCM_SUBSTR_OFFSET(x) (SCM_CADR (x))
|
#define SCM_SUBSTR_OFFSET(x) (SCM_CADR (x))
|
||||||
|
#define SCM_LENGTH_MAX (0xffffffL)
|
||||||
#define SCM_LENGTH(x) (((unsigned long) SCM_CELL_WORD_0 (x)) >> 8)
|
#define SCM_LENGTH(x) (((unsigned long) SCM_CELL_WORD_0 (x)) >> 8)
|
||||||
#define SCM_SETLENGTH(x, v, t) (SCM_SET_CELL_WORD_0 ((x), ((v) << 8) + (t)))
|
#define SCM_SETLENGTH(x, v, t) (SCM_SET_CELL_WORD_0 ((x), ((v) << 8) + (t)))
|
||||||
#define SCM_ROSTRINGP(x) (SCM_NIMP(x) && ((SCM_TYP7S(x)==scm_tc7_string) \
|
#define SCM_ROSTRINGP(x) (SCM_NIMP(x) && ((SCM_TYP7S(x)==scm_tc7_string) \
|
||||||
|
|
|
@ -158,13 +158,12 @@ scm_make_uve (long k, SCM prot)
|
||||||
SCM v;
|
SCM v;
|
||||||
long i, type;
|
long i, type;
|
||||||
|
|
||||||
SCM_ASSERT_RANGE (1, scm_long2num (k), k <= SCM_LENGTH_MAX);
|
|
||||||
|
|
||||||
if (SCM_EQ_P (prot, SCM_BOOL_T))
|
if (SCM_EQ_P (prot, SCM_BOOL_T))
|
||||||
{
|
{
|
||||||
SCM_NEWCELL (v);
|
SCM_NEWCELL (v);
|
||||||
if (k > 0)
|
if (k > 0)
|
||||||
{
|
{
|
||||||
|
SCM_ASSERT_RANGE (1, scm_long2num (k), k <= SCM_BITVECTOR_MAX_LENGTH);
|
||||||
i = sizeof (long) * ((k + SCM_LONG_BIT - 1) / SCM_LONG_BIT);
|
i = sizeof (long) * ((k + SCM_LONG_BIT - 1) / SCM_LONG_BIT);
|
||||||
SCM_SET_BITVECTOR_BASE (v, (char *) scm_must_malloc (i, "vector"));
|
SCM_SET_BITVECTOR_BASE (v, (char *) scm_must_malloc (i, "vector"));
|
||||||
SCM_SET_BITVECTOR_LENGTH (v, k);
|
SCM_SET_BITVECTOR_LENGTH (v, k);
|
||||||
|
@ -180,7 +179,7 @@ scm_make_uve (long k, SCM prot)
|
||||||
{
|
{
|
||||||
i = sizeof (char) * k;
|
i = sizeof (char) * k;
|
||||||
type = scm_tc7_byvect;
|
type = scm_tc7_byvect;
|
||||||
}
|
}
|
||||||
else if (SCM_CHARP (prot))
|
else if (SCM_CHARP (prot))
|
||||||
{
|
{
|
||||||
i = sizeof (char) * k;
|
i = sizeof (char) * k;
|
||||||
|
@ -216,8 +215,7 @@ scm_make_uve (long k, SCM prot)
|
||||||
return scm_make_vector (SCM_MAKINUM (k), SCM_UNDEFINED);
|
return scm_make_vector (SCM_MAKINUM (k), SCM_UNDEFINED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else if (!SCM_INEXACTP (prot))
|
||||||
if (SCM_IMP (prot) || !SCM_INEXACTP (prot))
|
|
||||||
/* Huge non-unif vectors are NOT supported. */
|
/* Huge non-unif vectors are NOT supported. */
|
||||||
/* no special scm_vector */
|
/* no special scm_vector */
|
||||||
return scm_make_vector (SCM_MAKINUM (k), SCM_UNDEFINED);
|
return scm_make_vector (SCM_MAKINUM (k), SCM_UNDEFINED);
|
||||||
|
@ -237,6 +235,8 @@ scm_make_uve (long k, SCM prot)
|
||||||
type = scm_tc7_dvect;
|
type = scm_tc7_dvect;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SCM_ASSERT_RANGE (1, scm_long2num (k), k <= SCM_UVECTOR_MAX_LENGTH);
|
||||||
|
|
||||||
SCM_NEWCELL (v);
|
SCM_NEWCELL (v);
|
||||||
SCM_DEFER_INTS;
|
SCM_DEFER_INTS;
|
||||||
SCM_SET_UVECTOR_BASE (v, (char *) scm_must_malloc (i ? i : 1, "vector"));
|
SCM_SET_UVECTOR_BASE (v, (char *) scm_must_malloc (i ? i : 1, "vector"));
|
||||||
|
@ -581,11 +581,7 @@ SCM_DEFINE (scm_dimensions_to_uniform_array, "dimensions->uniform-array", 2, 1,
|
||||||
SCM ra;
|
SCM ra;
|
||||||
if (SCM_INUMP (dims))
|
if (SCM_INUMP (dims))
|
||||||
{
|
{
|
||||||
SCM answer;
|
SCM answer = scm_make_uve (SCM_INUM (dims), prot);
|
||||||
|
|
||||||
SCM_ASSERT_RANGE (1, dims, SCM_INUM (dims) <= SCM_LENGTH_MAX);
|
|
||||||
|
|
||||||
answer = scm_make_uve (SCM_INUM (dims), prot);
|
|
||||||
if (!SCM_UNBNDP (fill))
|
if (!SCM_UNBNDP (fill))
|
||||||
scm_array_fill_x (answer, fill);
|
scm_array_fill_x (answer, fill);
|
||||||
else if (SCM_SYMBOLP (prot))
|
else if (SCM_SYMBOLP (prot))
|
||||||
|
@ -607,8 +603,6 @@ SCM_DEFINE (scm_dimensions_to_uniform_array, "dimensions->uniform-array", 2, 1,
|
||||||
rlen = (s[k].ubnd - s[k].lbnd + 1) * s[k].inc;
|
rlen = (s[k].ubnd - s[k].lbnd + 1) * s[k].inc;
|
||||||
}
|
}
|
||||||
|
|
||||||
SCM_ASSERT_RANGE (1, dims, rlen <= SCM_LENGTH_MAX);
|
|
||||||
|
|
||||||
SCM_ARRAY_V (ra) = scm_make_uve (rlen, prot);
|
SCM_ARRAY_V (ra) = scm_make_uve (rlen, prot);
|
||||||
|
|
||||||
if (!SCM_UNBNDP (fill))
|
if (!SCM_UNBNDP (fill))
|
||||||
|
|
|
@ -88,12 +88,14 @@ extern long scm_tc16_array;
|
||||||
|
|
||||||
#define SCM_UVECTOR_BASE(x) ((void *) (SCM_CELL_WORD_1 (x)))
|
#define SCM_UVECTOR_BASE(x) ((void *) (SCM_CELL_WORD_1 (x)))
|
||||||
#define SCM_SET_UVECTOR_BASE(v, b) (SCM_SET_CELL_WORD_1 ((v), (b)))
|
#define SCM_SET_UVECTOR_BASE(v, b) (SCM_SET_CELL_WORD_1 ((v), (b)))
|
||||||
|
#define SCM_UVECTOR_MAX_LENGTH (0xffffffL)
|
||||||
#define SCM_UVECTOR_LENGTH(x) (((unsigned long) SCM_CELL_WORD_0 (x)) >> 8)
|
#define SCM_UVECTOR_LENGTH(x) (((unsigned long) SCM_CELL_WORD_0 (x)) >> 8)
|
||||||
#define SCM_SET_UVECTOR_LENGTH(v, l, t) (SCM_SET_CELL_WORD_0 ((v), ((l) << 8) + (t)))
|
#define SCM_SET_UVECTOR_LENGTH(v, l, t) (SCM_SET_CELL_WORD_0 ((v), ((l) << 8) + (t)))
|
||||||
|
|
||||||
#define SCM_BITVECTOR_P(x) (!SCM_IMP (x) && (SCM_TYP7 (x) == scm_tc7_bvect))
|
#define SCM_BITVECTOR_P(x) (!SCM_IMP (x) && (SCM_TYP7 (x) == scm_tc7_bvect))
|
||||||
#define SCM_BITVECTOR_BASE(x) ((void *) (SCM_CELL_WORD_1 (x)))
|
#define SCM_BITVECTOR_BASE(x) ((void *) (SCM_CELL_WORD_1 (x)))
|
||||||
#define SCM_SET_BITVECTOR_BASE(v, b) (SCM_SET_CELL_WORD_1 ((v), (b)))
|
#define SCM_SET_BITVECTOR_BASE(v, b) (SCM_SET_CELL_WORD_1 ((v), (b)))
|
||||||
|
#define SCM_BITVECTOR_MAX_LENGTH (0xffffffL)
|
||||||
#define SCM_BITVECTOR_LENGTH(x) (((unsigned long) SCM_CELL_WORD_0 (x)) >> 8)
|
#define SCM_BITVECTOR_LENGTH(x) (((unsigned long) SCM_CELL_WORD_0 (x)) >> 8)
|
||||||
#define SCM_SET_BITVECTOR_LENGTH(v, l) (SCM_SET_CELL_WORD_0 ((v), ((l) << 8) + scm_tc7_bvect))
|
#define SCM_SET_BITVECTOR_LENGTH(v, l) (SCM_SET_CELL_WORD_0 ((v), ((l) << 8) + scm_tc7_bvect))
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue