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

version 1.14, 2000/05/27 09:41:28 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 ! ;
   
 : also  ( -- ) \ search-ext  : also  ( -- ) \ search-ext
   \G Perform a @code{DUP} on the @var{wid} at the top of the search    \G Like @code{DUP} for the search order. Usually used before a
   \G order. Usually used prior to @code{Forth} etc.    \G vocabulary (e.g., @code{also Forth}); the combined effect is to push
   context @ push-order ;    \G the wordlist represented by the vocabulary on the search order.
     context @ >order ;
   
 : previous ( -- ) \ search-ext  : previous ( -- ) \ search-ext
   \G Perform a @code{DROP} on the @i{wid} at the top of the search    \G Drop the wordlist at the top of the search order.
   \G order, thereby removing the @i{wid} from the search order.  
   vp @ 1- dup 0= -50 and throw vp! ;    vp @ 1- dup 0= -50 and throw vp! ;
   
 \ vocabulary find                                      14may93py  \ vocabulary find                                      14may93py
Line 137  Vocabulary Forth ( -- ) \ gforthman- sea Line 155  Vocabulary Forth ( -- ) \ gforthman- sea
   
   
 Vocabulary Root ( -- ) \ gforth  Vocabulary Root ( -- ) \ gforth
   \G Add the vocabulary @code{Root} to the search order stack.    \G Add the root wordlist to the search order stack.  This vocabulary
   \G This vocabulary makes up the minimum search order and    \G makes up the minimum search order and contains only a
   \G contains these words: @code{order} @code{set-order}    \G search-order words.
   \G @code{forth-wordlist} @code{Forth} @code{words}  
   
 : Only ( -- ) \ search-ext  : Only ( -- ) \ search-ext
   \G Set the search order to the implementation-defined minimum search    \G Set the search order to the implementation-defined minimum search
Line 162  lookup ! \ our dictionary search order b Line 179  lookup ! \ our dictionary search order b
   
 : get-order  ( -- widn .. wid1 n ) \ search  : get-order  ( -- widn .. wid1 n ) \ search
   \G Copy the search order to the data stack. The current search order    \G Copy the search order to the data stack. The current search order
   \G has @i{n} entries, of which @i{wid1} represents the word list    \G has @i{n} entries, of which @i{wid1} represents the wordlist
   \G that is searched first (the word list at the top of the search    \G that is searched first (the word list at the top of the search
   \G order) and @i{widn} represents the word order that is searched    \G order) and @i{widn} represents the wordlist that is searched
   \G last.    \G last.
   vp @ 0 ?DO vp cell+ I cells + @ LOOP vp @ ;    vp @ 0 ?DO vp cell+ I cells + @ LOOP vp @ ;
   

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


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