Starting to remove delegation
parent
59f902f673
commit
a4ac751605
|
@ -222,16 +222,6 @@ USE: binary-search.private
|
||||||
[ [ - ] swap old-binsearch ] compile-call 2nip
|
[ [ - ] swap old-binsearch ] compile-call 2nip
|
||||||
] unit-test
|
] unit-test
|
||||||
|
|
||||||
! Regression
|
|
||||||
TUPLE: silly-tuple a b ;
|
|
||||||
|
|
||||||
[ 1 2 { silly-tuple-a silly-tuple-b } ] [
|
|
||||||
T{ silly-tuple f 1 2 }
|
|
||||||
[
|
|
||||||
{ silly-tuple-a silly-tuple-b } [ get-slots ] keep
|
|
||||||
] compile-call
|
|
||||||
] unit-test
|
|
||||||
|
|
||||||
! Regression
|
! Regression
|
||||||
: empty-compound ;
|
: empty-compound ;
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ IN: peg.tests
|
||||||
|
|
||||||
{ "begin" "end" } [
|
{ "begin" "end" } [
|
||||||
"beginend" "begin" token (parse)
|
"beginend" "begin" token (parse)
|
||||||
{ ast>> remaining>> } get-slots
|
[ ast>> ] [ remaining>> ] bi
|
||||||
>string
|
>string
|
||||||
] unit-test
|
] unit-test
|
||||||
|
|
||||||
|
|
|
@ -164,8 +164,3 @@ SYMBOL: +transform-n+
|
||||||
\ memq? [
|
\ memq? [
|
||||||
dup sequence? [ memq-quot ] [ drop f ] if
|
dup sequence? [ memq-quot ] [ drop f ] if
|
||||||
] 1 define-transform
|
] 1 define-transform
|
||||||
|
|
||||||
! Deprecated
|
|
||||||
\ get-slots [ [ 1quotation ] map [ cleave ] curry ] 1 define-transform
|
|
||||||
|
|
||||||
\ set-slots [ <reversed> [ get-slots ] curry ] 1 define-transform
|
|
||||||
|
|
|
@ -52,7 +52,7 @@ TUPLE: button-paint plain rollover pressed selected ;
|
||||||
C: <button-paint> button-paint
|
C: <button-paint> button-paint
|
||||||
|
|
||||||
: find-button ( gadget -- button )
|
: find-button ( gadget -- button )
|
||||||
[ [ button? ] is? ] find-parent ;
|
[ button? ] find-parent ;
|
||||||
|
|
||||||
: button-paint ( button paint -- button paint )
|
: button-paint ( button paint -- button paint )
|
||||||
over find-button {
|
over find-button {
|
||||||
|
|
|
@ -361,8 +361,3 @@ M: f request-focus-on 2drop ;
|
||||||
|
|
||||||
: focus-path ( world -- seq )
|
: focus-path ( world -- seq )
|
||||||
[ focus>> ] follow ;
|
[ focus>> ] follow ;
|
||||||
|
|
||||||
! Deprecated
|
|
||||||
|
|
||||||
: construct-gadget ( class -- tuple )
|
|
||||||
>r <gadget> { set-delegate } r> construct ; inline
|
|
||||||
|
|
|
@ -45,7 +45,7 @@ M: labelled-gadget focusable-child* labelled-gadget-content ;
|
||||||
TUPLE: closable-gadget < frame content ;
|
TUPLE: closable-gadget < frame content ;
|
||||||
|
|
||||||
: find-closable-gadget ( parent -- child )
|
: find-closable-gadget ( parent -- child )
|
||||||
[ [ closable-gadget? ] is? ] find-parent ;
|
[ closable-gadget? ] find-parent ;
|
||||||
|
|
||||||
: <closable-gadget> ( gadget title quot -- gadget )
|
: <closable-gadget> ( gadget title quot -- gadget )
|
||||||
closable-gadget new-frame
|
closable-gadget new-frame
|
||||||
|
|
|
@ -31,7 +31,7 @@ TUPLE: list < pack index presenter color hook ;
|
||||||
swap set-list-index ;
|
swap set-list-index ;
|
||||||
|
|
||||||
: list-presentation-hook ( list -- quot )
|
: list-presentation-hook ( list -- quot )
|
||||||
hook>> [ [ [ list? ] is? ] find-parent ] prepend ;
|
hook>> [ [ list? ] find-parent ] prepend ;
|
||||||
|
|
||||||
: <list-presentation> ( hook elt presenter -- gadget )
|
: <list-presentation> ( hook elt presenter -- gadget )
|
||||||
keep >r >label text-theme r>
|
keep >r >label text-theme r>
|
||||||
|
|
|
@ -4,7 +4,7 @@ prettyprint ui.gadgets.buttons io io.streams.string kernel
|
||||||
classes.tuple ;
|
classes.tuple ;
|
||||||
|
|
||||||
[ t ] [
|
[ t ] [
|
||||||
"Hi" \ + <presentation> [ gadget? ] is?
|
"Hi" \ + <presentation> gadget?
|
||||||
] unit-test
|
] unit-test
|
||||||
|
|
||||||
[ "+" ] [
|
[ "+" ] [
|
||||||
|
|
|
@ -10,7 +10,7 @@ IN: ui.gadgets.scrollers
|
||||||
TUPLE: scroller < frame viewport x y follows ;
|
TUPLE: scroller < frame viewport x y follows ;
|
||||||
|
|
||||||
: find-scroller ( gadget -- scroller/f )
|
: find-scroller ( gadget -- scroller/f )
|
||||||
[ [ scroller? ] is? ] find-parent ;
|
[ scroller? ] find-parent ;
|
||||||
|
|
||||||
: scroll-up-page ( scroller -- ) y>> -1 swap slide-by-page ;
|
: scroll-up-page ( scroller -- ) y>> -1 swap slide-by-page ;
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ GENERIC: handle-gesture* ( gadget gesture delegate -- ? )
|
||||||
M: object handle-gesture* default-gesture-handler ;
|
M: object handle-gesture* default-gesture-handler ;
|
||||||
|
|
||||||
: handle-gesture ( gesture gadget -- ? )
|
: handle-gesture ( gesture gadget -- ? )
|
||||||
tuck delegates [ >r 2dup r> handle-gesture* ] all? 2nip ;
|
tuck >r 2dup r> handle-gesture* 2nip ;
|
||||||
|
|
||||||
: send-gesture ( gesture gadget -- ? )
|
: send-gesture ( gesture gadget -- ? )
|
||||||
[ dupd handle-gesture ] each-parent nip ;
|
[ dupd handle-gesture ] each-parent nip ;
|
||||||
|
|
|
@ -29,7 +29,7 @@ M: live-search handle-gesture* ( gadget gesture delegate -- ? )
|
||||||
] if ;
|
] if ;
|
||||||
|
|
||||||
: find-live-search ( gadget -- search )
|
: find-live-search ( gadget -- search )
|
||||||
[ [ live-search? ] is? ] find-parent ;
|
[ live-search? ] find-parent ;
|
||||||
|
|
||||||
: find-search-list ( gadget -- list )
|
: find-search-list ( gadget -- list )
|
||||||
find-live-search live-search-list ;
|
find-live-search live-search-list ;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
USING: arrays io kernel math namespaces splitting prettyprint
|
USING: accessors arrays io kernel math namespaces splitting
|
||||||
sequences sorting vectors words inverse summary shuffle
|
prettyprint sequences sorting vectors words inverse summary
|
||||||
math.functions sets ;
|
shuffle math.functions sets ;
|
||||||
IN: units
|
IN: units
|
||||||
|
|
||||||
TUPLE: dimensioned value top bot ;
|
TUPLE: dimensioned value top bot ;
|
||||||
|
@ -28,8 +28,7 @@ M: dimensions-not-equal summary drop "Dimensions do not match" ;
|
||||||
dimensioned boa ;
|
dimensioned boa ;
|
||||||
|
|
||||||
: >dimensioned< ( d -- n top bot )
|
: >dimensioned< ( d -- n top bot )
|
||||||
{ dimensioned-value dimensioned-top dimensioned-bot }
|
[ value>> ] [ top>> ] [ bot>> ] tri ;
|
||||||
get-slots ;
|
|
||||||
|
|
||||||
\ <dimensioned> [ >dimensioned< ] define-inverse
|
\ <dimensioned> [ >dimensioned< ] define-inverse
|
||||||
|
|
||||||
|
|
|
@ -74,7 +74,7 @@ unless
|
||||||
|
|
||||||
: (define-word-for-function) ( function interface n -- )
|
: (define-word-for-function) ( function interface n -- )
|
||||||
-rot [ (function-word) swap ] 2keep drop
|
-rot [ (function-word) swap ] 2keep drop
|
||||||
{ return>> parameters>> } get-slots
|
[ return>> ] [ parameters>> ] bi
|
||||||
[ (invocation-quot) ] 2keep
|
[ (invocation-quot) ] 2keep
|
||||||
(stack-effect-from-return-and-parameters)
|
(stack-effect-from-return-and-parameters)
|
||||||
define-declared ;
|
define-declared ;
|
||||||
|
|
|
@ -425,28 +425,6 @@ HELP: new
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
HELP: construct
|
|
||||||
{ $values { "..." "slot values" } { "slots" "a sequence of setter words" } { "class" tuple-class } { "tuple" tuple } }
|
|
||||||
{ $description "Creates a new instance of " { $snippet "class" } ", storing consecutive stack values into the slots of the new tuple using setter words in " { $snippet "slots" } ". The top-most stack element is stored in the right-most slot." }
|
|
||||||
{ $examples
|
|
||||||
"We can define a class:"
|
|
||||||
{ $code "TUPLE: color red green blue alpha ;" }
|
|
||||||
"Together with two constructors:"
|
|
||||||
{ $code
|
|
||||||
": <rgb> ( r g b -- color )"
|
|
||||||
" { set-color-red set-color-green set-color-blue }"
|
|
||||||
" color construct ;"
|
|
||||||
""
|
|
||||||
": <rgba> ( r g b a -- color )"
|
|
||||||
" { set-color-red set-color-green set-color-blue set-color-alpha }"
|
|
||||||
" color construct ;"
|
|
||||||
}
|
|
||||||
"The last definition is actually equivalent to the following:"
|
|
||||||
{ $code ": <rgba> ( r g b a -- color ) rgba boa ;" }
|
|
||||||
"Which can be abbreviated further:"
|
|
||||||
{ $code "C: <rgba> color" }
|
|
||||||
} ;
|
|
||||||
|
|
||||||
HELP: boa
|
HELP: boa
|
||||||
{ $values { "..." "slot values" } { "class" tuple-class } { "tuple" tuple } }
|
{ $values { "..." "slot values" } { "class" tuple-class } { "tuple" tuple } }
|
||||||
{ $description "Creates a new instance of " { $snippet "class" } " and fill in the slots from the stack, with the top-most stack element being stored in the right-most slot." }
|
{ $description "Creates a new instance of " { $snippet "class" } " and fill in the slots from the stack, with the top-most stack element being stored in the right-most slot." }
|
||||||
|
|
|
@ -320,14 +320,3 @@ M: tuple-class boa
|
||||||
bi <tuple-boa> ;
|
bi <tuple-boa> ;
|
||||||
|
|
||||||
M: tuple-class initial-value* new ;
|
M: tuple-class initial-value* new ;
|
||||||
|
|
||||||
! Deprecated
|
|
||||||
M: object get-slots ( obj slots -- ... )
|
|
||||||
[ execute ] with each ;
|
|
||||||
|
|
||||||
M: object set-slots ( ... obj slots -- )
|
|
||||||
<reversed> get-slots ;
|
|
||||||
|
|
||||||
: delegates ( obj -- seq ) [ delegate ] follow ;
|
|
||||||
|
|
||||||
: is? ( obj quot -- ? ) >r delegates r> contains? ; inline
|
|
||||||
|
|
|
@ -206,17 +206,3 @@ GENERIC: delegate ( obj -- delegate )
|
||||||
M: tuple delegate 2 slot ;
|
M: tuple delegate 2 slot ;
|
||||||
|
|
||||||
M: object delegate drop f ;
|
M: object delegate drop f ;
|
||||||
|
|
||||||
GENERIC: set-delegate ( delegate tuple -- )
|
|
||||||
|
|
||||||
M: tuple set-delegate 2 set-slot ;
|
|
||||||
|
|
||||||
GENERIC# get-slots 1 ( tuple slots -- ... )
|
|
||||||
|
|
||||||
GENERIC# set-slots 1 ( ... tuple slots -- )
|
|
||||||
|
|
||||||
: construct ( ... slots class -- tuple )
|
|
||||||
new [ swap set-slots ] keep ; inline
|
|
||||||
|
|
||||||
: construct-delegate ( delegate class -- tuple )
|
|
||||||
>r { set-delegate } r> construct ; inline
|
|
||||||
|
|
|
@ -533,8 +533,8 @@ $nl
|
||||||
"Slot specifiers take one of the following three forms:"
|
"Slot specifiers take one of the following three forms:"
|
||||||
{ $list
|
{ $list
|
||||||
{ { $snippet "name" } " - a slot which can hold any object, with no attributes" }
|
{ { $snippet "name" } " - a slot which can hold any object, with no attributes" }
|
||||||
{ { $snippet "{ \"name\" attributes... }" } " - a slot which can hold any object, with optional attributes" }
|
{ { $snippet "{ name attributes... }" } " - a slot which can hold any object, with optional attributes" }
|
||||||
{ { $snippet "{ \"name\" class attributes... }" } " - a slot specialized to a specific class, with optional attributes" }
|
{ { $snippet "{ name class attributes... }" } " - a slot specialized to a specific class, with optional attributes" }
|
||||||
}
|
}
|
||||||
"Slot attributes are lists of slot attribute specifiers followed by values; a slot attribute specifier is one of " { $link initial: } " or " { $link read-only } ". See " { $link "tuple-declarations" } " for details." }
|
"Slot attributes are lists of slot attribute specifiers followed by values; a slot attribute specifier is one of " { $link initial: } " or " { $link read-only } ". See " { $link "tuple-declarations" } " for details." }
|
||||||
{ $examples
|
{ $examples
|
||||||
|
|
Loading…
Reference in New Issue