summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ffi.c6
-rw-r--r--ffi.h1
-rw-r--r--txr.116
3 files changed, 23 insertions, 0 deletions
diff --git a/ffi.c b/ffi.c
index 591c0d16..9dc0bb3a 100644
--- a/ffi.c
+++ b/ffi.c
@@ -4313,6 +4313,11 @@ val make_carray(val type, mem_t *data, cnum nelem, val ref)
return obj;
}
+val carrayp(val obj)
+{
+ return tnil(typeof(obj) == carray_s);
+}
+
val carray_set_length(val carray, val nelem)
{
struct carray *scry = carray_struct_checked(carray);
@@ -4868,6 +4873,7 @@ void ffi_init(void)
reg_fun(intern(lit("ffi-in"), user_package), func_n4(ffi_in));
reg_fun(intern(lit("ffi-get"), user_package), func_n2(ffi_get));
reg_fun(intern(lit("ffi-out"), user_package), func_n4(ffi_out));
+ reg_fun(intern(lit("carrayp"), user_package), func_n1(carrayp));
reg_fun(intern(lit("carray-set-length"), user_package), func_n2(carray_set_length));
reg_fun(intern(lit("carray-dup"), user_package), func_n1(carray_dup));
reg_fun(intern(lit("carray-own"), user_package), func_n1(carray_own));
diff --git a/ffi.h b/ffi.h
index 773b0bfd..3995bb03 100644
--- a/ffi.h
+++ b/ffi.h
@@ -87,6 +87,7 @@ val ffi_in(val srcbuf, val obj, val type, val copy_p);
val ffi_get(val srcbuf, val type);
val ffi_out(val dstbuf, val obj, val type, val copy_p);
val make_carray(val type, mem_t *data, cnum nelem, val ref);
+val carrayp(val obj);
val carray_set_length(val carray, val nelem);
val carray_dup(val carray);
val carray_own(val carray);
diff --git a/txr.1 b/txr.1
index 08181daa..530bdba0 100644
--- a/txr.1
+++ b/txr.1
@@ -56267,6 +56267,22 @@ or
.metn list ,
and the extra element allocated to the foreign array is filled with zero bytes.
+.coNP Function @ carrayp
+.synb
+.mets (carrayp << object )
+.syne
+.desc
+The
+.code carrayp
+function returns
+.code t
+if
+.meta object
+is a
+.codn carray ,
+otherwise it returns
+.codn nil .
+
.coNP Function @ carray-blank
.synb
.mets (carray-blank < length << type )