summaryrefslogtreecommitdiffstats
path: root/lib.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2018-11-27 23:19:49 -0800
committerKaz Kylheku <kaz@kylheku.com>2018-11-27 23:19:49 -0800
commit71f4c886ece16c2f8f1c52b86298cd348db37b8f (patch)
tree27ea1eb988b83b800e5f88a88efe96532425f18c /lib.c
parent38d30d7ce812bcccc5de475dd272eda9fb87e579 (diff)
downloadtxr-71f4c886ece16c2f8f1c52b86298cd348db37b8f.tar.gz
txr-71f4c886ece16c2f8f1c52b86298cd348db37b8f.tar.bz2
txr-71f4c886ece16c2f8f1c52b86298cd348db37b8f.zip
New range testing functions.
* eval.c (eval_init): Register in-range and in-range* intrinsics. * lib.c (in_range, in_range_star): New functions. * lib.h (in_range, in_range_star): Declared. * txr.1: Documented.
Diffstat (limited to 'lib.c')
-rw-r--r--lib.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/lib.c b/lib.c
index 5a4eb3ad..d06a71b1 100644
--- a/lib.c
+++ b/lib.c
@@ -10639,6 +10639,26 @@ val set_to(val range, val to)
return range;
}
+val in_range(val range, val num)
+{
+ type_check(lit("in-range"), range, RNG);
+ {
+ val from = range->rn.from;
+ val to = range->rn.to;
+ return and2(lequal(from, num), lequal(num, to));
+ }
+}
+
+val in_range_star(val range, val num)
+{
+ type_check(lit("in-range*"), range, RNG);
+ {
+ val from = range->rn.from;
+ val to = range->rn.to;
+ return and2(lequal(from, num), less(num, to));
+ }
+}
+
val env(void)
{
if (env_list) {