Annotation of gforth/moofglos.fs, revision 1.4

1.3       crook       1: \ This contains the same Forth source as mini-oof.fs, but
                      2: \ also contains glossary information for the manual.
                      3: 
1.4     ! anton       4: : method ( m v "name" -- m' v ) \ mini-oof
        !             5:     \G Define a selector.
1.2       pazsan      6:     Create  over , swap cell+ swap
                      7:   DOES> ( ... o -- ... ) @ over @ + @ execute ;
                      8: 
1.4     ! anton       9: : var ( m v size "name" -- m v' ) \ mini-oof
1.2       pazsan     10:     \G Define a variable with @var{size} bytes.
                     11:     Create  over , +
                     12:   DOES> ( o -- addr ) @ + ;
                     13: 
1.4     ! anton      14: : class ( class -- class selectors vars ) \ mini-oof
1.2       pazsan     15:     \G Start the definition of a class.
                     16:     dup 2@ ;
                     17: 
1.4     ! anton      18: : end-class  ( class selectors vars "name" -- ) \ mini-oof
1.2       pazsan     19:     \G End the definition of a class.
                     20:     Create  here >r , dup , 2 cells ?DO ['] noop , 1 cells +LOOP
                     21:     cell+ dup cell+ r> rot @ 2 cells /string move ;
                     22: 
                     23: : defines ( xt class "name" -- ) \ mini-oof
1.4     ! anton      24:     \G Bind @var{xt} to the selector @var{name} in class @var{class}.
1.2       pazsan     25:     ' >body @ + ! ;
                     26: 
                     27: : new ( class -- o ) \ mini-oof
                     28:     \G Create a new incarnation of the class @var{class}.
                     29:     here over @ allot swap over ! ;
                     30: 
                     31: : :: ( class "name" -- ) \ mini-oof colon-colon
1.4     ! anton      32:     \G Compile the method for the selector @var{name} of the class
        !            33:     \G @var{class} (not immediate!).
1.2       pazsan     34:     ' >body @ + @ compile, ;
                     35: 
                     36: Create object ( -- a-addr ) \ mini-oof
                     37: 1 cells , 2 cells ,
                     38: \G @var{object} is the base class of all objects.

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