Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / openbios / forth / lib / split.fs
1 \ implements split-before, split-after and left-split 
2 \ as described in 4.3 (Path resolution)
3
4 \ delimeter returned in R-string
5 : split-before ( addr len delim -- addr-R len-R addr-L len-L ) 
6   0 rot dup >r 0 ?do
7     ( str char cnt R: len <sys> )
8     2 pick over + c@ 2 pick = if leave then
9     1+
10   loop
11   nip
12   2dup + r> 2 pick -
13   2swap
14 ;
15
16 \ delimeter returned in L-string
17 : split-after ( addr len delim -- addr-R len-R addr-L len-L ) 
18   over 1- rot dup >r 0 ?do
19     ( str char cnt R: len <sys> )
20     2 pick over + c@ 2 pick = if leave then
21     1-
22         loop
23   nip
24         dup 0 >= if 1+ else drop r@ then
25         2dup + r> 2 pick -
26   2swap
27 ;
28
29 \ delimiter not returned
30 : left-split ( addr len delim -- addr-R len-R addr-L len-L )
31   0 rot dup >r 0 ?do
32     ( str char cnt R: len <sys> )
33     2 pick i + c@ 2 pick = if leave then
34     1+
35   loop
36   nip
37   2dup + 1+ r> 2 pick -
38   dup if 1- then
39   2swap
40 ;
41
42 \ delimiter not returned [THIS FUNCTION IS NOT NEEDED]
43 : right-split ( addr len delim -- addr-R len-R addr-L len-L )
44         dup >r
45         split-after
46         dup if 2dup + 1-
47                 c@ r@ = if 1- then then
48         r> drop
49 ;