diff options
Diffstat (limited to 'ext/fiddle/lib/fiddle')
-rw-r--r-- | ext/fiddle/lib/fiddle/closure.rb | 17 | ||||
-rw-r--r-- | ext/fiddle/lib/fiddle/function.rb | 5 |
2 files changed, 22 insertions, 0 deletions
diff --git a/ext/fiddle/lib/fiddle/closure.rb b/ext/fiddle/lib/fiddle/closure.rb new file mode 100644 index 0000000000..dc2b7a65be --- /dev/null +++ b/ext/fiddle/lib/fiddle/closure.rb @@ -0,0 +1,17 @@ +module Fiddle + class Closure + attr_reader :ctype + attr_reader :args + + class BlockCaller < Fiddle::Closure + def initialize ctype, args, abi = Fiddle::Function::DEFAULT, &block + super(ctype, args, abi) + @block = block + end + + def call *args + @block.call(*args) + end + end + end +end diff --git a/ext/fiddle/lib/fiddle/function.rb b/ext/fiddle/lib/fiddle/function.rb new file mode 100644 index 0000000000..7b9e735874 --- /dev/null +++ b/ext/fiddle/lib/fiddle/function.rb @@ -0,0 +1,5 @@ +module Fiddle + class Function + attr_reader :abi + end +end |