| \ Marker creates a mark that is removed (including everything |
\ Marker creates a mark that is removed (including everything |
| \ defined afterwards) when executing the mark. |
\ defined afterwards) when executing the mark. |
| |
|
| : marker, ( -- mark ) here dup A, |
: included-files-mark ( -- u ) |
| voclink @ A, voclink |
included-files 2@ nip |
| BEGIN @ dup WHILE dup 0 wordlist-link - @ A, REPEAT drop |
blk @ 0= |
| |
if \ not input from blocks |
| |
source-id 1 -1 within |
| |
if \ input from file |
| |
1- \ do not include the last file (hopefully this is the |
| |
\ currently included file) |
| |
then |
| |
then ; |
| |
|
| |
\ hmm, most of the saving appears to be pretty unnecessary: we could |
| |
\ derive the wordlists and the words that have to be kept from the |
| |
\ saved value of dp value. - anton |
| |
|
| |
: marker, ( -- mark ) |
| |
here |
| |
included-files-mark , |
| |
dup A, \ here |
| |
voclink @ A, \ vocabulary list start |
| |
\ for all wordlists, remember wordlist-id (the linked list) |
| |
voclink |
| |
BEGIN |
| |
@ dup |
| |
WHILE |
| |
dup 0 wordlist-link - wordlist-id @ A, |
| |
REPEAT |
| |
drop |
| |
\ remember udp |
| udp @ , ; |
udp @ , ; |
| |
|
| : marker! ( mark -- ) |
: marker! ( mark -- ) |
| dup @ swap cell+ |
\ reset included files count; resize will happen on next add-included-file |
| |
included-files 2@ drop over @ included-files 2! cell+ |
| |
\ rest of marker! |
| |
dup @ swap cell+ ( here rest-of-marker ) |
| dup @ voclink ! cell+ |
dup @ voclink ! cell+ |
| |
\ restore wordlists to former words |
| voclink |
voclink |
| BEGIN |
BEGIN |
| @ dup |
@ dup |
| WHILE |
WHILE |
| over @ over 0 wordlist-link - ! |
over @ over 0 wordlist-link - wordlist-id ! |
| swap cell+ swap |
swap cell+ swap |
| REPEAT |
REPEAT |
| drop voclink |
drop |
| |
\ rehash wordlists to remove forgotten words |
| |
\ why don't we do this in a single step? - anton |
| |
voclink |
| BEGIN |
BEGIN |
| @ dup |
@ dup |
| WHILE |
WHILE |
| dup 0 wordlist-link - rehash |
dup 0 wordlist-link - rehash |
| REPEAT |
REPEAT |
| drop |
drop |
| |
\ restore udp and dp |
| @ udp ! dp ! |
@ udp ! dp ! |
| \ clean up vocabulary stack |
\ clean up vocabulary stack |
| 0 vp @ 0 |
0 vp @ 0 |