version 1.8, 1999/05/17 14:55:50
|
version 1.11, 2000/08/17 12:46:59
|
Line 29 create image-included-files 1 , A, ( po
|
Line 29 create image-included-files 1 , A, ( po
|
\ included-files points to ALLOCATEd space, while image-included-files |
\ included-files points to ALLOCATEd space, while image-included-files |
\ points to ALLOTed objects, so it survives a save-system |
\ points to ALLOTed objects, so it survives a save-system |
|
|
: loadfilename ( -- a-addr ) |
: loadfilename ( -- a-addr ) \ gforth-internal |
\G a-addr 2@ produces the current file name ( c-addr u ) |
\G @i{a-addr} @code{2@@} produces the current file name ( @i{c-addr u} ) |
included-files 2@ loadfilename# @ min 2* cells + ; |
included-files 2@ loadfilename# @ min 2* cells + ; |
|
|
: sourcefilename ( -- c-addr u ) \ gforth |
: sourcefilename ( -- c-addr u ) \ gforth |
\G The name of the source file which is currently the input |
\G The name of the source file which is currently the input |
\G source. The result is valid only while the file is being |
\G source. The result is valid only while the file is being |
\G loaded. If the current input source is no (stream) file, the |
\G loaded. If the current input source is no (stream) file, the |
\G result is undefined. |
\G result is undefined. In Gforth, the result is valid during the |
|
\G whole seesion (but not across @code{savesystem} etc.). |
loadfilename 2@ ; |
loadfilename 2@ ; |
|
|
: sourceline# ( -- u ) \ gforth sourceline-number |
: sourceline# ( -- u ) \ gforth sourceline-number |
Line 47 create image-included-files 1 , A, ( po
|
Line 48 create image-included-files 1 , A, ( po
|
\G undefined. |
\G undefined. |
loadline @ ; |
loadline @ ; |
|
|
: init-included-files ( -- ) \ gforth |
: init-included-files ( -- ) \ gforth-internal |
\G Clear the list of earlier included files. |
|
image-included-files 2@ 2* cells save-mem drop ( addr ) |
image-included-files 2@ 2* cells save-mem drop ( addr ) |
image-included-files 2@ nip included-files 2! ; |
image-included-files 2@ nip included-files 2! ; |
|
|
: included? ( c-addr u -- f ) \ gforth |
: included? ( c-addr u -- f ) \ gforth |
\G True only if the file @var{c-addr u} is in the list of earlier |
\G True only if the file @var{c-addr u} is in the list of earlier |
\G included files. If the file has been loaded, it may have been |
\G included files. If the file has been loaded, it may have been |
\G specified as, say, foo.fs and found somewhere on the Forth |
\G specified as, say, @file{foo.fs} and found somewhere on the |
\G search path. To return true from @code{included?}, you must |
\G Forth search path. To return @code{true} from @code{included?}, |
\G specify the exact path to the file, even if that is |
\G you must specify the exact path to the file, even if that is |
\G @code{./foo.fs} |
\G @file{./foo.fs} |
included-files 2@ 0 |
included-files 2@ 0 |
?do ( c-addr u addr ) |
?do ( c-addr u addr ) |
dup >r 2@ 2over compare 0= |
dup >r 2@ 2over compare 0= |
Line 124 create image-included-files 1 , A, ( po
|
Line 124 create image-included-files 1 , A, ( po
|
string, |
string, |
needsrcs^ @ ! ; |
needsrcs^ @ ! ; |
|
|
: .modules |
: .included ( -- ) \ gforth |
|
\G list the names of the files that have been @code{included} |
cr |
cr |
needs^ @ |
needs^ @ |
BEGIN dup |
BEGIN dup |
Line 147 create image-included-files 1 , A, ( po
|
Line 148 create image-included-files 1 , A, ( po
|
: loadfilename#>str ( n -- adr len ) |
: loadfilename#>str ( n -- adr len ) |
included-files 2@ drop swap 2* cells + 2@ ; |
included-files 2@ drop swap 2* cells + 2@ ; |
|
|
: .modules |
: .included ( -- ) \ gforth |
|
\G list the names of the files that have been @code{included} |
included-files 2@ 2* cells bounds ?DO |
included-files 2@ 2* cells bounds ?DO |
cr I 2@ type 2 cells +LOOP ; |
cr I 2@ type 2 cells +LOOP ; |
|
|