--- gforth/objects.fs 1999/07/05 18:54:20 1.14 +++ gforth/objects.fs 1999/07/24 13:07:19 1.17 @@ -263,7 +263,7 @@ variable public-wordlist \g Add @var{class}'s wordlists to the head of the search-order. >r get-order r> add-class-order set-order ; -: methods ( class -- ) +: methods ( class -- ) \ objects- objects \g Makes @var{class} the current class. This is intended to be \g used for defining methods to override selectors; you cannot \g define new fields or selectors. @@ -297,7 +297,7 @@ variable public-wordlist \g on the search order. >r get-order r> remove-class-order set-order ; -: end-methods ( -- ) +: end-methods ( -- ) \ objects- objects \g Switch back from defining methods of a class to normal mode \g (currently this just restores the old search order). current-interface @ drop-order ; @@ -359,12 +359,20 @@ variable public-wordlist \ : to-this ( object -- ) \ thisp ! ; -: m: ( -- xt colon-sys; run-time: object -- ) \ objects- objects - \g Start a method definition; @var{object} becomes new @code{this}. - :noname +: enterm ( -- ; run-time: object -- ) + \g method prologue; @var{object} becomes new @code{this}. POSTPONE this POSTPONE >r POSTPONE to-this ; + +: m: ( -- xt colon-sys; run-time: object -- ) \ objects- objects + \g Start a method definition; @var{object} becomes new @code{this}. + :noname enterm ; + +: :m ( "name" -- xt; run-time: object -- ) \ objects- objects + \g Start a named method definition; @var{object} becomes new + \g @code{this}. Has to be ended with @code{;m}. + : enterm ; : exitm ( -- ) \ objects- objects \g @code{exit} from a method; restore old @code{this}. @@ -486,6 +494,8 @@ method print ( object -- ) \ objects- ob \g Print the object. The method for the class @var{object} prints \g the address of the object and the address of its class. +selector equal ( object1 object2 -- flag ) + end-class object ( -- class ) \ objects- objects \g the ancestor of all classes.