Diff for /gforth/string.fs between versions 1.16 and 1.18

version 1.16, 2012/08/17 22:24:27 version 1.18, 2012/09/17 18:46:46
Line 85 Line 85
   
 \ string array words  \ string array words
   
 : $[] { n addr -- addr' }  : $[] ( n addr -- addr' ) >r
     addr @ 0= IF  s" " addr $!  THEN      r@ @ 0= IF  s" " r@ $!  THEN
     addr $@ n cells /string      r@ $@ 2 pick cells /string
     dup cell < IF      dup cell < IF
         2drop addr $@len          2drop r@ $@len
         n 1+ cells addr $!len          over 1+ cells r@ $!len
         addr $@ rot /string erase          r@ $@ rot /string 0 fill
         addr $@ n cells /string          r@ $@ 2 pick cells /string
     THEN  drop ;      THEN  drop nip rdrop ;
   
 : $[]! ( addr u n $addr -- )  $[] $! ;  : $[]! ( addr u n $addr -- )  $[] $! ;
 : $[]+! ( addr u n $addr -- )  $[] $+! ;  : $[]+! ( addr u n $addr -- )  $[] $+! ;
 : $[]@ ( n $addr -- addr u )  $[] dup @ IF $@ ELSE drop s" " THEN ;  : $[]@ ( n $addr -- addr u )  $[] dup @ IF $@ ELSE drop s" " THEN ;
   
 : $over { addr u $addr off -- }  : $over ( addr u $addr off -- )
     \G overwrite string at offset off with addr u      \G overwrite string at offset off with addr u
     $addr @ 0= IF  s" " $addr $!  THEN      swap >r
     $addr $@len u off + < IF      r@ @ 0= IF  s" " r@ $!  THEN
         $addr $@len dup      2dup + r@ $@len > IF
         u off + max $addr $!len          2dup + r@ $@len tuck max r@ $!len
         $addr $@ rot /string bl fill          r@ $@ rot /string bl fill
     THEN      THEN
     addr $addr $@ off /string u min move ;      r> $@ rot /string rot umin move ;
 [THEN]  [THEN]
   

Removed from v.1.16  
changed lines
  Added in v.1.18


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