ffi 1.12.2-x86-mingw32 → 1.14.2-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.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +82 -0
  3. data/Gemfile +4 -2
  4. data/README.md +10 -2
  5. data/Rakefile +31 -43
  6. data/ffi.gemspec +2 -2
  7. data/lib/2.3/ffi_c.so +0 -0
  8. data/lib/2.4/ffi_c.so +0 -0
  9. data/lib/2.5/ffi_c.so +0 -0
  10. data/lib/2.6/ffi_c.so +0 -0
  11. data/lib/2.7/ffi_c.so +0 -0
  12. data/lib/3.0/ffi_c.so +0 -0
  13. data/lib/ffi.rb +10 -2
  14. data/lib/ffi/abstract_memory.rb +44 -0
  15. data/lib/ffi/autopointer.rb +1 -1
  16. data/lib/ffi/ffi.rb +1 -0
  17. data/lib/ffi/io.rb +3 -3
  18. data/lib/ffi/library.rb +6 -2
  19. data/lib/ffi/managedstruct.rb +2 -2
  20. data/lib/ffi/platform.rb +21 -8
  21. data/lib/ffi/platform/aarch64-darwin/types.conf +130 -0
  22. data/lib/ffi/platform/aarch64-openbsd/types.conf +134 -0
  23. data/lib/ffi/platform/arm-linux/types.conf +32 -4
  24. data/lib/ffi/platform/i386-windows/types.conf +26 -79
  25. data/lib/ffi/platform/powerpc-linux/types.conf +32 -2
  26. data/lib/ffi/platform/powerpc-openbsd/types.conf +156 -0
  27. data/lib/ffi/platform/sparcv9-openbsd/types.conf +156 -0
  28. data/lib/ffi/platform/x86_64-darwin/types.conf +4 -0
  29. data/lib/ffi/platform/x86_64-dragonflybsd/types.conf +4 -22
  30. data/lib/ffi/platform/x86_64-haiku/types.conf +117 -0
  31. data/lib/ffi/platform/x86_64-linux/types.conf +21 -0
  32. data/lib/ffi/platform/x86_64-msys/types.conf +119 -0
  33. data/lib/ffi/platform/x86_64-windows/types.conf +10 -78
  34. data/lib/ffi/pointer.rb +21 -14
  35. data/lib/ffi/struct.rb +8 -2
  36. data/lib/ffi/tools/types_generator.rb +2 -0
  37. data/lib/ffi/variadic.rb +1 -1
  38. data/lib/ffi/version.rb +1 -1
  39. data/samples/getlogin.rb +1 -1
  40. data/samples/getpid.rb +1 -1
  41. data/samples/gettimeofday.rb +8 -8
  42. data/samples/hello.rb +2 -1
  43. data/samples/inotify.rb +1 -1
  44. data/samples/pty.rb +1 -2
  45. data/samples/qsort.rb +0 -1
  46. metadata +13 -12
  47. data/.appveyor.yml +0 -27
  48. data/.gitignore +0 -25
  49. data/.gitmodules +0 -4
  50. data/.travis.yml +0 -44
  51. data/.yardopts +0 -5
  52. data/samples/sample_helper.rb +0 -6
@@ -0,0 +1,117 @@
1
+ rbx.platform.typedef.__haiku_addr_t = ulong
2
+ rbx.platform.typedef.__haiku_generic_addr_t = ulong
3
+ rbx.platform.typedef.__haiku_int16 = short
4
+ rbx.platform.typedef.__haiku_int32 = int
5
+ rbx.platform.typedef.__haiku_int64 = long
6
+ rbx.platform.typedef.__haiku_int8 = char
7
+ rbx.platform.typedef.__haiku_phys_addr_t = ulong
8
+ rbx.platform.typedef.__haiku_phys_saddr_t = long
9
+ rbx.platform.typedef.__haiku_saddr_t = long
10
+ rbx.platform.typedef.__haiku_std_int16 = short
11
+ rbx.platform.typedef.__haiku_std_int32 = int
12
+ rbx.platform.typedef.__haiku_std_int64 = long
13
+ rbx.platform.typedef.__haiku_std_int8 = char
14
+ rbx.platform.typedef.__haiku_std_uint16 = ushort
15
+ rbx.platform.typedef.__haiku_std_uint32 = uint
16
+ rbx.platform.typedef.__haiku_std_uint64 = ulong
17
+ rbx.platform.typedef.__haiku_std_uint8 = uchar
18
+ rbx.platform.typedef.__haiku_uint16 = ushort
19
+ rbx.platform.typedef.__haiku_uint32 = uint
20
+ rbx.platform.typedef.__haiku_uint64 = ulong
21
+ rbx.platform.typedef.__haiku_uint8 = uchar
22
+ rbx.platform.typedef.addr_t = ulong
23
+ rbx.platform.typedef.bigtime_t = long
24
+ rbx.platform.typedef.blkcnt_t = long
25
+ rbx.platform.typedef.blksize_t = int
26
+ rbx.platform.typedef.caddr_t = pointer
27
+ rbx.platform.typedef.clock_t = int
28
+ rbx.platform.typedef.clockid_t = int
29
+ rbx.platform.typedef.cnt_t = int
30
+ rbx.platform.typedef.daddr_t = long
31
+ rbx.platform.typedef.dev_t = int
32
+ rbx.platform.typedef.fd_mask = uint
33
+ rbx.platform.typedef.fsblkcnt_t = long
34
+ rbx.platform.typedef.fsfilcnt_t = long
35
+ rbx.platform.typedef.generic_addr_t = ulong
36
+ rbx.platform.typedef.generic_size_t = ulong
37
+ rbx.platform.typedef.gid_t = uint
38
+ rbx.platform.typedef.id_t = int
39
+ rbx.platform.typedef.in_addr_t = uint
40
+ rbx.platform.typedef.in_port_t = ushort
41
+ rbx.platform.typedef.ino_t = long
42
+ rbx.platform.typedef.int16 = short
43
+ rbx.platform.typedef.int16_t = short
44
+ rbx.platform.typedef.int32 = int
45
+ rbx.platform.typedef.int32_t = int
46
+ rbx.platform.typedef.int64 = long
47
+ rbx.platform.typedef.int64_t = long
48
+ rbx.platform.typedef.int8 = char
49
+ rbx.platform.typedef.int8_t = char
50
+ rbx.platform.typedef.int_fast16_t = int
51
+ rbx.platform.typedef.int_fast32_t = int
52
+ rbx.platform.typedef.int_fast64_t = long
53
+ rbx.platform.typedef.int_fast8_t = int
54
+ rbx.platform.typedef.int_least16_t = short
55
+ rbx.platform.typedef.int_least32_t = int
56
+ rbx.platform.typedef.int_least64_t = long
57
+ rbx.platform.typedef.int_least8_t = char
58
+ rbx.platform.typedef.intmax_t = long
59
+ rbx.platform.typedef.intptr_t = long
60
+ rbx.platform.typedef.key_t = int
61
+ rbx.platform.typedef.mode_t = uint
62
+ rbx.platform.typedef.nanotime_t = long
63
+ rbx.platform.typedef.nlink_t = int
64
+ rbx.platform.typedef.off_t = long
65
+ rbx.platform.typedef.perform_code = uint
66
+ rbx.platform.typedef.phys_addr_t = ulong
67
+ rbx.platform.typedef.phys_size_t = ulong
68
+ rbx.platform.typedef.pid_t = int
69
+ rbx.platform.typedef.pthread_key_t = int
70
+ rbx.platform.typedef.ptrdiff_t = long
71
+ rbx.platform.typedef.rlim_t = ulong
72
+ rbx.platform.typedef.sa_family_t = uchar
73
+ rbx.platform.typedef.sig_atomic_t = int
74
+ rbx.platform.typedef.sigset_t = ulong
75
+ rbx.platform.typedef.size_t = ulong
76
+ rbx.platform.typedef.socklen_t = uint
77
+ rbx.platform.typedef.status_t = int
78
+ rbx.platform.typedef.suseconds_t = int
79
+ rbx.platform.typedef.time_t = long
80
+ rbx.platform.typedef.type_code = uint
81
+ rbx.platform.typedef.u_char = uchar
82
+ rbx.platform.typedef.u_int = uint
83
+ rbx.platform.typedef.u_int16_t = ushort
84
+ rbx.platform.typedef.u_int32_t = uint
85
+ rbx.platform.typedef.u_int64_t = ulong
86
+ rbx.platform.typedef.u_int8_t = uchar
87
+ rbx.platform.typedef.u_long = ulong
88
+ rbx.platform.typedef.u_short = ushort
89
+ rbx.platform.typedef.uchar = uchar
90
+ rbx.platform.typedef.uid_t = uint
91
+ rbx.platform.typedef.uint = uint
92
+ rbx.platform.typedef.uint16 = ushort
93
+ rbx.platform.typedef.uint16_t = ushort
94
+ rbx.platform.typedef.uint32 = uint
95
+ rbx.platform.typedef.uint32_t = uint
96
+ rbx.platform.typedef.uint64 = ulong
97
+ rbx.platform.typedef.uint64_t = ulong
98
+ rbx.platform.typedef.uint8 = uchar
99
+ rbx.platform.typedef.uint8_t = uchar
100
+ rbx.platform.typedef.uint_fast16_t = uint
101
+ rbx.platform.typedef.uint_fast32_t = uint
102
+ rbx.platform.typedef.uint_fast64_t = ulong
103
+ rbx.platform.typedef.uint_fast8_t = uint
104
+ rbx.platform.typedef.uint_least16_t = ushort
105
+ rbx.platform.typedef.uint_least32_t = uint
106
+ rbx.platform.typedef.uint_least64_t = ulong
107
+ rbx.platform.typedef.uint_least8_t = uchar
108
+ rbx.platform.typedef.uintmax_t = ulong
109
+ rbx.platform.typedef.uintptr_t = ulong
110
+ rbx.platform.typedef.ulong = ulong
111
+ rbx.platform.typedef.umode_t = uint
112
+ rbx.platform.typedef.unchar = uchar
113
+ rbx.platform.typedef.unichar = ushort
114
+ rbx.platform.typedef.useconds_t = uint
115
+ rbx.platform.typedef.ushort = ushort
116
+ rbx.platform.typedef.void*) = pointer
117
+ 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
@@ -0,0 +1,119 @@
1
+ rbx.platform.typedef.*addr_t = char
2
+ rbx.platform.typedef.__ULong = uint
3
+ rbx.platform.typedef.__blkcnt_t = long
4
+ rbx.platform.typedef.__blksize_t = int
5
+ rbx.platform.typedef.__clock_t = ulong
6
+ rbx.platform.typedef.__clockid_t = ulong
7
+ rbx.platform.typedef.__cpu_mask = ulong
8
+ rbx.platform.typedef.__dev_t = uint
9
+ rbx.platform.typedef.__fsblkcnt_t = ulong
10
+ rbx.platform.typedef.__fsfilcnt_t = ulong
11
+ rbx.platform.typedef.__gid_t = uint
12
+ rbx.platform.typedef.__id_t = uint
13
+ rbx.platform.typedef.__ino_t = ulong
14
+ rbx.platform.typedef.__int32_t = int
15
+ rbx.platform.typedef.__int64_t = long
16
+ rbx.platform.typedef.__int8_t = char
17
+ rbx.platform.typedef.__int_least32_t = int
18
+ rbx.platform.typedef.__int_least64_t = long
19
+ rbx.platform.typedef.__int_least8_t = char
20
+ rbx.platform.typedef.__intmax_t = long
21
+ rbx.platform.typedef.__intptr_t = long
22
+ rbx.platform.typedef.__key_t = long_long
23
+ rbx.platform.typedef.__loff_t = long_long
24
+ rbx.platform.typedef.__mode_t = uint
25
+ rbx.platform.typedef.__nl_item = int
26
+ rbx.platform.typedef.__nlink_t = ushort
27
+ rbx.platform.typedef.__off_t = long
28
+ rbx.platform.typedef.__pid_t = int
29
+ rbx.platform.typedef.__sigset_t = ulong
30
+ rbx.platform.typedef.__size_t = ulong
31
+ rbx.platform.typedef.__socklen_t = int
32
+ rbx.platform.typedef.__suseconds_t = long
33
+ rbx.platform.typedef.__time_t = long
34
+ rbx.platform.typedef.__timer_t = ulong
35
+ rbx.platform.typedef.__uid_t = uint
36
+ rbx.platform.typedef.__uint32_t = uint
37
+ rbx.platform.typedef.__uint64_t = ulong
38
+ rbx.platform.typedef.__uint8_t = uchar
39
+ rbx.platform.typedef.__uint_least32_t = uint
40
+ rbx.platform.typedef.__uint_least64_t = ulong
41
+ rbx.platform.typedef.__uint_least8_t = uchar
42
+ rbx.platform.typedef.__uintmax_t = ulong
43
+ rbx.platform.typedef.__uintptr_t = ulong
44
+ rbx.platform.typedef.__useconds_t = ulong
45
+ rbx.platform.typedef._fpos64_t = long_long
46
+ rbx.platform.typedef._fpos_t = long
47
+ rbx.platform.typedef._off64_t = long_long
48
+ rbx.platform.typedef._off_t = long
49
+ rbx.platform.typedef.blkcnt_t = long
50
+ rbx.platform.typedef.blksize_t = int
51
+ rbx.platform.typedef.caddr_t = string
52
+ rbx.platform.typedef.clock_t = ulong
53
+ rbx.platform.typedef.clockid_t = ulong
54
+ rbx.platform.typedef.daddr_t = long
55
+ rbx.platform.typedef.dev_t = uint
56
+ rbx.platform.typedef.fd_mask = ulong
57
+ rbx.platform.typedef.fsblkcnt_t = ulong
58
+ rbx.platform.typedef.fsfilcnt_t = ulong
59
+ rbx.platform.typedef.gid_t = uint
60
+ rbx.platform.typedef.id_t = uint
61
+ rbx.platform.typedef.in_addr_t = uint
62
+ rbx.platform.typedef.ino_t = ulong
63
+ rbx.platform.typedef.int32_t = int
64
+ rbx.platform.typedef.int64_t = long
65
+ rbx.platform.typedef.int8_t = char
66
+ rbx.platform.typedef.int_fast16_t = long
67
+ rbx.platform.typedef.int_fast32_t = long
68
+ rbx.platform.typedef.int_fast64_t = long
69
+ rbx.platform.typedef.int_fast8_t = char
70
+ rbx.platform.typedef.int_least32_t = int
71
+ rbx.platform.typedef.int_least64_t = long
72
+ rbx.platform.typedef.int_least8_t = char
73
+ rbx.platform.typedef.intmax_t = long
74
+ rbx.platform.typedef.intptr_t = long
75
+ rbx.platform.typedef.key_t = long_long
76
+ rbx.platform.typedef.loff_t = long_long
77
+ rbx.platform.typedef.mode_t = uint
78
+ rbx.platform.typedef.nlink_t = ushort
79
+ rbx.platform.typedef.off_t = long
80
+ rbx.platform.typedef.pid_t = int
81
+ rbx.platform.typedef.ptrdiff_t = long
82
+ rbx.platform.typedef.register_t = long
83
+ rbx.platform.typedef.rlim_t = ulong
84
+ rbx.platform.typedef.sbintime_t = long
85
+ rbx.platform.typedef.sig_atomic_t = int
86
+ rbx.platform.typedef.sigset_t = ulong
87
+ rbx.platform.typedef.size_t = ulong
88
+ rbx.platform.typedef.socklen_t = int
89
+ rbx.platform.typedef.suseconds_t = long
90
+ rbx.platform.typedef.time_t = long
91
+ rbx.platform.typedef.timer_t = ulong
92
+ rbx.platform.typedef.u_char = uchar
93
+ rbx.platform.typedef.u_int = uint
94
+ rbx.platform.typedef.u_int32_t = uint
95
+ rbx.platform.typedef.u_int64_t = ulong
96
+ rbx.platform.typedef.u_int8_t = uchar
97
+ rbx.platform.typedef.u_long = ulong
98
+ rbx.platform.typedef.u_register_t = ulong
99
+ rbx.platform.typedef.u_short = ushort
100
+ rbx.platform.typedef.uid_t = uint
101
+ rbx.platform.typedef.uint = uint
102
+ rbx.platform.typedef.uint32_t = uint
103
+ rbx.platform.typedef.uint64_t = ulong
104
+ rbx.platform.typedef.uint8_t = uchar
105
+ rbx.platform.typedef.uint_fast16_t = ulong
106
+ rbx.platform.typedef.uint_fast32_t = ulong
107
+ rbx.platform.typedef.uint_fast64_t = ulong
108
+ rbx.platform.typedef.uint_fast8_t = uchar
109
+ rbx.platform.typedef.uint_least32_t = uint
110
+ rbx.platform.typedef.uint_least64_t = ulong
111
+ rbx.platform.typedef.uint_least8_t = uchar
112
+ rbx.platform.typedef.uintmax_t = ulong
113
+ rbx.platform.typedef.uintptr_t = ulong
114
+ rbx.platform.typedef.ulong = ulong
115
+ rbx.platform.typedef.useconds_t = ulong
116
+ rbx.platform.typedef.ushort = ushort
117
+ rbx.platform.typedef.vm_offset_t = ulong
118
+ rbx.platform.typedef.vm_size_t = ulong
119
+ rbx.platform.typedef.wint_t = uint
@@ -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,21 +31,28 @@
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]
48
- # Read pointer's contents as a string, or the first +len+ bytes of the
55
+ # Read pointer's contents as a string, or the first +len+ bytes of the
49
56
  # equivalent string if +len+ is not +nil+.
50
57
  def read_string(len=nil)
51
58
  if len
@@ -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,18 +91,18 @@ 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
91
98
  # @return [self]
92
- # Write +str+ in pointer's contents, or first +len+ bytes if
99
+ # Write +str+ in pointer's contents, or first +len+ bytes if
93
100
  # +len+ is not +nil+.
94
101
  def write_string(str, len=nil)
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