Annotation of gforth/source.fs, revision 1.5

1.1       anton       1: \ source location handling
                      2: 
                      3: \ Copyright (C) 1995 Free Software Foundation, Inc.
                      4: 
                      5: \ This file is part of Gforth.
                      6: 
                      7: \ Gforth is free software; you can redistribute it and/or
                      8: \ modify it under the terms of the GNU General Public License
                      9: \ as published by the Free Software Foundation; either version 2
                     10: \ of the License, or (at your option) any later version.
                     11: 
                     12: \ This program is distributed in the hope that it will be useful,
                     13: \ but WITHOUT ANY WARRANTY; without even the implied warranty of
                     14: \ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     15: \ GNU General Public License for more details.
                     16: 
                     17: \ You should have received a copy of the GNU General Public License
                     18: \ along with this program; if not, write to the Free Software
                     19: \ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
                     20: 
                     21: 
1.3       pazsan     22: \ related stuff can be found in kernel.fs
1.1       anton      23: 
                     24: \ this stuff is used by (at least) assert.fs and debugging.fs
                     25: 
                     26: require struct.fs
                     27: 
                     28: struct
                     29:     1 cells: field sourcepos-name#
                     30:     1 cells: field sourcepos-line#
                     31: end-struct sourcepos
                     32:     
                     33: : sourcepos, ( -- )
                     34:     \ record the current source position HERE
1.2       anton      35:     loadfilename# @ , sourceline# , ;
1.1       anton      36: 
                     37: : get-sourcepos ( a-addr -- c-addr u n )
                     38:     \ c-addr u is the filename, n is the line number
1.5     ! anton      39:     dup sourcepos-name# @ loadfilename#>str
1.1       anton      40:     rot sourcepos-line# @ ;
                     41: 
                     42: : print-sourcepos ( a-addr -- )
                     43:     get-sourcepos
1.4       anton      44:     >r type ." :"
                     45:     base @ decimal r> 0 .r base ! ;

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>