ffi-module 0.1.3 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 26ebad3ab2aa8d49e96497e1cc62cfeffb418f7c503f86ae9052e959f7bb3fac
4
- data.tar.gz: 7f0a0a60df7d7e46f1bb92d937d7d2299f20d9c7232e4ca516736f5e87143430
3
+ metadata.gz: ca3d8712f429164d44b3b16b650bfa3f9184e4fb266c2da5ffe47588d4670679
4
+ data.tar.gz: 27ef2aa8e1fe00c763fd3e01e82ddce0d879705c19bb35a29bfca56214d07ac6
5
5
  SHA512:
6
- metadata.gz: 134c1f391e7de50471c40f99cca103154375673a1c2f8ac4f345d6e2a23a68e1aaf84320dbb5e75467a2c7735023560aa4a599bc1db716511c0bc4b469506839
7
- data.tar.gz: 25408e747cee8c74b36fde7a4ec21533b057e683cad95ea9fdf2329a5b981d5d6ad4565ca20ffc6aa19faddf062937a9eab86d348297c08a454c108c044ca11d
6
+ metadata.gz: 28f5d178cd0d7278cb7de726c12a948c94f7e83e86aaf8672e8f0d60d00da4fc5435a6e709e169bc8db2469b3377c68e2607da8e04a14a5273435c0220ba4aa3
7
+ data.tar.gz: 6c272955bfabb1d1f929a09908e5a33a67688d97a83f9364c3bf590313d84ffc7269d5ce0d3ee489069517d76f6ef9a5370ca6e7c925ec7478eacc3701a70602
@@ -41,6 +41,7 @@ module FFI
41
41
 
42
42
  return true
43
43
  rescue LoadError, RuntimeError
44
+ # TruffleRuby raises a RuntimeError if the library can't be found.
44
45
  return nil
45
46
  end
46
47
 
@@ -52,7 +53,7 @@ module FFI
52
53
  return @ffi_calling_convention
53
54
  end
54
55
 
55
- def ffi_attach_function(name, cname, argument_types, return_type = :void, **options)
56
+ def ffi_attach_function(name, argument_types, return_type = :void, as: name, **options)
56
57
  argument_types = argument_types.map{|type| self.ffi_find_type(type)}
57
58
  return_type = self.ffi_find_type(return_type)
58
59
 
@@ -65,7 +66,7 @@ module FFI
65
66
  @ffi_libraries.each do |library|
66
67
  function = nil
67
68
 
68
- ffi_function_names(cname, argument_types).each do |function_name|
69
+ ffi_function_names(name, argument_types).each do |function_name|
69
70
  break if function = library.find_function(function_name.to_s)
70
71
  end
71
72
 
@@ -81,29 +82,29 @@ module FFI
81
82
  end
82
83
 
83
84
  if invoker
84
- invoker.attach(self, name.to_s)
85
+ invoker.attach(self, as.to_s)
85
86
  return true
86
87
  else
87
- raise FFI::NotFoundError.new(cname, @ffi_libraries)
88
+ raise FFI::NotFoundError.new(name, @ffi_libraries)
88
89
  end
89
90
  end
90
91
 
91
- def ffi_attach_variable(name, cname, type)
92
+ def ffi_attach_variable(name, type, as: name)
92
93
  address = @ffi_libraries.find do |library|
93
94
  begin
94
- library.find_variable(cname)
95
+ library.find_variable(name)
95
96
  rescue LoadError
96
97
  end
97
98
  end
98
99
 
99
100
  if address.nil? || address.null?
100
- raise FFI::NotFoundError.new(cname, @ffi_libraries)
101
+ raise FFI::NotFoundError.new(name, @ffi_libraries)
101
102
  end
102
103
 
103
104
  if type.is_a?(Class) && type < FFI::Struct
104
105
  variable = type.new(address)
105
106
 
106
- self.define_singleton_method(name) do
107
+ self.define_singleton_method(as) do
107
108
  variable
108
109
  end
109
110
  else
@@ -111,11 +112,11 @@ module FFI
111
112
  container_type.layout :value, self.ffi_find_type(type)
112
113
  container = container_type.new(address)
113
114
 
114
- self.define_singleton_method(name) do
115
+ self.define_singleton_method(as) do
115
116
  container[:value]
116
117
  end
117
118
 
118
- self.define_singleton_method(:"#{name}=") do |value|
119
+ self.define_singleton_method(:"#{as}=") do |value|
119
120
  container[:value] = value
120
121
  end
121
122
  end
@@ -31,6 +31,6 @@ end
31
31
 
32
32
  module FFI
33
33
  module Module
34
- VERSION = "0.1.3"
34
+ VERSION = "0.2.0"
35
35
  end
36
36
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ffi-module
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams