summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2025-04-07 20:28:00 -0700
committerKaz Kylheku <kaz@kylheku.com>2025-04-07 20:28:00 -0700
commit94ea00c7ea8f64b464d9af7e6a89069b564ef18e (patch)
tree3a4287b9a0425eaeefae018970296610d50d3b98
parentee37e03ec9f91e0938c4bc4eb6d03156f75c7405 (diff)
downloadtxr-94ea00c7ea8f64b464d9af7e6a89069b564ef18e.tar.gz
txr-94ea00c7ea8f64b464d9af7e6a89069b564ef18e.tar.bz2
txr-94ea00c7ea8f64b464d9af7e6a89069b564ef18e.zip
place: move set-mask, get-mask out of defset.
* autoload.c (place_set_entries, defset_set_entries): Move the set-mask and clear-mask symbols from def_set_entries to place_set_entries. * stdlib/defset.tl (set-mask, clear-mask): Functions removed from here. * stdlib/place.tl (set-mask, clear-mask): Functions moved here.
-rw-r--r--autoload.c2
-rw-r--r--stdlib/defset.tl8
-rw-r--r--stdlib/place.tl8
3 files changed, 9 insertions, 9 deletions
diff --git a/autoload.c b/autoload.c
index ebc0fb28..b666e386 100644
--- a/autoload.c
+++ b/autoload.c
@@ -102,6 +102,7 @@ static val place_set_entries(val fun)
lit("with-delete-expander"),
lit("set"), lit("pset"), lit("zap"), lit("flip"), lit("inc"), lit("dec"),
lit("pinc"), lit("pdec"),
+ lit("set-mask"), lit("clear-mask"),
lit("push"), lit("pop"), lit("swap"), lit("shift"), lit("rotate"),
lit("test-set"), lit("test-clear"), lit("compare-swap"),
lit("test-inc"), lit("test-dec"),
@@ -750,7 +751,6 @@ static val defset_set_entries(val fun)
val name[] = {
lit("defset"), lit("sub-list"), lit("sub-vec"), lit("sub-str"),
lit("left"), lit("right"), lit("key"),
- lit("set-mask"), lit("clear-mask"),
nil
};
autoload_set(al_fun, name, fun);
diff --git a/stdlib/defset.tl b/stdlib/defset.tl
index 634f9371..489bbd57 100644
--- a/stdlib/defset.tl
+++ b/stdlib/defset.tl
@@ -130,11 +130,3 @@
(defset key (node) nkey
^(progn (set-key ,node ,nkey) ,nkey))
-
-(defmacro set-mask (:env env place . integers)
- (with-update-expander (getter setter) place env
- ^(,setter (logior (,getter) ,*integers))))
-
-(defmacro clear-mask (:env env place . integers)
- (with-update-expander (getter setter) place env
- ^(,setter (logand (,getter) (lognot (logior ,*integers))))))
diff --git a/stdlib/place.tl b/stdlib/place.tl
index ae8b5b5d..993dd75c 100644
--- a/stdlib/place.tl
+++ b/stdlib/place.tl
@@ -275,6 +275,14 @@
(3 ^(let ((,oldval (,getter))) (,setter (pppred ,oldval)) ,oldval))
(t ^(let ((,oldval (,getter))) (,setter (- ,oldval, delta)) ,oldval))))))
+(defmacro set-mask (:env env place . integers)
+ (with-update-expander (getter setter) place env
+ ^(,setter (logior (,getter) ,*integers))))
+
+(defmacro clear-mask (:env env place . integers)
+ (with-update-expander (getter setter) place env
+ ^(,setter (logand (,getter) (lognot (logior ,*integers))))))
+
(defmacro swap (place-0 place-1 :env env)
(with-gensyms (tmp)
(with-update-expander (getter-0 setter-0) place-0 env