Annotation of gforth/context-struct.fs, revision 1.2

1.1       pazsan      1: \ Current object structure
                      2: 
                      3: \ Copyright (C) 2012 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 3
                     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, see http://www.gnu.org/licenses/.
                     19: 
                     20: \ This file is part of the Forth meta object protocol effort
                     21: 
                     22: [IFUNDEF] >o
                     23:     user op \ object pointer
                     24:     : o#+ ( #o -- a ) r> dup cell+ >r @ op @ + ; compile-only
                     25:     : >o  ( a -- r:a' )  r> op @ >r >r op ! ; compile-only
                     26:     : o>  ( r:a -- )  r> r> op ! >r ; compile-only
                     27: [THEN]
                     28: 
                     29: Variable do-field,
                     30: 
                     31: : o+ o#+ [ 0 , ] + ;
                     32: 
                     33: : field-context: ( xt-comp xt-int -- )  Create , , DOES> do-field, ! ;
                     34: 
                     35: ' lit+ ' +   field-context: default-field
                     36: ' o#+  ' o+  field-context: current-field
                     37: 
                     38: default-field
                     39: 
1.2     ! pazsan     40: : context+field ( n1 n2 "name" -- n3 ) \ X:structures plus-field
1.1       pazsan     41:     create-interpret/compile over , +
                     42: interpretation>
                     43:     @ do-field, @ perform
                     44: <interpretation
                     45: compilation>
                     46:     @ do-field, @ cell+ @ compile, ,
                     47: <compilation ;
                     48: 
1.2     ! pazsan     49: : context:field  ['] context+field IS +field ;

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