diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2022-01-28 07:42:10 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2022-01-28 07:42:10 -0800 |
commit | cc413849fc0b92fee3c33ffd16378ca6ffa1070d (patch) | |
tree | 1daeb8be5180accdf97323595f2bbb3b72674f5d /lib.c | |
parent | d18bf6605613cc0eb8038d1e42f5faac37510a1a (diff) | |
download | txr-cc413849fc0b92fee3c33ffd16378ca6ffa1070d.tar.gz txr-cc413849fc0b92fee3c33ffd16378ca6ffa1070d.tar.bz2 txr-cc413849fc0b92fee3c33ffd16378ca6ffa1070d.zip |
New function: copy-cptr.
* eval.c (eval_init): copy-cptr intrinsic registered.
* lib.c (copy_cptr): New function.
(copy): Use copy_cptr for CPTR objects.
* lib.h (copy_cptr): Declared.
* tests/017/ffi-misc.tl: New test cases.
* txr.1: Documented.
* stdlib/doc-syms.tl: Updated.
Diffstat (limited to 'lib.c')
-rw-r--r-- | lib.c | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -9779,6 +9779,12 @@ val cptr_cast(val to_type, val cptr) return cptr_typed(ptr, to_type, 0); } +val copy_cptr(val cptr) +{ + mem_t *ptr = cptr_handle(cptr, nil, lit("cptr-copy")); + return cptr_typed(ptr, cptr->cp.cls, 0); +} + val int_cptr(val cptr) { return num(coerce(cnum, cptr_handle(cptr, nil, lit("int-cptr")))); @@ -12185,6 +12191,8 @@ val copy(val seq) return copy_fun(seq); case TNOD: return copy_tnode(seq); + case CPTR: + return copy_cptr(seq); case COBJ: if (seq->co.cls == hash_cls) return copy_hash(seq); |