1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-11 14:21:10 +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 Bill Schottstaedt
Miroslav Silovic Miroslav Silovic
Dale P. Smith Dale P. Smith
Masao Uebayashi
Jacques A. Vidrine Jacques A. Vidrine
Brett Viren Brett Viren
William Webber 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> 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
* debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more * 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); res = scm_cons (SCM_BOOL(((long *) data)[k] & mask), res);
return res; return res;
} }
case scm_tc7_uvect: { case scm_tc7_byvect:
long *data = (long *)SCM_VELTS(v); {
for (k = SCM_UVECTOR_LENGTH(v) - 1; k >= 0; k--) signed char *data = (signed char *) SCM_VELTS (v);
res = scm_cons(scm_ulong2num(data[k]), res); scm_sizet k = SCM_UVECTOR_LENGTH (v);
return res; while (k != 0)
} res = scm_cons (SCM_MAKINUM (data[--k]), res);
case scm_tc7_ivect: { return res;
long *data = (long *)SCM_VELTS(v); }
for (k = SCM_UVECTOR_LENGTH(v) - 1; k >= 0; k--) case scm_tc7_uvect:
res = scm_cons(scm_long2num(data[k]), res); {
return res; long *data = (long *)SCM_VELTS(v);
} for (k = SCM_UVECTOR_LENGTH(v) - 1; k >= 0; k--)
case scm_tc7_svect: { res = scm_cons(scm_ulong2num(data[k]), res);
short *data; return res;
data = (short *)SCM_VELTS(v); }
for (k = SCM_UVECTOR_LENGTH(v) - 1; k >= 0; k--) case scm_tc7_ivect:
res = scm_cons(SCM_MAKINUM (data[k]), res); {
return res; 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 #ifdef HAVE_LONG_LONGS
case scm_tc7_llvect: { case scm_tc7_llvect:
long_long *data; {
data = (long_long *)SCM_VELTS(v); long_long *data = (long_long *)SCM_VELTS(v);
for (k = SCM_UVECTOR_LENGTH(v) - 1; k >= 0; k--) for (k = SCM_UVECTOR_LENGTH(v) - 1; k >= 0; k--)
res = scm_cons(scm_long_long2num(data[k]), res); res = scm_cons(scm_long_long2num(data[k]), res);
return res; return res;
} }
#endif #endif
case scm_tc7_fvect: case scm_tc7_fvect:
{ {
float *data = (float *) SCM_VELTS (v); float *data = (float *) SCM_VELTS (v);