def callback(*args)
raise ArgumentError, "wrong number of arguments" if args.length < 2 || args.length > 3
name, params, ret = if args.length == 3
args
else
[ nil, args[0], args[1] ]
end
options = Hash.new
options[:convention] = defined?(@ffi_convention) ? @ffi_convention : :default
options[:enums] = @ffi_enums if defined?(@ffi_enums)
cb = FFI::CallbackInfo.new(find_type(ret), params.map { |e| find_type(e) }, options)
unless name.nil?
@ffi_callbacks = Hash.new unless defined?(@ffi_callbacks)
@ffi_callbacks[name] = cb
end
cb
end