ffi 1.12.2-x86-mingw32 → 1.13.0-x86-mingw32

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.
@@ -76,12 +76,15 @@ rbx.platform.typedef.nlink_t = ushort
76
76
  rbx.platform.typedef.off_t = long_long
77
77
  rbx.platform.typedef.pid_t = int
78
78
  rbx.platform.typedef.pthread_key_t = ulong
79
+ rbx.platform.typedef.ptrdiff_t = long
79
80
  rbx.platform.typedef.qaddr_t = pointer
80
81
  rbx.platform.typedef.quad_t = long_long
81
82
  rbx.platform.typedef.register_t = long_long
82
83
  rbx.platform.typedef.rlim_t = ulong_long
83
84
  rbx.platform.typedef.rsize_t = ulong
84
85
  rbx.platform.typedef.sa_family_t = uchar
86
+ rbx.platform.typedef.sae_associd_t = uint
87
+ rbx.platform.typedef.sae_connid_t = uint
85
88
  rbx.platform.typedef.segsz_t = int
86
89
  rbx.platform.typedef.size_t = ulong
87
90
  rbx.platform.typedef.socklen_t = uint
@@ -124,3 +127,4 @@ rbx.platform.typedef.user_ssize_t = long_long
124
127
  rbx.platform.typedef.user_time_t = long_long
125
128
  rbx.platform.typedef.user_ulong_t = ulong_long
126
129
  rbx.platform.typedef.ushort = ushort
130
+ rbx.platform.typedef.wchar_t = int
@@ -73,6 +73,15 @@ rbx.platform.typedef.int16_t = short
73
73
  rbx.platform.typedef.int32_t = int
74
74
  rbx.platform.typedef.int64_t = long
75
75
  rbx.platform.typedef.int8_t = char
76
+ rbx.platform.typedef.int_fast16_t = long
77
+ rbx.platform.typedef.int_fast32_t = long
78
+ rbx.platform.typedef.int_fast64_t = long
79
+ rbx.platform.typedef.int_fast8_t = char
80
+ rbx.platform.typedef.int_least32_t = int
81
+ rbx.platform.typedef.int_least64_t = long
82
+ rbx.platform.typedef.int_least8_t = char
83
+ rbx.platform.typedef.intmax_t = long
84
+ rbx.platform.typedef.intptr_t = long
76
85
  rbx.platform.typedef.key_t = int
77
86
  rbx.platform.typedef.loff_t = long
78
87
  rbx.platform.typedef.mode_t = uint
@@ -82,6 +91,7 @@ rbx.platform.typedef.pid_t = int
82
91
  rbx.platform.typedef.pthread_key_t = uint
83
92
  rbx.platform.typedef.pthread_once_t = int
84
93
  rbx.platform.typedef.pthread_t = ulong
94
+ rbx.platform.typedef.ptrdiff_t = long
85
95
  rbx.platform.typedef.quad_t = long
86
96
  rbx.platform.typedef.register_t = long
87
97
  rbx.platform.typedef.rlim_t = ulong
@@ -107,5 +117,16 @@ rbx.platform.typedef.uint16_t = ushort
107
117
  rbx.platform.typedef.uint32_t = uint
108
118
  rbx.platform.typedef.uint64_t = ulong
109
119
  rbx.platform.typedef.uint8_t = uchar
120
+ rbx.platform.typedef.uint_fast16_t = ulong
121
+ rbx.platform.typedef.uint_fast32_t = ulong
122
+ rbx.platform.typedef.uint_fast64_t = ulong
123
+ rbx.platform.typedef.uint_fast8_t = uchar
124
+ rbx.platform.typedef.uint_least16_t = ushort
125
+ rbx.platform.typedef.uint_least32_t = uint
126
+ rbx.platform.typedef.uint_least64_t = ulong
127
+ rbx.platform.typedef.uint_least8_t = uchar
128
+ rbx.platform.typedef.uintmax_t = ulong
129
+ rbx.platform.typedef.uintptr_t = ulong
110
130
  rbx.platform.typedef.ulong = ulong
111
131
  rbx.platform.typedef.ushort = ushort
132
+ rbx.platform.typedef.wchar_t = int
@@ -1,64 +1,20 @@
1
- rbx.platform.typedef.*addr_t = char
2
- rbx.platform.typedef.__ULong = ulong
3
- rbx.platform.typedef.__blkcnt32_t = long
4
- rbx.platform.typedef.__blkcnt64_t = long_long
5
- rbx.platform.typedef.__dev16_t = short
6
- rbx.platform.typedef.__dev32_t = ulong
7
- rbx.platform.typedef.__dev_t = short
8
- rbx.platform.typedef.__gid16_t = ushort
9
- rbx.platform.typedef.__gid32_t = ulong
10
- rbx.platform.typedef.__gid_t = ushort
11
- rbx.platform.typedef.__ino32_t = ulong
12
- rbx.platform.typedef.__ino64_t = ulong_long
13
- rbx.platform.typedef.__int16_t = short
14
- rbx.platform.typedef.__int32_t = int
15
- rbx.platform.typedef.__int64_t = long_long
16
- rbx.platform.typedef.__int8_t = char
17
- rbx.platform.typedef.__int_least16_t = short
18
- rbx.platform.typedef.__int_least32_t = int
19
- rbx.platform.typedef.__loff_t = long_long
20
- rbx.platform.typedef.__off_t = long
21
- rbx.platform.typedef.__pid_t = int
22
1
  rbx.platform.typedef.__time32_t = long
23
2
  rbx.platform.typedef.__time64_t = long_long
24
- rbx.platform.typedef.__uid16_t = ushort
25
- rbx.platform.typedef.__uid32_t = ulong
26
- rbx.platform.typedef.__uid_t = ushort
27
- rbx.platform.typedef.__uint16_t = ushort
28
- rbx.platform.typedef.__uint32_t = uint
29
- rbx.platform.typedef.__uint64_t = ulong_long
30
- rbx.platform.typedef.__uint8_t = uchar
31
- rbx.platform.typedef.__uint_least16_t = ushort
32
- rbx.platform.typedef.__uint_least32_t = uint
33
3
  rbx.platform.typedef._dev_t = uint
34
- rbx.platform.typedef._fpos64_t = long_long
35
- rbx.platform.typedef._fpos_t = long_long
36
4
  rbx.platform.typedef._ino_t = ushort
37
5
  rbx.platform.typedef._mode_t = ushort
38
6
  rbx.platform.typedef._off64_t = long_long
39
7
  rbx.platform.typedef._off_t = long
8
+ rbx.platform.typedef._pid_t = long_long
40
9
  rbx.platform.typedef._sigset_t = ulong_long
41
- rbx.platform.typedef._ssize_t = long_long
42
- rbx.platform.typedef.blkcnt_t = long_long
43
- rbx.platform.typedef.blksize_t = long
44
- rbx.platform.typedef.caddr_t = string
45
- rbx.platform.typedef.clock_t = ulong
46
- rbx.platform.typedef.clockid_t = ulong
47
- rbx.platform.typedef.daddr_t = long
48
10
  rbx.platform.typedef.dev_t = uint
49
11
  rbx.platform.typedef.errno_t = int
50
- rbx.platform.typedef.fd_mask = long
51
- rbx.platform.typedef.fpos_t = long_long
52
- rbx.platform.typedef.fsblkcnt_t = ulong
53
- rbx.platform.typedef.fsfilcnt_t = ulong
54
- rbx.platform.typedef.gid_t = ulong
55
- rbx.platform.typedef.id_t = ulong
56
12
  rbx.platform.typedef.ino_t = ushort
57
13
  rbx.platform.typedef.int16_t = short
58
14
  rbx.platform.typedef.int32_t = int
59
15
  rbx.platform.typedef.int64_t = long_long
60
16
  rbx.platform.typedef.int8_t = char
61
- rbx.platform.typedef.int_fast16_t = int
17
+ rbx.platform.typedef.int_fast16_t = short
62
18
  rbx.platform.typedef.int_fast32_t = int
63
19
  rbx.platform.typedef.int_fast64_t = long_long
64
20
  rbx.platform.typedef.int_fast8_t = char
@@ -68,53 +24,29 @@ rbx.platform.typedef.int_least64_t = long_long
68
24
  rbx.platform.typedef.int_least8_t = char
69
25
  rbx.platform.typedef.intmax_t = long_long
70
26
  rbx.platform.typedef.intptr_t = long_long
71
- rbx.platform.typedef.key_t = long_long
72
- rbx.platform.typedef.loff_t = long_long
73
27
  rbx.platform.typedef.mode_t = ushort
74
- rbx.platform.typedef.nlink_t = ushort
28
+ rbx.platform.typedef.off32_t = long
29
+ rbx.platform.typedef.off64_t = long_long
75
30
  rbx.platform.typedef.off_t = long_long
76
- rbx.platform.typedef.pid_t = int
31
+ rbx.platform.typedef.pid_t = long_long
77
32
  rbx.platform.typedef.ptrdiff_t = long_long
78
- rbx.platform.typedef.register_t = int
79
- rbx.platform.typedef.rlim_t = ulong
80
- rbx.platform.typedef.sa_family_t = ushort
81
- rbx.platform.typedef.sig_atomic_t = int
82
- rbx.platform.typedef.sigset_t = ulong
33
+ rbx.platform.typedef.rsize_t = ulong_long
83
34
  rbx.platform.typedef.size_t = ulong_long
84
- rbx.platform.typedef.socklen_t = int
85
- rbx.platform.typedef.ssize_t = int
86
- rbx.platform.typedef.suseconds_t = long
35
+ rbx.platform.typedef.ssize_t = long_long
87
36
  rbx.platform.typedef.time_t = long_long
88
- rbx.platform.typedef.timer_t = ulong
89
- rbx.platform.typedef.u_char = uchar
90
- rbx.platform.typedef.u_int = uint
91
- rbx.platform.typedef.u_int16_t = ushort
92
- rbx.platform.typedef.u_int32_t = uint
93
- rbx.platform.typedef.u_int64_t = ulong_long
94
- rbx.platform.typedef.u_int8_t = uchar
95
- rbx.platform.typedef.u_long = ulong
96
- rbx.platform.typedef.u_short = ushort
97
- rbx.platform.typedef.uid_t = ulong
98
- rbx.platform.typedef.uint = uint
99
37
  rbx.platform.typedef.uint16_t = ushort
100
- rbx.platform.typedef.uint32_t = uint
101
38
  rbx.platform.typedef.uint64_t = ulong_long
102
39
  rbx.platform.typedef.uint8_t = uchar
103
- rbx.platform.typedef.uint_fast16_t = uint
40
+ rbx.platform.typedef.uint_fast16_t = ushort
104
41
  rbx.platform.typedef.uint_fast32_t = uint
105
42
  rbx.platform.typedef.uint_fast64_t = ulong_long
106
43
  rbx.platform.typedef.uint_fast8_t = uchar
107
44
  rbx.platform.typedef.uint_least16_t = ushort
108
- rbx.platform.typedef.uint_least32_t = uint
109
45
  rbx.platform.typedef.uint_least64_t = ulong_long
110
46
  rbx.platform.typedef.uint_least8_t = uchar
111
47
  rbx.platform.typedef.uintmax_t = ulong_long
112
48
  rbx.platform.typedef.uintptr_t = ulong_long
113
- rbx.platform.typedef.ulong = ulong
114
- rbx.platform.typedef.useconds_t = ulong
115
- rbx.platform.typedef.ushort = ushort
116
- rbx.platform.typedef.vm_offset_t = ulong
117
- rbx.platform.typedef.vm_size_t = ulong
49
+ rbx.platform.typedef.useconds_t = uint
118
50
  rbx.platform.typedef.wchar_t = ushort
119
51
  rbx.platform.typedef.wctype_t = ushort
120
- rbx.platform.typedef.wint_t = uint
52
+ rbx.platform.typedef.wint_t = ushort
@@ -31,17 +31,24 @@
31
31
  #
32
32
 
33
33
  require 'ffi/platform'
34
+
35
+ # NOTE: all method definitions in this file are conditional on
36
+ # whether they are not already defined. This is needed because
37
+ # some Ruby implementations (e.g., TruffleRuby) might already
38
+ # provide these methods due to using FFI internally, and we
39
+ # should not override them to avoid warnings.
40
+
34
41
  module FFI
35
42
  class Pointer
36
43
 
37
44
  # Pointer size
38
- SIZE = Platform::ADDRESS_SIZE / 8
45
+ SIZE = Platform::ADDRESS_SIZE / 8 unless const_defined?(:SIZE)
39
46
 
40
47
  # Return the size of a pointer on the current platform, in bytes
41
48
  # @return [Numeric]
42
49
  def self.size
43
50
  SIZE
44
- end
51
+ end unless respond_to?(:size)
45
52
 
46
53
  # @param [nil,Numeric] len length of string to return
47
54
  # @return [String]
@@ -54,7 +61,7 @@ module FFI
54
61
  else
55
62
  get_string(0)
56
63
  end
57
- end
64
+ end unless method_defined?(:read_string)
58
65
 
59
66
  # @param [Numeric] len length of string to return
60
67
  # @return [String]
@@ -64,7 +71,7 @@ module FFI
64
71
  # ptr.read_string(len) # with len not nil
65
72
  def read_string_length(len)
66
73
  get_bytes(0, len)
67
- end
74
+ end unless method_defined?(:read_string_length)
68
75
 
69
76
  # @return [String]
70
77
  # Read pointer's contents as a string.
@@ -73,7 +80,7 @@ module FFI
73
80
  # ptr.read_string # with no len
74
81
  def read_string_to_null
75
82
  get_string(0)
76
- end
83
+ end unless method_defined?(:read_string_to_null)
77
84
 
78
85
  # @param [String] str string to write
79
86
  # @param [Numeric] len length of string to return
@@ -84,7 +91,7 @@ module FFI
84
91
  # ptr.write_string(str, len) # with len not nil
85
92
  def write_string_length(str, len)
86
93
  put_bytes(0, str, 0, len)
87
- end
94
+ end unless method_defined?(:write_string_length)
88
95
 
89
96
  # @param [String] str string to write
90
97
  # @param [Numeric] len length of string to return
@@ -95,7 +102,7 @@ module FFI
95
102
  len = str.bytesize unless len
96
103
  # Write the string data without NUL termination
97
104
  put_bytes(0, str, 0, len)
98
- end
105
+ end unless method_defined?(:write_string)
99
106
 
100
107
  # @param [Type] type type of data to read from pointer's contents
101
108
  # @param [Symbol] reader method to send to +self+ to read +type+
@@ -113,7 +120,7 @@ module FFI
113
120
  tmp += size unless j == length-1 # avoid OOB
114
121
  }
115
122
  ary
116
- end
123
+ end unless method_defined?(:read_array_of_type)
117
124
 
118
125
  # @param [Type] type type of data to write to pointer's contents
119
126
  # @param [Symbol] writer method to send to +self+ to write +type+
@@ -129,12 +136,12 @@ module FFI
129
136
  self.send(writer, i * size, val)
130
137
  }
131
138
  self
132
- end
139
+ end unless method_defined?(:write_array_of_type)
133
140
 
134
141
  # @return [self]
135
142
  def to_ptr
136
143
  self
137
- end
144
+ end unless method_defined?(:to_ptr)
138
145
 
139
146
  # @param [Symbol,Type] type of data to read
140
147
  # @return [Object]
@@ -144,7 +151,7 @@ module FFI
144
151
  # ptr.get(type, 0)
145
152
  def read(type)
146
153
  get(type, 0)
147
- end
154
+ end unless method_defined?(:read)
148
155
 
149
156
  # @param [Symbol,Type] type of data to read
150
157
  # @param [Object] value to write
@@ -155,6 +162,6 @@ module FFI
155
162
  # ptr.put(type, 0)
156
163
  def write(type, value)
157
164
  put(type, 0, value)
158
- end
165
+ end unless method_defined?(:write)
159
166
  end
160
167
  end
@@ -228,7 +228,11 @@ module FFI
228
228
 
229
229
  def callback(params, ret)
230
230
  mod = enclosing_module
231
- FFI::CallbackInfo.new(find_type(ret, mod), params.map { |e| find_type(e, mod) })
231
+ ret_type = find_type(ret, mod)
232
+ if ret_type == Type::STRING
233
+ raise TypeError, ":string is not allowed as return type of callbacks"
234
+ end
235
+ FFI::CallbackInfo.new(ret_type, params.map { |e| find_type(e, mod) })
232
236
  end
233
237
 
234
238
  def packed(packed = 1)
@@ -244,7 +248,9 @@ module FFI
244
248
  def enclosing_module
245
249
  begin
246
250
  mod = self.name.split("::")[0..-2].inject(Object) { |obj, c| obj.const_get(c) }
247
- (mod < FFI::Library || mod < FFI::Struct || mod.respond_to?(:find_type)) ? mod : nil
251
+ if mod.respond_to?(:find_type) && (mod.is_a?(FFI::Library) || mod < FFI::Struct)
252
+ mod
253
+ end
248
254
  rescue Exception
249
255
  nil
250
256
  end
@@ -47,6 +47,8 @@ module FFI
47
47
  typedefs = nil
48
48
  Tempfile.open 'ffi_types_generator' do |io|
49
49
  io.puts <<-C
50
+ #include <stdint.h>
51
+ #include <stddef.h>
50
52
  #include <sys/types.h>
51
53
  #if !(defined(WIN32))
52
54
  #include <sys/socket.h>
@@ -1,3 +1,3 @@
1
1
  module FFI
2
- VERSION = '1.12.2'
2
+ VERSION = '1.13.0'
3
3
  end
@@ -1,5 +1,5 @@
1
- require 'rubygems'
2
1
  require 'ffi'
2
+
3
3
  module Foo
4
4
  extend FFI::Library
5
5
  ffi_lib FFI::Library::LIBC
@@ -1,5 +1,5 @@
1
- require 'rubygems'
2
1
  require 'ffi'
2
+
3
3
  module Foo
4
4
  extend FFI::Library
5
5
  ffi_lib FFI::Library::LIBC
@@ -1,16 +1,16 @@
1
- require 'rubygems'
2
1
  require 'ffi'
2
+ require 'rbconfig'
3
+
3
4
  class Timeval < FFI::Struct
4
- rb_maj, rb_min, rb_micro = RUBY_VERSION.split('.')
5
- if rb_maj.to_i >= 1 && rb_min.to_i >= 9 || RUBY_PLATFORM =~ /java/
6
- layout :tv_sec => :ulong, :tv_usec => :ulong
7
- else
8
- layout :tv_sec, :ulong, 0, :tv_usec, :ulong, 4
9
- end
5
+ layout tv_sec: :ulong, tv_usec: :ulong
10
6
  end
11
7
  module LibC
12
8
  extend FFI::Library
13
- ffi_lib FFI::Library::LIBC
9
+ if FFI::Platform.windows?
10
+ ffi_lib RbConfig::CONFIG["LIBRUBY_SO"]
11
+ else
12
+ ffi_lib FFI::Library::LIBC
13
+ end
14
14
  attach_function :gettimeofday, [ :pointer, :pointer ], :int
15
15
  end
16
16
  t = Timeval.new
@@ -1,4 +1,5 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), "sample_helper"))
1
+ require 'ffi'
2
+
2
3
  module Foo
3
4
  extend FFI::Library
4
5
  ffi_lib FFI::Library::LIBC
@@ -1,5 +1,5 @@
1
- require 'rubygems'
2
1
  require 'ffi'
2
+
3
3
  module Inotify
4
4
  extend FFI::Library
5
5
  ffi_lib FFI::Library::LIBC
@@ -1,6 +1,5 @@
1
1
  require 'ffi'
2
2
 
3
-
4
3
  module PTY
5
4
  private
6
5
  module LibC
@@ -41,7 +40,7 @@ module PTY
41
40
  #
42
41
  exec_cmd, exec_args = build_args(args)
43
42
  pid = LibC.forkpty(mfdp, name, nil, nil)
44
- raise "forkpty failed: #{LibC.strerror(FFI.errno)}" if pid < 0
43
+ raise "forkpty failed: #{LibC.strerror(FFI.errno)}" if pid < 0
45
44
  if pid == 0
46
45
  LibC.execvp(exec_cmd, exec_args)
47
46
  exit 1
@@ -1,4 +1,3 @@
1
- require 'rubygems'
2
1
  require 'ffi'
3
2
 
4
3
  module LibC
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ffi
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.12.2
4
+ version: 1.13.0
5
5
  platform: x86-mingw32
6
6
  authors:
7
7
  - Wayne Meissner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-01 00:00:00.000000000 Z
11
+ date: 2020-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -87,6 +87,7 @@ extensions: []
87
87
  extra_rdoc_files: []
88
88
  files:
89
89
  - ".appveyor.yml"
90
+ - ".github/workflows/ci.yml"
90
91
  - ".gitignore"
91
92
  - ".gitmodules"
92
93
  - ".travis.yml"
@@ -99,7 +100,6 @@ files:
99
100
  - README.md
100
101
  - Rakefile
101
102
  - ffi.gemspec
102
- - lib/2.2/ffi_c.so
103
103
  - lib/2.3/ffi_c.so
104
104
  - lib/2.4/ffi_c.so
105
105
  - lib/2.5/ffi_c.so
@@ -146,12 +146,14 @@ files:
146
146
  - lib/ffi/platform/powerpc-aix/types.conf
147
147
  - lib/ffi/platform/powerpc-darwin/types.conf
148
148
  - lib/ffi/platform/powerpc-linux/types.conf
149
+ - lib/ffi/platform/powerpc-openbsd/types.conf
149
150
  - lib/ffi/platform/powerpc64-linux/types.conf
150
151
  - lib/ffi/platform/s390-linux/types.conf
151
152
  - lib/ffi/platform/s390x-linux/types.conf
152
153
  - lib/ffi/platform/sparc-linux/types.conf
153
154
  - lib/ffi/platform/sparc-solaris/types.conf
154
155
  - lib/ffi/platform/sparc64-linux/types.conf
156
+ - lib/ffi/platform/sparcv9-openbsd/types.conf
155
157
  - lib/ffi/platform/sparcv9-solaris/types.conf
156
158
  - lib/ffi/platform/x86_64-cygwin/types.conf
157
159
  - lib/ffi/platform/x86_64-darwin/types.conf
@@ -184,7 +186,6 @@ files:
184
186
  - samples/inotify.rb
185
187
  - samples/pty.rb
186
188
  - samples/qsort.rb
187
- - samples/sample_helper.rb
188
189
  homepage: https://github.com/ffi/ffi/wiki
189
190
  licenses:
190
191
  - BSD-3-Clause
@@ -205,7 +206,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
205
206
  requirements:
206
207
  - - ">="
207
208
  - !ruby/object:Gem::Version
208
- version: '2.2'
209
+ version: '2.3'
209
210
  - - "<"
210
211
  - !ruby/object:Gem::Version
211
212
  version: 2.8.dev