Method: CRuby::Event#wrap

Defined in:
lib/cruby/event.rb

#wrap(&f) ⇒ Object

新しいイベントを生成する



31
32
33
34
35
36
37
38
39
40
41
# File 'lib/cruby/event.rb', line 31

def wrap &f
  CRuby::Event.new(@evts.map {|evt|
              doFn = Proc.new { f.call(evt.doFn.call()) }
              blockFn = Proc.new {|flg,k|     # k はsync実行後の継続
                callcc {|kk|                  # kk はblockFn実行後の継続
                  k.call(f.call(callcc {|kkk| # kkk は元のblockFn実行後の継続
                                  kk.call(evt.blockFn.call(flg,kkk))
                                }))}}
              BEvt.new(evt.pollFn,doFn,blockFn)
            })
end