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>