27 lines
892 B
Factor
27 lines
892 B
Factor
|
|
USING: kernel words lexer parser sequences accessors self ;
|
|
|
|
IN: self.slots
|
|
|
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
: define-self-slot-reader ( slot -- )
|
|
[ "->" append current-vocab create dup set-word ]
|
|
[ ">>" append search [ self> ] swap suffix ] bi
|
|
(( -- value )) define-declared ;
|
|
|
|
: define-self-slot-writer ( slot -- )
|
|
[ "->" prepend current-vocab create dup set-word ]
|
|
[ ">>" prepend search [ self> swap ] swap suffix [ drop ] append ] bi
|
|
(( value -- )) define-declared ;
|
|
|
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
: define-self-slot-accessors ( class -- )
|
|
"slots" word-prop
|
|
[ name>> ] map
|
|
[ [ define-self-slot-reader ] [ define-self-slot-writer ] bi ] each ;
|
|
|
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
: SELF-SLOTS: scan-word define-self-slot-accessors ; parsing |