summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2017-06-11 08:33:20 -0700
committerKaz Kylheku <kaz@kylheku.com>2017-06-11 08:33:20 -0700
commit05e9ac4bd7a26c6c5b5979efca64260f7d38970c (patch)
tree5065e4e82561ea4e28337dcb2dd6c0f0a7b04cc7
parent0f1ea0a977d6d0306164857352d819cf081eabda (diff)
downloadtxr-05e9ac4bd7a26c6c5b5979efca64260f7d38970c.tar.gz
txr-05e9ac4bd7a26c6c5b5979efca64260f7d38970c.tar.bz2
txr-05e9ac4bd7a26c6c5b5979efca64260f7d38970c.zip
buf: support ref, refset and indexing.
* lib.c (generic_funcall, ref, refset): Handle BUF.
-rw-r--r--lib.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib.c b/lib.c
index 56cbf4ae..95016a33 100644
--- a/lib.c
+++ b/lib.c
@@ -5864,6 +5864,7 @@ val generic_funcall(val fun, struct args *args_in)
case STR:
case LIT:
case LSTR:
+ case BUF:
carray:
bug_unless (args->argc >= ARGS_MIN);
args_normalize(args, 3);
@@ -9212,6 +9213,8 @@ val ref(val seq, val ind)
return chr_str(seq, ind);
case VEC:
return vecref(seq, ind);
+ case BUF:
+ return buf_get_uchar(seq, ind);
default:
type_mismatch(lit("ref: ~s is not a sequence"), seq, nao);
}
@@ -9230,6 +9233,8 @@ val refset(val seq, val ind, val newval)
return chr_str_set(seq, ind, newval);
case VEC:
return set(vecref_l(seq, ind), newval);
+ case BUF:
+ return buf_put_uchar(seq, ind, newval);
case COBJ:
if (seq->co.cls == hash_s)
return sethash(seq, ind, newval);