[gforth] / gforth / mini-oof.fs  

gforth: gforth/mini-oof.fs


1 : crook 1.5 : method ( m v -- m' v ) \ mini-oof
2 :     \G Define a method.
3 :     Create over , swap cell+ swap
4 : pazsan 1.1 DOES> ( ... o -- ... ) @ over @ + @ execute ;
5 : crook 1.5
6 :     : var ( m v size -- m v' ) \ mini-oof
7 :     \G Define a variable with @var{size} bytes.
8 :     Create over , +
9 : pazsan 1.1 DOES> ( o -- addr ) @ + ;
10 : crook 1.5
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.

CVS Admin

Powered by ViewCVS 1.0-dev
(Powered by ViewCVS)

ViewCVS and CVS Help