ffi 0.6.0 → 0.6.4
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.
- data/History.txt +102 -0
- data/README.md +109 -0
- data/Rakefile +85 -56
- data/ext/ffi_c/Call.c +3 -3
- data/ext/ffi_c/Ffi_c.iml +12 -0
- data/ext/ffi_c/Function.c +3 -2
- data/ext/ffi_c/Struct.c +88 -13
- data/ext/ffi_c/StructLayout.c +2 -1
- data/ext/ffi_c/Types.c +1 -1
- data/ext/ffi_c/libffi/configure +1 -1
- data/ext/ffi_c/libffi.gnu.mk +1 -1
- data/ext/ffi_c/libffi.mk +1 -1
- data/ffi.gemspec +18 -0
- data/gen/Rakefile +4 -2
- data/gen/log +1 -0
- data/lib/Lib.iml +21 -0
- data/lib/ffi/ffi.rb +1 -0
- data/lib/ffi/library.rb +2 -2
- data/lib/ffi/platform.rb +5 -3
- data/lib/ffi/struct.rb +2 -2
- data/libtest/Benchmark.c +73 -0
- data/libtest/BoolTest.c +52 -0
- data/libtest/BufferTest.c +52 -0
- data/libtest/ClosureTest.c +173 -0
- data/libtest/EnumTest.c +55 -0
- data/libtest/FunctionTest.c +50 -0
- data/libtest/GNUmakefile +141 -0
- data/libtest/GlobalVariable.c +56 -0
- data/libtest/LastErrorTest.c +41 -0
- data/libtest/NumberTest.c +145 -0
- data/libtest/PointerTest.c +84 -0
- data/libtest/ReferenceTest.c +44 -0
- data/libtest/StringTest.c +55 -0
- data/libtest/StructTest.c +247 -0
- data/libtest/UnionTest.c +64 -0
- data/libtest/VariadicTest.c +57 -0
- data/spec/ffi/Ffi.iml +12 -0
- data/spec/ffi/struct_spec.rb +20 -2
- metadata +138 -93
- data/README.rdoc +0 -69
metadata
CHANGED
|
@@ -1,44 +1,75 @@
|
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ffi
|
|
3
|
-
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.6.
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.6.4
|
|
5
|
+
prerelease:
|
|
5
6
|
platform: ruby
|
|
6
|
-
authors:
|
|
7
|
+
authors:
|
|
7
8
|
- Wayne Meissner
|
|
8
9
|
autorequire:
|
|
9
10
|
bindir: bin
|
|
10
11
|
cert_chain: []
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
dependencies:
|
|
15
|
-
- !ruby/object:Gem::Dependency
|
|
12
|
+
date: 2013-02-11 00:00:00.000000000 Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
16
15
|
name: rake
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
requirements:
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
17
|
+
none: false
|
|
18
|
+
requirements:
|
|
21
19
|
- - ">="
|
|
22
|
-
- !ruby/object:Gem::Version
|
|
23
|
-
version: 0
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: '0'
|
|
22
|
+
type: :development
|
|
23
|
+
prerelease: false
|
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
+
none: false
|
|
26
|
+
requirements:
|
|
27
|
+
- - ">="
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: '0'
|
|
30
|
+
- !ruby/object:Gem::Dependency
|
|
31
|
+
name: rake-compiler
|
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
|
33
|
+
none: false
|
|
34
|
+
requirements:
|
|
35
|
+
- - ">="
|
|
36
|
+
- !ruby/object:Gem::Version
|
|
37
|
+
version: 0.6.0
|
|
38
|
+
type: :development
|
|
39
|
+
prerelease: false
|
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
41
|
+
none: false
|
|
42
|
+
requirements:
|
|
43
|
+
- - ">="
|
|
44
|
+
- !ruby/object:Gem::Version
|
|
45
|
+
version: 0.6.0
|
|
46
|
+
- !ruby/object:Gem::Dependency
|
|
47
|
+
name: rspec
|
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
|
49
|
+
none: false
|
|
50
|
+
requirements:
|
|
51
|
+
- - ">="
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '0'
|
|
54
|
+
type: :development
|
|
55
|
+
prerelease: false
|
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
+
none: false
|
|
58
|
+
requirements:
|
|
59
|
+
- - ">="
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
description: Ruby FFI library
|
|
31
63
|
email: wmeissner@gmail.com
|
|
32
64
|
executables: []
|
|
33
|
-
|
|
34
|
-
extensions:
|
|
65
|
+
extensions:
|
|
35
66
|
- ext/ffi_c/extconf.rb
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
-
|
|
39
|
-
|
|
67
|
+
extra_rdoc_files: []
|
|
68
|
+
files:
|
|
69
|
+
- ffi.gemspec
|
|
70
|
+
- History.txt
|
|
40
71
|
- LICENSE
|
|
41
|
-
- README.
|
|
72
|
+
- README.md
|
|
42
73
|
- Rakefile
|
|
43
74
|
- ext/ffi_c/AbstractMemory.c
|
|
44
75
|
- ext/ffi_c/AbstractMemory.h
|
|
@@ -51,49 +82,24 @@ files:
|
|
|
51
82
|
- ext/ffi_c/Call.h
|
|
52
83
|
- ext/ffi_c/ClosurePool.c
|
|
53
84
|
- ext/ffi_c/ClosurePool.h
|
|
85
|
+
- ext/ffi_c/compat.h
|
|
54
86
|
- ext/ffi_c/DynamicLibrary.c
|
|
55
87
|
- ext/ffi_c/DynamicLibrary.h
|
|
88
|
+
- ext/ffi_c/endian.h
|
|
89
|
+
- ext/ffi_c/extconf.rb
|
|
90
|
+
- ext/ffi_c/ffi.c
|
|
91
|
+
- ext/ffi_c/Ffi_c.iml
|
|
56
92
|
- ext/ffi_c/Function.c
|
|
57
93
|
- ext/ffi_c/Function.h
|
|
58
94
|
- ext/ffi_c/FunctionInfo.c
|
|
59
95
|
- ext/ffi_c/LastError.c
|
|
60
96
|
- ext/ffi_c/LastError.h
|
|
61
|
-
- ext/ffi_c/
|
|
62
|
-
- ext/ffi_c/
|
|
63
|
-
- ext/ffi_c/MethodHandle.c
|
|
64
|
-
- ext/ffi_c/MethodHandle.h
|
|
65
|
-
- ext/ffi_c/Platform.c
|
|
66
|
-
- ext/ffi_c/Platform.h
|
|
67
|
-
- ext/ffi_c/Pointer.c
|
|
68
|
-
- ext/ffi_c/Pointer.h
|
|
69
|
-
- ext/ffi_c/Struct.c
|
|
70
|
-
- ext/ffi_c/Struct.h
|
|
71
|
-
- ext/ffi_c/StructByValue.c
|
|
72
|
-
- ext/ffi_c/StructByValue.h
|
|
73
|
-
- ext/ffi_c/StructLayout.c
|
|
74
|
-
- ext/ffi_c/Type.c
|
|
75
|
-
- ext/ffi_c/Type.h
|
|
76
|
-
- ext/ffi_c/Types.c
|
|
77
|
-
- ext/ffi_c/Types.h
|
|
78
|
-
- ext/ffi_c/Variadic.c
|
|
79
|
-
- ext/ffi_c/compat.h
|
|
80
|
-
- ext/ffi_c/endian.h
|
|
81
|
-
- ext/ffi_c/extconf.rb
|
|
82
|
-
- ext/ffi_c/ffi.c
|
|
83
|
-
- ext/ffi_c/libffi.bsd.mk
|
|
84
|
-
- ext/ffi_c/libffi.darwin.mk
|
|
85
|
-
- ext/ffi_c/libffi.gnu.mk
|
|
86
|
-
- ext/ffi_c/libffi.mk
|
|
97
|
+
- ext/ffi_c/libffi/acinclude.m4
|
|
98
|
+
- ext/ffi_c/libffi/aclocal.m4
|
|
87
99
|
- ext/ffi_c/libffi/ChangeLog
|
|
88
100
|
- ext/ffi_c/libffi/ChangeLog.libffi
|
|
89
101
|
- ext/ffi_c/libffi/ChangeLog.libgcj
|
|
90
102
|
- ext/ffi_c/libffi/ChangeLog.v1
|
|
91
|
-
- ext/ffi_c/libffi/LICENSE
|
|
92
|
-
- ext/ffi_c/libffi/Makefile.am
|
|
93
|
-
- ext/ffi_c/libffi/Makefile.in
|
|
94
|
-
- ext/ffi_c/libffi/README
|
|
95
|
-
- ext/ffi_c/libffi/acinclude.m4
|
|
96
|
-
- ext/ffi_c/libffi/aclocal.m4
|
|
97
103
|
- ext/ffi_c/libffi/compile
|
|
98
104
|
- ext/ffi_c/libffi/config.guess
|
|
99
105
|
- ext/ffi_c/libffi/config.sub
|
|
@@ -106,26 +112,30 @@ files:
|
|
|
106
112
|
- ext/ffi_c/libffi/doc/stamp-vti
|
|
107
113
|
- ext/ffi_c/libffi/doc/version.texi
|
|
108
114
|
- ext/ffi_c/libffi/fficonfig.h.in
|
|
109
|
-
- ext/ffi_c/libffi/include/Makefile.am
|
|
110
|
-
- ext/ffi_c/libffi/include/Makefile.in
|
|
111
115
|
- ext/ffi_c/libffi/include/ffi.h.in
|
|
112
116
|
- ext/ffi_c/libffi/include/ffi_common.h
|
|
117
|
+
- ext/ffi_c/libffi/include/Makefile.am
|
|
118
|
+
- ext/ffi_c/libffi/include/Makefile.in
|
|
113
119
|
- ext/ffi_c/libffi/install-sh
|
|
114
120
|
- ext/ffi_c/libffi/libffi.pc.in
|
|
115
121
|
- ext/ffi_c/libffi/libtool-version
|
|
122
|
+
- ext/ffi_c/libffi/LICENSE
|
|
116
123
|
- ext/ffi_c/libffi/ltmain.sh
|
|
117
124
|
- ext/ffi_c/libffi/m4/libtool.m4
|
|
118
125
|
- ext/ffi_c/libffi/m4/ltoptions.m4
|
|
119
126
|
- ext/ffi_c/libffi/m4/ltsugar.m4
|
|
120
127
|
- ext/ffi_c/libffi/m4/ltversion.m4
|
|
121
128
|
- ext/ffi_c/libffi/m4/lt~obsolete.m4
|
|
122
|
-
- ext/ffi_c/libffi/
|
|
123
|
-
- ext/ffi_c/libffi/
|
|
129
|
+
- ext/ffi_c/libffi/Makefile.am
|
|
130
|
+
- ext/ffi_c/libffi/Makefile.in
|
|
124
131
|
- ext/ffi_c/libffi/man/ffi.3
|
|
125
132
|
- ext/ffi_c/libffi/man/ffi_call.3
|
|
126
133
|
- ext/ffi_c/libffi/man/ffi_prep_cif.3
|
|
134
|
+
- ext/ffi_c/libffi/man/Makefile.am
|
|
135
|
+
- ext/ffi_c/libffi/man/Makefile.in
|
|
127
136
|
- ext/ffi_c/libffi/mdate-sh
|
|
128
137
|
- ext/ffi_c/libffi/missing
|
|
138
|
+
- ext/ffi_c/libffi/README
|
|
129
139
|
- ext/ffi_c/libffi/src/alpha/ffi.c
|
|
130
140
|
- ext/ffi_c/libffi/src/alpha/ffitarget.h
|
|
131
141
|
- ext/ffi_c/libffi/src/alpha/osf.S
|
|
@@ -201,8 +211,6 @@ files:
|
|
|
201
211
|
- ext/ffi_c/libffi/src/x86/unix64.S
|
|
202
212
|
- ext/ffi_c/libffi/src/x86/win32.S
|
|
203
213
|
- ext/ffi_c/libffi/src/x86/win64.S
|
|
204
|
-
- ext/ffi_c/libffi/testsuite/Makefile.am
|
|
205
|
-
- ext/ffi_c/libffi/testsuite/Makefile.in
|
|
206
214
|
- ext/ffi_c/libffi/testsuite/config/default.exp
|
|
207
215
|
- ext/ffi_c/libffi/testsuite/lib/libffi-dg.exp
|
|
208
216
|
- ext/ffi_c/libffi/testsuite/lib/target-libpath.exp
|
|
@@ -334,10 +342,34 @@ files:
|
|
|
334
342
|
- ext/ffi_c/libffi/testsuite/libffi.special/special.exp
|
|
335
343
|
- ext/ffi_c/libffi/testsuite/libffi.special/unwindtest.cc
|
|
336
344
|
- ext/ffi_c/libffi/testsuite/libffi.special/unwindtest_ffi_call.cc
|
|
345
|
+
- ext/ffi_c/libffi/testsuite/Makefile.am
|
|
346
|
+
- ext/ffi_c/libffi/testsuite/Makefile.in
|
|
337
347
|
- ext/ffi_c/libffi/texinfo.tex
|
|
348
|
+
- ext/ffi_c/libffi.bsd.mk
|
|
349
|
+
- ext/ffi_c/libffi.darwin.mk
|
|
350
|
+
- ext/ffi_c/libffi.gnu.mk
|
|
351
|
+
- ext/ffi_c/libffi.mk
|
|
352
|
+
- ext/ffi_c/MemoryPointer.c
|
|
353
|
+
- ext/ffi_c/MemoryPointer.h
|
|
354
|
+
- ext/ffi_c/MethodHandle.c
|
|
355
|
+
- ext/ffi_c/MethodHandle.h
|
|
356
|
+
- ext/ffi_c/Platform.c
|
|
357
|
+
- ext/ffi_c/Platform.h
|
|
358
|
+
- ext/ffi_c/Pointer.c
|
|
359
|
+
- ext/ffi_c/Pointer.h
|
|
338
360
|
- ext/ffi_c/rbffi.h
|
|
361
|
+
- ext/ffi_c/Struct.c
|
|
362
|
+
- ext/ffi_c/Struct.h
|
|
363
|
+
- ext/ffi_c/StructByValue.c
|
|
364
|
+
- ext/ffi_c/StructByValue.h
|
|
365
|
+
- ext/ffi_c/StructLayout.c
|
|
366
|
+
- ext/ffi_c/Type.c
|
|
367
|
+
- ext/ffi_c/Type.h
|
|
368
|
+
- ext/ffi_c/Types.c
|
|
369
|
+
- ext/ffi_c/Types.h
|
|
370
|
+
- ext/ffi_c/Variadic.c
|
|
371
|
+
- gen/log
|
|
339
372
|
- gen/Rakefile
|
|
340
|
-
- lib/ffi.rb
|
|
341
373
|
- lib/ffi/autopointer.rb
|
|
342
374
|
- lib/ffi/buffer.rb
|
|
343
375
|
- lib/ffi/callback.rb
|
|
@@ -359,11 +391,14 @@ files:
|
|
|
359
391
|
- lib/ffi/types.rb
|
|
360
392
|
- lib/ffi/union.rb
|
|
361
393
|
- lib/ffi/variadic.rb
|
|
394
|
+
- lib/ffi.rb
|
|
395
|
+
- lib/Lib.iml
|
|
362
396
|
- spec/ffi/bool_spec.rb
|
|
363
397
|
- spec/ffi/buffer_spec.rb
|
|
364
398
|
- spec/ffi/callback_spec.rb
|
|
365
399
|
- spec/ffi/enum_spec.rb
|
|
366
400
|
- spec/ffi/errno_spec.rb
|
|
401
|
+
- spec/ffi/Ffi.iml
|
|
367
402
|
- spec/ffi/function_spec.rb
|
|
368
403
|
- spec/ffi/library_spec.rb
|
|
369
404
|
- spec/ffi/managed_struct_spec.rb
|
|
@@ -382,37 +417,47 @@ files:
|
|
|
382
417
|
- spec/ffi/union_spec.rb
|
|
383
418
|
- spec/ffi/variadic_spec.rb
|
|
384
419
|
- spec/spec.opts
|
|
385
|
-
|
|
420
|
+
- libtest/Benchmark.c
|
|
421
|
+
- libtest/BoolTest.c
|
|
422
|
+
- libtest/BufferTest.c
|
|
423
|
+
- libtest/ClosureTest.c
|
|
424
|
+
- libtest/EnumTest.c
|
|
425
|
+
- libtest/FunctionTest.c
|
|
426
|
+
- libtest/GlobalVariable.c
|
|
427
|
+
- libtest/GNUmakefile
|
|
428
|
+
- libtest/LastErrorTest.c
|
|
429
|
+
- libtest/NumberTest.c
|
|
430
|
+
- libtest/PointerTest.c
|
|
431
|
+
- libtest/ReferenceTest.c
|
|
432
|
+
- libtest/StringTest.c
|
|
433
|
+
- libtest/StructTest.c
|
|
434
|
+
- libtest/UnionTest.c
|
|
435
|
+
- libtest/VariadicTest.c
|
|
386
436
|
homepage: http://wiki.github.com/ffi/ffi
|
|
387
|
-
licenses:
|
|
388
|
-
|
|
437
|
+
licenses:
|
|
438
|
+
- LGPL-3
|
|
389
439
|
post_install_message:
|
|
390
|
-
rdoc_options:
|
|
391
|
-
|
|
392
|
-
- ext
|
|
393
|
-
- --main
|
|
394
|
-
- README.rdoc
|
|
395
|
-
require_paths:
|
|
440
|
+
rdoc_options: []
|
|
441
|
+
require_paths:
|
|
396
442
|
- lib
|
|
397
|
-
- ext
|
|
398
|
-
|
|
399
|
-
|
|
443
|
+
- ext/ffi_c
|
|
444
|
+
- lib/ffi
|
|
445
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
446
|
+
none: false
|
|
447
|
+
requirements:
|
|
400
448
|
- - ">="
|
|
401
|
-
- !ruby/object:Gem::Version
|
|
402
|
-
version:
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
requirements:
|
|
449
|
+
- !ruby/object:Gem::Version
|
|
450
|
+
version: 1.8.7
|
|
451
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
452
|
+
none: false
|
|
453
|
+
requirements:
|
|
406
454
|
- - ">="
|
|
407
|
-
- !ruby/object:Gem::Version
|
|
408
|
-
version:
|
|
409
|
-
version:
|
|
455
|
+
- !ruby/object:Gem::Version
|
|
456
|
+
version: '0'
|
|
410
457
|
requirements: []
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
rubygems_version: 1.3.5
|
|
458
|
+
rubyforge_project:
|
|
459
|
+
rubygems_version: 1.8.24
|
|
414
460
|
signing_key:
|
|
415
461
|
specification_version: 3
|
|
416
|
-
summary: Ruby
|
|
462
|
+
summary: Ruby FFI
|
|
417
463
|
test_files: []
|
|
418
|
-
|
data/README.rdoc
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
ruby-ffi
|
|
2
|
-
by Wayne Meissner
|
|
3
|
-
http://wiki.github.com/ffi/ffi
|
|
4
|
-
|
|
5
|
-
== DESCRIPTION:
|
|
6
|
-
|
|
7
|
-
Ruby-FFI is a ruby extension for programmatically loading dynamic
|
|
8
|
-
libraries, binding functions within them, and calling those functions
|
|
9
|
-
from Ruby code. Moreover, a Ruby-FFI extension works without changes
|
|
10
|
-
on Ruby and JRuby. Discover why should you write your next extension
|
|
11
|
-
using Ruby-FFI here[http://wiki.github.com/ffi/ffi/why-use-ffi].
|
|
12
|
-
|
|
13
|
-
== FEATURES/PROBLEMS:
|
|
14
|
-
|
|
15
|
-
* It has a very intuitive DSL
|
|
16
|
-
* It supports all C native types
|
|
17
|
-
* It supports C structs (also nested), enums and global variables
|
|
18
|
-
* It supports callbacks
|
|
19
|
-
* It has smart methods to handle memory management of pointers and structs
|
|
20
|
-
|
|
21
|
-
== SYNOPSIS:
|
|
22
|
-
|
|
23
|
-
require 'ffi'
|
|
24
|
-
|
|
25
|
-
module MyLib
|
|
26
|
-
extend FFI::Library
|
|
27
|
-
attach_function :puts, [ :string ], :int
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
MyLib.puts 'Hello boys using libc!'
|
|
31
|
-
|
|
32
|
-
For less minimalistic and more sane examples you may look at:
|
|
33
|
-
|
|
34
|
-
* the samples/ folder
|
|
35
|
-
* the examples on the wiki[http://wiki.github.com/ffi/ffi]
|
|
36
|
-
* the projects using FFI listed on this page[http://wiki.github.com/ffi/ffi/projects-using-ffi]
|
|
37
|
-
|
|
38
|
-
== REQUIREMENTS:
|
|
39
|
-
|
|
40
|
-
* You need a sane building environment in order to compile the extension.
|
|
41
|
-
|
|
42
|
-
== DOWNLOAD/INSTALL:
|
|
43
|
-
|
|
44
|
-
From rubyforge:
|
|
45
|
-
|
|
46
|
-
[sudo] gem install ffi
|
|
47
|
-
|
|
48
|
-
or from the git repository on github:
|
|
49
|
-
|
|
50
|
-
git clone git://github.com/ffi/ffi.git
|
|
51
|
-
cd ffi
|
|
52
|
-
rake gem:install
|
|
53
|
-
|
|
54
|
-
== CREDITS:
|
|
55
|
-
|
|
56
|
-
Special thanks to:
|
|
57
|
-
|
|
58
|
-
* Yehuda Katz
|
|
59
|
-
* Luc Heinrich
|
|
60
|
-
* Andrea Fazzi
|
|
61
|
-
* Mike Dalessio
|
|
62
|
-
* Hongli Lai
|
|
63
|
-
* Evan Phoenix
|
|
64
|
-
* Aman Gupta
|
|
65
|
-
* Beoran
|
|
66
|
-
|
|
67
|
-
== LICENSE:
|
|
68
|
-
|
|
69
|
-
See LICENSE file.
|