-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathutils.fs
47 lines (39 loc) · 1 KB
/
utils.fs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
\ RilouwShell 0.1.0
\ Copyright (c) 2019 Jerome Martin
\ Released under the terms of the GNU GPL version 3
\ http://rilouw.eu/project/rilouwshell
: 3dup ( a b c -- a b c a b c )
2 pick 2 pick 2 pick
;
: log ( x -- x ) dup . cr ;
: terminate-str ( str len -- str ) over + 1- 0 swap c! ;
: ?error ( f str len -- ) rot if type cr bye else 2drop then ;
: point-in-rect? { xr yr wr hr x y -- b }
x xr >
x xr wr + < and
y yr >
y yr hr + < and
and
;
: array-len ( array -- len ) @ ;
: array-addr ( array -- addr ) cell+ ;
: array@ ( n array -- element )
2dup array-len >= abort" array overflow"
array-addr swap cells + @
;
: make-array ( len -- array )
dup 1+ cells here swap allot
tuck ! \ save length
;
: array-limits ( array -- limit start )
dup array-len swap array-addr ( len addr )
tuck swap cells + swap
;
: read-array ( ...element len array -- )
array-addr tuck swap cells + swap
do i ! cell +loop
;
: rev-read-array ( ...element len array -- )
tuck swap cells +
do i ! cell -loop
;