Diff for /gforth/search.fs between versions 1.15 and 1.19

version 1.15, 2000/08/16 09:26:52 version 1.19, 2002/01/05 17:42:30
Line 1 Line 1
 \ search order wordset                                 14may93py  \ search order wordset                                 14may93py
   
 \ Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc.  \ Copyright (C) 1995,1996,1997,1998,2000 Free Software Foundation, Inc.
   
 \ This file is part of Gforth.  \ This file is part of Gforth.
   
Line 16 Line 16
   
 \ You should have received a copy of the GNU General Public License  \ You should have received a copy of the GNU General Public License
 \ along with this program; if not, write to the Free Software  \ along with this program; if not, write to the Free Software
 \ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  \ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
   
 $10 constant maxvp  $10 value maxvp                 \ current size of search order stack
 Variable vp  $400 constant maxvp-limit       \ upper limit for resizing search order stack
   0 A, 0 A,  0 A, 0 A,   0 A, 0 A,   0 A, 0 A,   Variable static-vp
   0 A, 0 A,  0 A, 0 A,   0 A, 0 A,   0 A, 0 A,     0 A, 0 A,  0 A, 0 A,   0 A, 0 A,   0 A, 0 A, 
     0 A, 0 A,  0 A, 0 A,   0 A, 0 A,   0 A, 0 A,
   0 Value vp
   static-vp ' vp >body A!
   
 : get-current  ( -- wid ) \ search  : get-current  ( -- wid ) \ search
   \G @i{wid} is the identifier of the current compilation word list.    \G @i{wid} is the identifier of the current compilation word list.
Line 71  Variable slowvoc   0 slowvoc ! Line 74  Variable slowvoc   0 slowvoc !
   Create wordlist drop  DOES> context ! ;    Create wordlist drop  DOES> context ! ;
   
 : check-maxvp ( n -- )  : check-maxvp ( n -- )
     maxvp > -49 and throw ;     dup maxvp-limit > -49 and throw
      dup maxvp > IF
         vp static-vp = -49 and throw
         BEGIN  dup  maxvp 2* dup TO maxvp  > 0= UNTIL
         vp  maxvp 1+ cells resize throw TO vp
      THEN drop ;
   
   : init-vp  ( n -- )
      $10 TO maxvp
      maxvp 1+ cells allocate throw TO vp
      static-vp dup @ 1+ cells  vp swap move ;
   
   :noname
      DEFERS 'cold
      init-vp ;
   IS 'cold
   
 : push-order ( wid -- ) \ gforth  : >order ( wid -- ) \ gforth to-order
     \g Push @var{wid} on the search order.      \g Push @var{wid} on the search order.
     vp @ 1+ dup check-maxvp vp! context ! ;      vp @ 1+ dup check-maxvp vp! context ! ;
   
Line 81  Variable slowvoc   0 slowvoc ! Line 99  Variable slowvoc   0 slowvoc !
   \G Like @code{DUP} for the search order. Usually used before a    \G Like @code{DUP} for the search order. Usually used before a
   \G vocabulary (e.g., @code{also Forth}); the combined effect is to push    \G vocabulary (e.g., @code{also Forth}); the combined effect is to push
   \G the wordlist represented by the vocabulary on the search order.    \G the wordlist represented by the vocabulary on the search order.
   context @ push-order ;    context @ >order ;
   
 : previous ( -- ) \ search-ext  : previous ( -- ) \ search-ext
   \G Drop the wordlist at the top of the search order.    \G Drop the wordlist at the top of the search order.

Removed from v.1.15  
changed lines
  Added in v.1.19


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>