summaryrefslogtreecommitdiffstats
path: root/lib.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2011-12-14 07:56:27 -0800
committerKaz Kylheku <kaz@kylheku.com>2011-12-14 07:56:27 -0800
commit02d5a8ff16d1aa82fab7b861788886c08e81f268 (patch)
treef1e77fa609be98d0a9dda84005e20ef75d14fc82 /lib.c
parenta86f247ea2a92a2b67b58eb7b5b7bc7f592d1773 (diff)
downloadtxr-02d5a8ff16d1aa82fab7b861788886c08e81f268.tar.gz
txr-02d5a8ff16d1aa82fab7b861788886c08e81f268.tar.bz2
txr-02d5a8ff16d1aa82fab7b861788886c08e81f268.zip
* arith.c (plus, minus, gt, lt, ge, le): Handle character operands.
* eval.c (eval_init): New functions interned. * lib.c (num_chr, chr_num): New functions. * lib.h (num_chr, chr_num): Declared. * txr.1: Documentation stubs.
Diffstat (limited to 'lib.c')
-rw-r--r--lib.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/lib.c b/lib.c
index 0062ac94..64cf66eb 100644
--- a/lib.c
+++ b/lib.c
@@ -1488,6 +1488,20 @@ val chr_tolower(val ch)
return chr(towlower(c_chr(ch)));
}
+val num_chr(val ch)
+{
+ return num_fast(c_chr(ch));
+}
+
+val chr_num(val num)
+{
+ cnum n = c_num(num);
+ if (n < 0 || n > 0x10FFFF)
+ uw_throwf(numeric_error_s,
+ lit("chr-num: ~s is out of character range"), num, nao);
+ return chr(n);
+}
+
val chr_str(val str, val index)
{
bug_unless (length_str_gt(str, index));