mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-12 06:41:13 +02:00
(gh_chars2byvect): Reimplemented with scm_make_s8vector.
(gh_scm2chars): Handle s8vectors, removed code for scm_tc7_byvect.
This commit is contained in:
parent
d315ee57b4
commit
2a7bd73833
1 changed files with 18 additions and 10 deletions
|
@ -133,9 +133,10 @@ makvect (char *m, size_t len, int type)
|
||||||
SCM
|
SCM
|
||||||
gh_chars2byvect (const char *d, long n)
|
gh_chars2byvect (const char *d, long n)
|
||||||
{
|
{
|
||||||
char *m = scm_gc_malloc (n * sizeof (char), "vector");
|
SCM uvec = scm_make_s8vector (scm_from_long (n), SCM_UNDEFINED);
|
||||||
|
char *m = scm_s8vector_elements (uvec);
|
||||||
memcpy (m, d, n * sizeof (char));
|
memcpy (m, d, n * sizeof (char));
|
||||||
return makvect (m, n, scm_tc7_byvect);
|
return uvec;
|
||||||
}
|
}
|
||||||
|
|
||||||
SCM
|
SCM
|
||||||
|
@ -250,14 +251,20 @@ gh_scm2chars (SCM obj, char *m)
|
||||||
m[i] = SCM_I_INUM (SCM_VELTS (obj)[i]);
|
m[i] = SCM_I_INUM (SCM_VELTS (obj)[i]);
|
||||||
break;
|
break;
|
||||||
#if SCM_HAVE_ARRAYS
|
#if SCM_HAVE_ARRAYS
|
||||||
case scm_tc7_byvect:
|
case scm_tc7_smob:
|
||||||
n = SCM_UVECTOR_LENGTH (obj);
|
if (scm_is_true (scm_s8vector_p (obj)))
|
||||||
if (m == 0)
|
{
|
||||||
m = (char *) malloc (n * sizeof (char));
|
n = scm_to_long (scm_s8vector_length (obj));
|
||||||
if (m == NULL)
|
if (m == 0)
|
||||||
return NULL;
|
m = (char *) malloc (n * sizeof (char));
|
||||||
memcpy (m, SCM_VELTS (obj), n * sizeof (char));
|
if (m == NULL)
|
||||||
break;
|
return NULL;
|
||||||
|
memcpy (m, scm_s8vector_elements (obj), n * sizeof (char));
|
||||||
|
scm_remember_upto_here_1 (obj);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
goto wrong_type;
|
||||||
#endif
|
#endif
|
||||||
case scm_tc7_string:
|
case scm_tc7_string:
|
||||||
n = scm_i_string_length (obj);
|
n = scm_i_string_length (obj);
|
||||||
|
@ -268,6 +275,7 @@ gh_scm2chars (SCM obj, char *m)
|
||||||
memcpy (m, scm_i_string_chars (obj), n * sizeof (char));
|
memcpy (m, scm_i_string_chars (obj), n * sizeof (char));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
wrong_type:
|
||||||
scm_wrong_type_arg (0, 0, obj);
|
scm_wrong_type_arg (0, 0, obj);
|
||||||
}
|
}
|
||||||
return m;
|
return m;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue