--- gforth/glocals.fs 2001/09/16 10:20:39 1.47 +++ gforth/glocals.fs 2003/03/22 10:04:07 1.53 @@ -1,6 +1,6 @@ \ A powerful locals implementation -\ Copyright (C) 1995,1996,1997,1998,2000 Free Software Foundation, Inc. +\ Copyright (C) 1995,1996,1997,1998,2000,2003 Free Software Foundation, Inc. \ This file is part of Gforth. @@ -349,10 +349,10 @@ new-locals-map mappedwordlist Constant n variable old-dpp \ and now, finally, the user interface words -: { ( -- lastxt wid 0 ) \ gforth open-brace +: { ( -- latestxt wid 0 ) \ gforth open-brace dp old-dpp ! locals-dp dpp ! - lastxt get-current + latestxt get-current get-order new-locals-wl swap 1+ set-order also locals definitions locals-types 0 TO locals-wordlist @@ -360,7 +360,7 @@ variable old-dpp locals-types definitions -: } ( lastxt wid 0 a-addr1 xt1 ... -- ) \ gforth close-brace +: } ( latestxt wid 0 a-addr1 xt1 ... -- ) \ gforth close-brace \ ends locals definitions ] old-dpp @ dpp ! begin @@ -489,7 +489,7 @@ forth definitions : locals-:-hook ( sys -- sys addr xt n ) \ addr is the nfa of the defined word, xt its xt DEFERS :-hook - last @ lastcfa @ + latest latestxt clear-leave-stack 0 locals-size ! locals-buffer locals-dp ! @@ -633,9 +633,10 @@ forth definitions endif ; : >definer ( xt -- definer ) - \ this gives a unique identifier for the way the xt was defined - \ words defined with different does>-codes have different definers - \ the definer can be used for comparison and in definer! + \G @var{Definer} is a unique identifier for the way the @var{xt} + \G was defined. Words defined with different @code{does>}-codes + \G have different definers. The definer can be used for + \G comparison and in @code{definer!}. dup >does-code ?dup-if nip 1 or @@ -644,7 +645,8 @@ forth definitions then ; : definer! ( definer xt -- ) - \ gives the word represented by xt the behaviour associated with definer + \G The word represented by @var{xt} changes its behaviour to the + \G behaviour associated with @var{definer}. over 1 and if swap [ 1 invert ] literal and does-code! else @@ -683,7 +685,7 @@ interpret/compile: TO ( c|w|d|r "name" - \ don't use 'locals|'! use '{'! A portable and free '{' \ implementation is compat/anslocals.fs BEGIN - name 2dup s" |" compare 0<> + name 2dup s" |" str= 0= WHILE (local) REPEAT