[gforth] / gforth / hash.fs  

gforth: gforth/hash.fs

Diff for /gforth/hash.fs between version 1.30 and 1.38

version 1.30, Sat Dec 7 18:07:19 2002 UTC version 1.38, Sun Dec 6 23:00:03 2009 UTC
Line 1 
Line 1 
 \ Hashed dictionaries                                  15jul94py  \ Hashed dictionaries                                  15jul94py
   
 \ Copyright (C) 1995,1998,2000 Free Software Foundation, Inc.  \ Copyright (C) 1995,1998,2000,2003,2006,2007 Free Software Foundation, Inc.
   
 \ This file is part of Gforth.  \ This file is part of Gforth.
   
 \ Gforth is free software; you can redistribute it and/or  \ Gforth is free software; you can redistribute it and/or
 \ modify it under the terms of the GNU General Public License  \ modify it under the terms of the GNU General Public License
 \ as published by the Free Software Foundation; either version 2  \ as published by the Free Software Foundation, either version 3
 \ of the License, or (at your option) any later version.  \ of the License, or (at your option) any later version.
   
 \ This program is distributed in the hope that it will be useful,  \ This program is distributed in the hope that it will be useful,
Line 15 
Line 15 
 \ GNU General Public License for more details.  \ GNU General Public License for more details.
   
 \ 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, see http://www.gnu.org/licenses/.
 \ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.  
   
 [IFUNDEF] erase  [IFUNDEF] erase
 : erase ( addr len -- ) 0 fill ;  : erase ( addr len -- ) 0 fill ;
Line 193 
Line 192 
 \  REPEAT  drop  \  REPEAT  drop
 [ has? ec [IF] ] ." Done" cr [ [THEN] ] ;  [ has? ec [IF] ] ." Done" cr [ [THEN] ] ;
   
 ' hash-cold INIT8 chained  :noname ( -- )
       defers 'cold
       hash-cold
   ; is 'cold
   
 : .words  ( -- )  : .words  ( -- )
   base @ >r hex HashTable  Hashlen 0    base @ >r hex HashTable  Hashlen 0
Line 223 
Line 225 
 \ : chisq ( -- n )  \ : chisq ( -- n )
 \     \ n should have about the same size as Hashlen  \     \ n should have about the same size as Hashlen
 \     countwl Hashlen 2 pick */ swap - ;  \     countwl Hashlen 2 pick */ swap - ;
   
   \ Create hashhist here $100 cells dup allot erase
   
   \ : .hashhist ( -- )  hashhist $100 cells erase
   \     HashTable HashLen cells bounds
   \     DO  0 I  BEGIN  @ dup  WHILE  swap 1+ swap  REPEAT  drop
   \         1 swap cells hashhist + +!
   \     cell +LOOP
   \     0 0 $100 0 DO
   \         hashhist I cells + @ dup IF
   \       cr I 0 .r ." : " dup .  THEN tuck I * + >r + r>
   \     LOOP cr ." Total: " 0 .r ." /" . cr ;


Generate output suitable for use with a patch program
Legend:
Removed from v.1.30  
changed lines
  Added in v.1.38

CVS Admin

Powered by ViewCVS 1.0-dev
(Powered by ViewCVS)

ViewCVS and CVS Help