Add PRIVATIZE to history.fth
[pforth] / fth / private.fth
CommitLineData
8e9db35f
PB
1\ @(#) private.fth 98/01/26 1.2
2\ PRIVATIZE
3\
4\ Privatize words that are only needed within the file
5\ and do not need to be exported.
6\
7\ Usage:
8\ PRIVATE{
9\ : FOO ; \ Everything between PRIVATE{ and }PRIVATE will become private.
10\ : MOO ;
11\ }PRIVATE
12\ : GOO foo moo ; \ can use foo and moo
13\ PRIVATIZE \ smudge foo and moo
14\ ' foo \ will fail
15\
16\ Copyright 1996 Phil Burk
17\
18\ 19970701 PLB Use unsigned compares for machines with "negative" addresses.
19
20anew task-private.fth
21
22variable private-start
23variable private-stop
24$ 20 constant FLAG_SMUDGE
25
26: PRIVATE{
064f3eb0
PB
27 private-start @ 0= not abort" ERROR: Missing PRIVATIZE"
28 private-stop @ 0= not abort" ERROR: Missing PRIVATIZE"
8e9db35f
PB
29 latest private-start !
30 0 private-stop !
31;
064f3eb0 32
8e9db35f 33: }PRIVATE
064f3eb0 34 private-stop @ 0= not abort" ERROR: Extra }PRIVATE"
8e9db35f
PB
35 latest private-stop !
36;
064f3eb0 37
8e9db35f 38: PRIVATIZE ( -- , smudge all words between PRIVATE{ and }PRIVATE )
064f3eb0
PB
39 private-start @ 0= abort" ERROR: Missing PRIVATE{"
40 private-stop @ 0= abort" ERROR: Missing }PRIVATE"
8e9db35f
PB
41 private-stop @
42 BEGIN
43 dup private-start @ u> \ 19970701
44 WHILE
45\ ." Smudge " dup id. cr
46 dup c@ flag_smudge or over c!
47 prevname
48 REPEAT
49 drop
50 0 private-start !
51 0 private-stop !
52;