mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-12 14:50:19 +02:00
* unif.c (scm_array_set_x): Cast ICHR (obj) to char if storing in
a scm_tc7_byvect. * ramap.c (scm_ra_matchp, scm_ra_matchp, scm_array_fill_int, racp, scm_array_index_map_x, raeql_1, scm_array_equal_p): Completed support for byte vectors.
This commit is contained in:
parent
9fbaf27ccb
commit
b1d24656ea
2 changed files with 17 additions and 1 deletions
|
@ -160,6 +160,7 @@ scm_ra_matchp (ra0, ras)
|
||||||
return 0;
|
return 0;
|
||||||
case scm_tc7_vector:
|
case scm_tc7_vector:
|
||||||
case scm_tc7_string:
|
case scm_tc7_string:
|
||||||
|
case scm_tc7_byvect:
|
||||||
case scm_tc7_bvect:
|
case scm_tc7_bvect:
|
||||||
case scm_tc7_uvect:
|
case scm_tc7_uvect:
|
||||||
case scm_tc7_ivect:
|
case scm_tc7_ivect:
|
||||||
|
@ -191,6 +192,7 @@ scm_ra_matchp (ra0, ras)
|
||||||
return 0;
|
return 0;
|
||||||
case scm_tc7_vector:
|
case scm_tc7_vector:
|
||||||
case scm_tc7_string:
|
case scm_tc7_string:
|
||||||
|
case scm_tc7_byvect:
|
||||||
case scm_tc7_bvect:
|
case scm_tc7_bvect:
|
||||||
case scm_tc7_uvect:
|
case scm_tc7_uvect:
|
||||||
case scm_tc7_ivect:
|
case scm_tc7_ivect:
|
||||||
|
@ -435,6 +437,15 @@ scm_array_fill_int (ra, fill, ignore)
|
||||||
for (i = base; n--; i += inc)
|
for (i = base; n--; i += inc)
|
||||||
SCM_CHARS (ra)[i] = SCM_ICHR (fill);
|
SCM_CHARS (ra)[i] = SCM_ICHR (fill);
|
||||||
break;
|
break;
|
||||||
|
case scm_tc7_byvect:
|
||||||
|
if (SCM_ICHRP (fill))
|
||||||
|
fill = SCM_MAKINUM ((char) SCM_ICHR (fill));
|
||||||
|
SCM_ASRTGO (SCM_INUMP (fill)
|
||||||
|
&& -128 <= SCM_INUM (fill) && SCM_INUM (fill) < 128,
|
||||||
|
badarg2);
|
||||||
|
for (i = base; n--; i += inc)
|
||||||
|
SCM_CHARS (ra)[i] = SCM_INUM (fill);
|
||||||
|
break;
|
||||||
case scm_tc7_bvect:
|
case scm_tc7_bvect:
|
||||||
{
|
{
|
||||||
long *ve = (long *) SCM_VELTS (ra);
|
long *ve = (long *) SCM_VELTS (ra);
|
||||||
|
@ -552,6 +563,7 @@ racp (src, dst)
|
||||||
scm_array_set_x (dst, scm_cvref (src, i_s, SCM_UNDEFINED), SCM_MAKINUM (i_d));
|
scm_array_set_x (dst, scm_cvref (src, i_s, SCM_UNDEFINED), SCM_MAKINUM (i_d));
|
||||||
break;
|
break;
|
||||||
case scm_tc7_string:
|
case scm_tc7_string:
|
||||||
|
case scm_tc7_byvect:
|
||||||
if (scm_tc7_string != SCM_TYP7 (dst))
|
if (scm_tc7_string != SCM_TYP7 (dst))
|
||||||
goto gencase;
|
goto gencase;
|
||||||
for (; n-- > 0; i_s += inc_s, i_d += inc_d)
|
for (; n-- > 0; i_s += inc_s, i_d += inc_d)
|
||||||
|
@ -1816,6 +1828,7 @@ scm_array_index_map_x (ra, proc)
|
||||||
return SCM_UNSPECIFIED;
|
return SCM_UNSPECIFIED;
|
||||||
}
|
}
|
||||||
case scm_tc7_string:
|
case scm_tc7_string:
|
||||||
|
case scm_tc7_byvect:
|
||||||
case scm_tc7_bvect:
|
case scm_tc7_bvect:
|
||||||
case scm_tc7_uvect:
|
case scm_tc7_uvect:
|
||||||
case scm_tc7_ivect:
|
case scm_tc7_ivect:
|
||||||
|
@ -1915,6 +1928,7 @@ raeql_1 (ra0, as_equal, ra1)
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
case scm_tc7_string:
|
case scm_tc7_string:
|
||||||
|
case scm_tc7_byvect:
|
||||||
{
|
{
|
||||||
char *v0 = SCM_CHARS (ra0) + i0;
|
char *v0 = SCM_CHARS (ra0) + i0;
|
||||||
char *v1 = SCM_CHARS (ra1) + i1;
|
char *v1 = SCM_CHARS (ra1) + i1;
|
||||||
|
@ -2067,6 +2081,7 @@ scm_array_equal_p (ra0, ra1)
|
||||||
goto callequal;
|
goto callequal;
|
||||||
case scm_tc7_bvect:
|
case scm_tc7_bvect:
|
||||||
case scm_tc7_string:
|
case scm_tc7_string:
|
||||||
|
case scm_tc7_byvect:
|
||||||
case scm_tc7_uvect:
|
case scm_tc7_uvect:
|
||||||
case scm_tc7_ivect:
|
case scm_tc7_ivect:
|
||||||
case scm_tc7_fvect:
|
case scm_tc7_fvect:
|
||||||
|
@ -2085,6 +2100,7 @@ scm_array_equal_p (ra0, ra1)
|
||||||
goto callequal;
|
goto callequal;
|
||||||
case scm_tc7_bvect:
|
case scm_tc7_bvect:
|
||||||
case scm_tc7_string:
|
case scm_tc7_string:
|
||||||
|
case scm_tc7_byvect:
|
||||||
case scm_tc7_uvect:
|
case scm_tc7_uvect:
|
||||||
case scm_tc7_ivect:
|
case scm_tc7_ivect:
|
||||||
case scm_tc7_fvect:
|
case scm_tc7_fvect:
|
||||||
|
|
|
@ -1284,7 +1284,7 @@ scm_array_set_x (v, obj, args)
|
||||||
break;
|
break;
|
||||||
case scm_tc7_byvect:
|
case scm_tc7_byvect:
|
||||||
if (SCM_ICHRP (obj))
|
if (SCM_ICHRP (obj))
|
||||||
obj = SCM_MAKINUM (SCM_ICHR (obj));
|
obj = SCM_MAKINUM ((char) SCM_ICHR (obj));
|
||||||
SCM_ASRTGO (SCM_INUMP (obj), badobj);
|
SCM_ASRTGO (SCM_INUMP (obj), badobj);
|
||||||
((char *)SCM_CHARS (v))[pos] = SCM_INUM (obj);
|
((char *)SCM_CHARS (v))[pos] = SCM_INUM (obj);
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue