relicense to 0BSD
[pforth] / fth / require.fth
CommitLineData
5a305613
HE
1\ REQUIRE and REQUIRED
2\
3\ This code is part of pForth.
4\
1f99f95d
S
5\ Permission to use, copy, modify, and/or distribute this
6\ software for any purpose with or without fee is hereby granted.
7\
8\ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
9\ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
10\ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
11\ THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
12\ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
13\ FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
14\ CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15\ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
5a305613
HE
16
17private{
18
19\ Has the file with name C-ADDR/U already been included?
20\
21\ This searches the "::::<filename>" marker created by INCLUDED. This
22\ works for now, but may break if pForth ever receives wordlists.
23: INCLUDED? ( c-addr u -- flag )
24 s" ::::" here place ( c-addr u )
25 here $append ( )
1139ec72 26 here find nip 0<> ( found? )
5a305613
HE
27;
28
29\ FIXME: use real PARSE-NAME when available
30: (PARSE-NAME) ( "word" -- c-addr u ) bl parse-word ;
31
32}private
33
34: REQUIRED ( i*x c-addr u -- j*x ) 2dup included? IF 2drop ELSE included THEN ;
35: REQUIRE ( i*x "name" -- i*x ) (parse-name) required ;
36
37privatize