File:  [gforth] / gforth / mini-oof.fs
Revision 1.5: download - view: text, annotated - select for diffs
Tue Feb 16 06:32:28 1999 UTC (25 years, 1 month ago) by crook
Branches: MAIN
CVS tags: HEAD
-Added my name to the ToDo file under documentation
-Glossed the oof files
-Minor glossary additions elsewhere
-Another set of changes to gforth.ds; mainly the addition of material
 to the introductory chapter. Also, re-organised stuff in the oof
 sections and made a typo pass over a few other bits.

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

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