Next: Comparison of object models, Previous: The mini-oof.fs model, Up: Object-oriented Forth [Contents][Index]
Mini-OOF2 is very similar to Mini-OOF in many respects, but differs
significantly in a few aspects. In particular, Mini-OOF2 has a current
object variable, and uses the primitives >o and o> to
manipulate that object stack. All method invocations and instance
variable accesses refer to the current object.
>o ( c-addr – r:c-old ) new “to-o”
Set the current object to c_addr, the previous current object is pushed to the return stack
o> ( r:c-addr – ) new “o-restore”
Restore the previous current object from the return stack
To ease passing an object pointer to method invocation or instance
variable accesses, the additional recognizer rec-moof2 is
activated.
rec-moof2 ( c-addr u – nt translate-moof2 | translate-none ) mini-oof2 “rec-moof-two”
This recognizer recognizes .word (if word is
visible) and the translation is equivalent to >o word
o>.
To assign methods to selectors, use xt class is
selector, so no defines necessary. For early binding of
methods, instead of :: you use defers:
[ class ] defers selector
Instead of writing
:noname code ; class is selector
you can also use the syntactic sugar
class :method selector code ;
:method ( class "name" – ) gforth-experimental “colon-method”
define a noname that is assigned to the deferred word name
in class at ;.
Next: Comparison of object models, Previous: The mini-oof.fs model, Up: Object-oriented Forth [Contents][Index]