diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2025-04-07 20:28:00 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2025-04-07 20:28:00 -0700 |
commit | 94ea00c7ea8f64b464d9af7e6a89069b564ef18e (patch) | |
tree | 3a4287b9a0425eaeefae018970296610d50d3b98 | |
parent | ee37e03ec9f91e0938c4bc4eb6d03156f75c7405 (diff) | |
download | txr-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.c | 2 | ||||
-rw-r--r-- | stdlib/defset.tl | 8 | ||||
-rw-r--r-- | stdlib/place.tl | 8 |
3 files changed, 9 insertions, 9 deletions
@@ -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 |