2004-11-27 22:26:05 -05:00
|
|
|
IN: scratchpad
|
|
|
|
USE: inference
|
|
|
|
USE: lists
|
|
|
|
USE: math
|
|
|
|
USE: test
|
2004-11-29 23:14:12 -05:00
|
|
|
USE: hashtables
|
|
|
|
USE: kernel
|
|
|
|
USE: vectors
|
|
|
|
USE: namespaces
|
2004-11-30 23:56:01 -05:00
|
|
|
USE: prettyprint
|
2004-12-02 22:44:36 -05:00
|
|
|
USE: words
|
2004-12-10 19:29:07 -05:00
|
|
|
USE: kernel
|
2004-12-24 02:52:02 -05:00
|
|
|
USE: kernel-internals
|
2004-12-10 19:29:07 -05:00
|
|
|
USE: generic
|
2004-11-27 22:26:05 -05:00
|
|
|
|
2004-11-29 23:14:12 -05:00
|
|
|
: dataflow-contains-op? ( object list -- ? )
|
|
|
|
#! Check if some dataflow node contains a given operation.
|
2005-01-19 21:01:47 -05:00
|
|
|
[ node-op swap hash = ] some-with? ;
|
2004-11-29 23:14:12 -05:00
|
|
|
|
|
|
|
: dataflow-contains-param? ( object list -- ? )
|
|
|
|
#! Check if some dataflow node contains a given operation.
|
2004-12-04 23:45:41 -05:00
|
|
|
[
|
2005-01-19 21:01:47 -05:00
|
|
|
[
|
2004-12-04 23:45:41 -05:00
|
|
|
node-op get #label = [
|
|
|
|
node-param get dataflow-contains-param?
|
|
|
|
] [
|
|
|
|
node-param get =
|
|
|
|
] ifte
|
|
|
|
] bind
|
2005-01-19 21:01:47 -05:00
|
|
|
] some-with? ;
|
2004-11-29 23:14:12 -05:00
|
|
|
|
|
|
|
[ t ] [
|
|
|
|
\ + [ 2 2 + ] dataflow dataflow-contains-param? >boolean
|
|
|
|
] unit-test
|
|
|
|
|
|
|
|
: inline-test
|
|
|
|
car car ; inline
|
|
|
|
|
2004-12-31 02:17:45 -05:00
|
|
|
! [ t ] [
|
|
|
|
! \ slot [ inline-test ] dataflow dataflow-contains-param? >boolean
|
|
|
|
! ] unit-test
|
2004-11-29 23:14:12 -05:00
|
|
|
|
|
|
|
[ t ] [
|
2005-01-14 14:56:19 -05:00
|
|
|
\ ifte [ [ drop ] [ + ] ifte ] dataflow dataflow-contains-op? >boolean
|
2004-11-29 23:14:12 -05:00
|
|
|
] unit-test
|
|
|
|
|
|
|
|
: dataflow-consume-d-len ( object -- n )
|
2004-12-02 22:44:36 -05:00
|
|
|
[ node-consume-d get length ] bind ;
|
2004-11-29 23:14:12 -05:00
|
|
|
|
|
|
|
: dataflow-produce-d-len ( object -- n )
|
2004-12-02 22:44:36 -05:00
|
|
|
[ node-produce-d get length ] bind ;
|
2004-11-29 23:14:12 -05:00
|
|
|
|
|
|
|
[ t ] [ [ drop ] dataflow car dataflow-consume-d-len 1 = ] unit-test
|
|
|
|
|
|
|
|
[ t ] [ [ 2 ] dataflow car dataflow-produce-d-len 1 = ] unit-test
|
|
|
|
|
|
|
|
: dataflow-ifte-node-consume-d ( list -- node )
|
2005-01-14 14:56:19 -05:00
|
|
|
\ ifte swap dataflow-contains-op? car [ node-consume-d get ] bind ;
|
2004-11-29 23:14:12 -05:00
|
|
|
|
|
|
|
[ t ] [
|
2005-01-13 19:49:47 -05:00
|
|
|
[ [ swap ] [ nip "hi" ] ifte ] dataflow
|
2004-12-02 22:44:36 -05:00
|
|
|
dataflow-ifte-node-consume-d length 1 =
|
2004-11-29 23:14:12 -05:00
|
|
|
] unit-test
|
2004-11-30 23:56:01 -05:00
|
|
|
|
2004-12-16 19:57:03 -05:00
|
|
|
! [ t ] [
|
|
|
|
! [ { [ drop ] [ undefined-method ] [ drop ] [ undefined-method ] } generic ] dataflow
|
2005-01-14 14:56:19 -05:00
|
|
|
! \ dispatch swap dataflow-contains-op? car [
|
2004-12-16 19:57:03 -05:00
|
|
|
! node-param get [
|
|
|
|
! [ [ node-param get \ undefined-method = ] bind ] some?
|
|
|
|
! ] some?
|
|
|
|
! ] bind >boolean
|
|
|
|
! ] unit-test
|
2004-12-02 22:44:36 -05:00
|
|
|
|
|
|
|
SYMBOL: #test
|
|
|
|
|
2005-03-05 14:45:23 -05:00
|
|
|
#test f "foobar" set-word-prop
|
2004-12-02 22:44:36 -05:00
|
|
|
|
|
|
|
[ 6 ] [
|
|
|
|
{{
|
2005-01-13 19:49:47 -05:00
|
|
|
[[ node-op #test ]]
|
|
|
|
[[ node-param 5 ]]
|
2004-12-29 03:35:46 -05:00
|
|
|
}} "foobar" [ [ node-param get ] bind 1 + ] apply-dataflow
|
2004-12-02 22:44:36 -05:00
|
|
|
] unit-test
|
|
|
|
|
2005-03-05 14:45:23 -05:00
|
|
|
#test [ [ node-param get ] bind sq ] "foobar" set-word-prop
|
2004-12-02 22:44:36 -05:00
|
|
|
|
|
|
|
[ 25 ] [
|
|
|
|
{{
|
2005-01-13 19:49:47 -05:00
|
|
|
[[ node-op #test ]]
|
|
|
|
[[ node-param 5 ]]
|
2004-12-29 03:35:46 -05:00
|
|
|
}} "foobar" [ [ node-param get ] bind 1 + ] apply-dataflow
|
2004-12-02 22:44:36 -05:00
|
|
|
] unit-test
|
2004-12-04 23:45:41 -05:00
|
|
|
|
|
|
|
! Somebody (cough) got the order of ifte nodes wrong.
|
|
|
|
|
|
|
|
[ t ] [
|
2005-01-14 14:56:19 -05:00
|
|
|
\ ifte [ [ 1 ] [ 2 ] ifte ] dataflow dataflow-contains-op? car
|
2004-12-04 23:45:41 -05:00
|
|
|
[ node-param get ] bind car car [ node-param get ] bind 1 =
|
|
|
|
] unit-test
|