summaryrefslogtreecommitdiffstats
path: root/lib.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2017-05-04 21:19:13 -0700
committerKaz Kylheku <kaz@kylheku.com>2017-05-04 21:19:13 -0700
commit7f841abd8218c68f8d69fe798b8d5e9d322b4de8 (patch)
tree0e334842c9c4e9f47b7c9f0174edd50e0c10c28b /lib.c
parent33c229bbbbf75ab8b3f048579eb2b7a63acaae7d (diff)
downloadtxr-7f841abd8218c68f8d69fe798b8d5e9d322b4de8.tar.gz
txr-7f841abd8218c68f8d69fe798b8d5e9d322b4de8.tar.bz2
txr-7f841abd8218c68f8d69fe798b8d5e9d322b4de8.zip
ffi: map (array n bchar) to Lisp string.
* ffi.c (struct txr_ffi_type): New bitfield flag, bchar_conv. (ffi_array_in, ffi_array_get): Handle bchar_conv. (ffi_type_compile): Set bchar_conv flag for array of bchar. * lib.c (string_8bit_size): New function. * lib.h (string_8bit_size): Declared.
Diffstat (limited to 'lib.c')
-rw-r--r--lib.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/lib.c b/lib.c
index 86485e3c..95a93c01 100644
--- a/lib.c
+++ b/lib.c
@@ -3300,6 +3300,15 @@ val string_8bit(const unsigned char *str)
return string_own(wstr);
}
+val string_8bit_size(const unsigned char *str, size_t sz)
+{
+ size_t i;
+ wchar_t *wstr = chk_wmalloc(sz);
+ for (i = 0; i < sz; i++)
+ wstr[i] = str[i];
+ return string_own(wstr);
+}
+
val mkstring(val len, val ch)
{
size_t l = c_num(len);