1\ 2\ This file and its contents are supplied under the terms of the 3\ Common Development and Distribution License ("CDDL"), version 1.0. 4\ You may only use this file in accordance with the terms of version 5\ 1.0 of the CDDL. 6\ 7\ A full copy of the text of the CDDL should have accompanied this 8\ source. A copy of the CDDL is also available via the Internet at 9\ http://www.illumos.org/license/CDDL. 10 11\ Copyright 2016 Toomas Soome <tsoome@me.com> 12 13\ This file is part of the softcore, implementing [partial] word sets. 14 15\ Optional String word set. 16\ compare is implemented in ficl core. 17 18\ search ( c-addr1 u1 c-addr2 u2 -- c-addr3 u3 flag ) 19\ Search the string specified by c-addr1 u1 for the string specified by 20\ c-addr2 u2. If flag is true, a match was found at c-addr3 with u3 characters 21\ remaining. If flag is false there was no match and c-addr3 is c-addr1 and u3 22\ is u1. 23: search { c-addr1 u1 c-addr2 u2 | saved-addr1 saved-u1 -- c-addr3 u3 flag } 24 c-addr1 to saved-addr1 \ save original c-addr1 25 u1 to saved-u1 \ save original u1 26 begin 27 c-addr1 u1 u2 < if u1 else u2 then 28 c-addr2 u2 compare 29 while 30 c-addr1 1+ to c-addr1 31 u1 1- to u1 32 u1 0= if 33 saved-addr1 saved-u1 0 exit \ not found 34 then 35 repeat 36 c-addr1 u1 -1 37; 38