package Ġio . wave beans . lib . stream . window Ċ Ċ import Ġio . wave beans . lib .* Ċ import Ġio . wave beans . lib . stream . map Ċ Ċ operator Ġfun ĠBean Stream < Window < Sample >> . minus ( d : ĠNumber ): ĠBean Stream < Window < Sample >> Ġ= ĊĠĠĠĠĠĠĠ Ġthis . map ( Scalar Sample Window Op Fn ( d . toDouble (), Ġ"- ")) Ċ Ċ operator Ġfun ĠBean Stream < Window < Sample >> . plus ( d : ĠNumber ): ĠBean Stream < Window < Sample >> Ġ= ĊĠĠĠĠĠĠĠ Ġthis . map ( Scalar Sample Window Op Fn ( d . toDouble (), Ġ"+ ")) Ċ Ċ operator Ġfun ĠBean Stream < Window < Sample >> . times ( d : ĠNumber ): ĠBean Stream < Window < Sample >> Ġ= ĊĠĠĠĠĠĠĠ Ġthis . map ( Scalar Sample Window Op Fn ( d . toDouble (), Ġ"* ")) Ċ Ċ operator Ġfun ĠBean Stream < Window < Sample >> . div ( d : ĠNumber ): ĠBean Stream < Window < Sample >> Ġ= ĊĠĠĠĠĠĠĠ Ġthis . map ( Scalar Sample Window Op Fn ( d . toDouble (), Ġ"/ ")) Ċ Ċ internal Ġclass ĠScalar Sample Window Op Fn ( factor : ĠDouble , Ġoperator : ĠString ) Ġ: ĠFn < Window < Sample >, ĠWindow < Sample >>( ĊĠĠĠĠĠĠĠ ĠFn Init Parameters () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add (" factor ", Ġfactor . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add (" operator ", Ġoperator ) Ċ ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġapply ( argument : ĠWindow < Sample >): ĠWindow < Sample > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġd Ġ= Ġinit Params [" factor "] ?. toDouble () !! ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( init Params [" operator "]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"/" Ġ-> ĠWindow . of Samples ( argument . size , Ġargument . step , Ġargument . elements . map Ġ{ Ġit Ġ/ Ġd Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"*" Ġ-> ĠWindow . of Samples ( argument . size , Ġargument . step , Ġargument . elements . map Ġ{ Ġit Ġ* Ġd Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" +" Ġ-> ĠWindow . of Samples ( argument . size , Ġargument . step , Ġargument . elements . map Ġ{ Ġit Ġ+ Ġd Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"-" Ġ-> ĠWindow . of Samples ( argument . size , Ġargument . step , Ġargument . elements . map Ġ{ Ġit Ġ- Ġd Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠUnsupportedOperationException (" Operator Ġ${ init Params [" operator "]} Ġis Ġnot Ġsupported ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ