Diff for /gforth/string.fs between versions 1.3 and 1.12

version 1.3, 2000/09/23 15:06:02 version 1.12, 2010/12/31 18:09:02
Line 1 Line 1
 \ dynamic string handling                              10aug99py  \ dynamic string handling                              10aug99py
   
 \ Copyright (C) 2000 Free Software Foundation, Inc.  \ Copyright (C) 2000,2005,2007,2010 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., 675 Mass Ave, Cambridge, MA 02139, USA.  
   
 : delete   ( buffer size count -- )  : delete   ( buffer size count -- )
   over min >r  r@ - ( left over )  dup 0>    over min >r  r@ - ( left over )  dup 0>
   IF  2dup swap dup  r@ +  -rot swap move  THEN  + r> bl fill ;    IF  2dup swap dup  r@ +  -rot swap move  THEN  + r> bl fill ;
   
   [IFUNDEF] insert
 : insert   ( string length buffer size -- )  : insert   ( string length buffer size -- )
   rot over min >r  r@ - ( left over )    rot over min >r  r@ - ( left over )
   over dup r@ +  rot move   r> move  ;    over dup r@ +  rot move   r> move  ;
   [THEN]
   
 : $padding ( n -- n' )  : $padding ( n -- n' )
   [ 6 cells ] Literal + [ -4 cells ] Literal and ;    [ 6 cells ] Literal + [ -4 cells ] Literal and ;
Line 41 Line 42
 : $ins ( addr1 u addr2 off -- ) >r  : $ins ( addr1 u addr2 off -- ) >r
   2dup dup $@len rot + swap $!len  $@ 1+ r> /string insert ;    2dup dup $@len rot + swap $!len  $@ 1+ r> /string insert ;
 : $+! ( addr1 u addr2 -- ) dup $@len $ins ;  : $+! ( addr1 u addr2 -- ) dup $@len $ins ;
 : $off ( addr -- )  dup @ free throw off ;  : $off ( addr -- )  dup @ dup IF  free throw off  ELSE  2drop  THEN ;
   : $init ( addr -- )  >r r@ off s" " r> $! ;
   
 \ dynamic string handling                              12dec99py  \ dynamic string handling                              12dec99py
   
Line 49 Line 51
   >r 2dup r> scan dup >r dup IF  1 /string  THEN    >r 2dup r> scan dup >r dup IF  1 /string  THEN
   2swap r> - 2swap ;    2swap r> - 2swap ;
   
 : $iter ( .. $addr char xt -- .. ) { char xt }  : $iter ( .. $addr char xt -- .. ) >r >r
   $@ BEGIN  dup  WHILE  char $split >r >r xt execute r> r>    $@ BEGIN  dup  WHILE  r@ $split i' -rot >r >r execute r> r>
      REPEAT  2drop ;       REPEAT  2drop rdrop rdrop ;

Removed from v.1.3  
changed lines
  Added in v.1.12


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