1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-10 14:00:21 +02:00

* Allow to convert an array of bytes to a list. Thanks to Masao Uebayashi.

This commit is contained in:
Dirk Herrmann 2001-04-19 16:27:01 +00:00
parent 4daecfeecc
commit af7546ebe2
3 changed files with 42 additions and 28 deletions

1
THANKS
View file

@ -34,6 +34,7 @@ For fixes or providing information which led to a fix:
Bill Schottstaedt
Miroslav Silovic
Dale P. Smith
Masao Uebayashi
Jacques A. Vidrine
Brett Viren
William Webber

View file

@ -1,3 +1,8 @@
2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
* unif.c (scm_array_to_list): Added missing handling of arrays of
bytes. Thanks to Masao Uebayashi for the bug report.
2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
* debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more

View file

@ -2108,36 +2108,44 @@ SCM_DEFINE (scm_array_to_list, "array->list", 1, 0, 0,
res = scm_cons (SCM_BOOL(((long *) data)[k] & mask), res);
return res;
}
case scm_tc7_uvect: {
long *data = (long *)SCM_VELTS(v);
for (k = SCM_UVECTOR_LENGTH(v) - 1; k >= 0; k--)
res = scm_cons(scm_ulong2num(data[k]), res);
return res;
}
case scm_tc7_ivect: {
long *data = (long *)SCM_VELTS(v);
for (k = SCM_UVECTOR_LENGTH(v) - 1; k >= 0; k--)
res = scm_cons(scm_long2num(data[k]), res);
return res;
}
case scm_tc7_svect: {
short *data;
data = (short *)SCM_VELTS(v);
for (k = SCM_UVECTOR_LENGTH(v) - 1; k >= 0; k--)
res = scm_cons(SCM_MAKINUM (data[k]), res);
return res;
}
case scm_tc7_byvect:
{
signed char *data = (signed char *) SCM_VELTS (v);
scm_sizet k = SCM_UVECTOR_LENGTH (v);
while (k != 0)
res = scm_cons (SCM_MAKINUM (data[--k]), res);
return res;
}
case scm_tc7_uvect:
{
long *data = (long *)SCM_VELTS(v);
for (k = SCM_UVECTOR_LENGTH(v) - 1; k >= 0; k--)
res = scm_cons(scm_ulong2num(data[k]), res);
return res;
}
case scm_tc7_ivect:
{
long *data = (long *)SCM_VELTS(v);
for (k = SCM_UVECTOR_LENGTH(v) - 1; k >= 0; k--)
res = scm_cons(scm_long2num(data[k]), res);
return res;
}
case scm_tc7_svect:
{
short *data = (short *)SCM_VELTS(v);
for (k = SCM_UVECTOR_LENGTH(v) - 1; k >= 0; k--)
res = scm_cons(SCM_MAKINUM (data[k]), res);
return res;
}
#ifdef HAVE_LONG_LONGS
case scm_tc7_llvect: {
long_long *data;
data = (long_long *)SCM_VELTS(v);
for (k = SCM_UVECTOR_LENGTH(v) - 1; k >= 0; k--)
res = scm_cons(scm_long_long2num(data[k]), res);
return res;
}
case scm_tc7_llvect:
{
long_long *data = (long_long *)SCM_VELTS(v);
for (k = SCM_UVECTOR_LENGTH(v) - 1; k >= 0; k--)
res = scm_cons(scm_long_long2num(data[k]), res);
return res;
}
#endif
case scm_tc7_fvect:
{
float *data = (float *) SCM_VELTS (v);