1 \ @(#) strings.fth 98/01/26 1.2
2 \ String support for PForth
4 \ Copyright Phil Burk 1994
8 : -TRAILING ( c-addr u1 -- c-addr u2 , strip trailing blanks )
12 2dup 1- chars + c@ bl =
20 \ Structure of string table
22 CREATE ( #strings #chars_max -- )
25 DOES> ( index -- $addr )
31 : $= ( $1 $2 -- flag , true if equal )
36 IF rot drop 0 -rot LEAVE
42 : TEXT= ( addr1 addr2 count -- flag )
47 IF rot drop 0 -rot LEAVE
53 : TEXT=? ( addr1 count addr2 -- flag , for JForth compatibility )
57 : $MATCH? ( $string1 $string2 -- flag , case INsensitive )
62 : INDEX ( $string char -- false | address_char true , search for char in string )
67 over i + rot rot LEAVE
74 : $APPEND.CHAR ( $string char -- ) \ ugly stack diagram
79 \ ----------------------------------------------
80 : ($ROM) ( index address -- $string )
83 ?DO dup c@ 1+ + aligned
87 : $ROM ( packed array of strings, unalterable )
89 DOES> ( index -- $string ) ($rom)
92 : TEXTROM ( packed array of strings, unalterable )
94 DOES> ( index -- address count ) ($rom) count
97 \ -----------------------------------------------