ffi-module 0.1.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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