ffi 0.6.0 → 1.0.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.
- data/History.txt +109 -0
- data/LICENSE +10 -21
- data/README.rdoc +1 -0
- data/Rakefile +3 -2
- data/ext/ffi_c/AbstractMemory.c +56 -38
- data/ext/ffi_c/AbstractMemory.h +15 -22
- data/ext/ffi_c/Buffer.c +61 -22
- data/ext/ffi_c/Call.c +55 -543
- data/ext/ffi_c/Call.h +1 -1
- data/ext/ffi_c/DataConverter.c +62 -0
- data/ext/ffi_c/DynamicLibrary.c +21 -1
- data/ext/ffi_c/Function.c +255 -32
- data/ext/ffi_c/MappedType.c +146 -0
- data/ext/ffi_c/MappedType.h +57 -0
- data/ext/ffi_c/MemoryPointer.c +12 -33
- data/ext/ffi_c/Platform.c +2 -0
- data/ext/ffi_c/Pointer.c +66 -28
- data/ext/ffi_c/Struct.c +106 -318
- data/ext/ffi_c/Struct.h +6 -0
- data/ext/ffi_c/StructByReference.c +150 -0
- data/ext/ffi_c/StructByReference.h +50 -0
- data/ext/ffi_c/StructLayout.c +25 -14
- data/ext/ffi_c/Type.c +39 -68
- data/ext/ffi_c/Type.h +12 -22
- data/ext/ffi_c/Types.c +21 -6
- data/ext/ffi_c/Types.h +7 -7
- data/ext/ffi_c/Variadic.c +21 -17
- data/ext/ffi_c/extconf.rb +4 -0
- data/ext/ffi_c/ffi.c +8 -2
- 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/ext/ffi_c/rbffi.h +1 -0
- data/gen/Rakefile +4 -2
- data/lib/ffi/autopointer.rb +23 -22
- data/lib/ffi/enum.rb +36 -21
- data/lib/ffi/errno.rb +20 -0
- data/lib/ffi/ffi.rb +13 -79
- data/lib/ffi/io.rb +12 -20
- data/lib/ffi/library.rb +110 -93
- data/lib/ffi/managedstruct.rb +1 -1
- data/lib/ffi/memorypointer.rb +15 -21
- data/lib/ffi/platform.rb +24 -28
- data/lib/ffi/pointer.rb +14 -21
- data/lib/ffi/struct.rb +100 -51
- data/lib/ffi/struct_layout_builder.rb +158 -0
- data/lib/ffi/types.rb +99 -128
- data/lib/ffi/union.rb +20 -0
- data/lib/ffi/variadic.rb +33 -22
- data/spec/ffi/async_callback_spec.rb +23 -0
- data/spec/ffi/callback_spec.rb +62 -0
- data/spec/ffi/custom_param_type.rb +31 -0
- data/spec/ffi/custom_type_spec.rb +73 -0
- data/spec/ffi/enum_spec.rb +19 -0
- data/spec/ffi/ffi_spec.rb +24 -0
- data/spec/ffi/pointer_spec.rb +15 -0
- data/spec/ffi/rbx/memory_pointer_spec.rb +7 -1
- data/spec/ffi/strptr_spec.rb +36 -0
- data/spec/ffi/struct_packed_spec.rb +46 -0
- data/spec/ffi/struct_spec.rb +39 -7
- data/spec/ffi/typedef_spec.rb +14 -0
- data/tasks/ann.rake +80 -0
- data/tasks/extension.rake +25 -0
- data/tasks/gem.rake +200 -0
- data/tasks/git.rake +41 -0
- data/tasks/notes.rake +27 -0
- data/tasks/post_load.rake +34 -0
- data/tasks/rdoc.rake +50 -0
- data/tasks/rubyforge.rake +55 -0
- data/tasks/setup.rb +301 -0
- data/tasks/spec.rake +54 -0
- data/tasks/svn.rake +47 -0
- data/tasks/test.rake +40 -0
- metadata +64 -11
- data/ext/ffi_c/AutoPointer.c +0 -60
- data/ext/ffi_c/AutoPointer.h +0 -18
metadata
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ffi
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
|
|
4
|
+
prerelease: false
|
|
5
|
+
segments:
|
|
6
|
+
- 1
|
|
7
|
+
- 0
|
|
8
|
+
- 0
|
|
9
|
+
version: 1.0.0
|
|
5
10
|
platform: ruby
|
|
6
11
|
authors:
|
|
7
12
|
- Wayne Meissner
|
|
@@ -9,19 +14,39 @@ autorequire:
|
|
|
9
14
|
bindir: bin
|
|
10
15
|
cert_chain: []
|
|
11
16
|
|
|
12
|
-
date: 2010-
|
|
17
|
+
date: 2010-11-30 00:00:00 +10:00
|
|
13
18
|
default_executable:
|
|
14
19
|
dependencies:
|
|
15
20
|
- !ruby/object:Gem::Dependency
|
|
16
21
|
name: rake
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
22
|
+
prerelease: false
|
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
|
24
|
+
none: false
|
|
20
25
|
requirements:
|
|
21
26
|
- - ">="
|
|
22
27
|
- !ruby/object:Gem::Version
|
|
28
|
+
segments:
|
|
29
|
+
- 0
|
|
30
|
+
- 8
|
|
31
|
+
- 7
|
|
23
32
|
version: 0.8.7
|
|
24
|
-
|
|
33
|
+
type: :runtime
|
|
34
|
+
version_requirements: *id001
|
|
35
|
+
- !ruby/object:Gem::Dependency
|
|
36
|
+
name: bones
|
|
37
|
+
prerelease: false
|
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
|
39
|
+
none: false
|
|
40
|
+
requirements:
|
|
41
|
+
- - ">="
|
|
42
|
+
- !ruby/object:Gem::Version
|
|
43
|
+
segments:
|
|
44
|
+
- 3
|
|
45
|
+
- 4
|
|
46
|
+
- 7
|
|
47
|
+
version: 3.4.7
|
|
48
|
+
type: :development
|
|
49
|
+
version_requirements: *id002
|
|
25
50
|
description: |-
|
|
26
51
|
Ruby-FFI is a ruby extension for programmatically loading dynamic
|
|
27
52
|
libraries, binding functions within them, and calling those functions
|
|
@@ -35,8 +60,10 @@ extensions:
|
|
|
35
60
|
- ext/ffi_c/extconf.rb
|
|
36
61
|
- gen/Rakefile
|
|
37
62
|
extra_rdoc_files:
|
|
63
|
+
- History.txt
|
|
38
64
|
- README.rdoc
|
|
39
65
|
files:
|
|
66
|
+
- History.txt
|
|
40
67
|
- LICENSE
|
|
41
68
|
- README.rdoc
|
|
42
69
|
- Rakefile
|
|
@@ -44,13 +71,12 @@ files:
|
|
|
44
71
|
- ext/ffi_c/AbstractMemory.h
|
|
45
72
|
- ext/ffi_c/ArrayType.c
|
|
46
73
|
- ext/ffi_c/ArrayType.h
|
|
47
|
-
- ext/ffi_c/AutoPointer.c
|
|
48
|
-
- ext/ffi_c/AutoPointer.h
|
|
49
74
|
- ext/ffi_c/Buffer.c
|
|
50
75
|
- ext/ffi_c/Call.c
|
|
51
76
|
- ext/ffi_c/Call.h
|
|
52
77
|
- ext/ffi_c/ClosurePool.c
|
|
53
78
|
- ext/ffi_c/ClosurePool.h
|
|
79
|
+
- ext/ffi_c/DataConverter.c
|
|
54
80
|
- ext/ffi_c/DynamicLibrary.c
|
|
55
81
|
- ext/ffi_c/DynamicLibrary.h
|
|
56
82
|
- ext/ffi_c/Function.c
|
|
@@ -58,6 +84,8 @@ files:
|
|
|
58
84
|
- ext/ffi_c/FunctionInfo.c
|
|
59
85
|
- ext/ffi_c/LastError.c
|
|
60
86
|
- ext/ffi_c/LastError.h
|
|
87
|
+
- ext/ffi_c/MappedType.c
|
|
88
|
+
- ext/ffi_c/MappedType.h
|
|
61
89
|
- ext/ffi_c/MemoryPointer.c
|
|
62
90
|
- ext/ffi_c/MemoryPointer.h
|
|
63
91
|
- ext/ffi_c/MethodHandle.c
|
|
@@ -68,6 +96,8 @@ files:
|
|
|
68
96
|
- ext/ffi_c/Pointer.h
|
|
69
97
|
- ext/ffi_c/Struct.c
|
|
70
98
|
- ext/ffi_c/Struct.h
|
|
99
|
+
- ext/ffi_c/StructByReference.c
|
|
100
|
+
- ext/ffi_c/StructByReference.h
|
|
71
101
|
- ext/ffi_c/StructByValue.c
|
|
72
102
|
- ext/ffi_c/StructByValue.h
|
|
73
103
|
- ext/ffi_c/StructLayout.c
|
|
@@ -351,6 +381,7 @@ files:
|
|
|
351
381
|
- lib/ffi/platform.rb
|
|
352
382
|
- lib/ffi/pointer.rb
|
|
353
383
|
- lib/ffi/struct.rb
|
|
384
|
+
- lib/ffi/struct_layout_builder.rb
|
|
354
385
|
- lib/ffi/tools/const_generator.rb
|
|
355
386
|
- lib/ffi/tools/generator.rb
|
|
356
387
|
- lib/ffi/tools/generator_task.rb
|
|
@@ -359,11 +390,15 @@ files:
|
|
|
359
390
|
- lib/ffi/types.rb
|
|
360
391
|
- lib/ffi/union.rb
|
|
361
392
|
- lib/ffi/variadic.rb
|
|
393
|
+
- spec/ffi/async_callback_spec.rb
|
|
362
394
|
- spec/ffi/bool_spec.rb
|
|
363
395
|
- spec/ffi/buffer_spec.rb
|
|
364
396
|
- spec/ffi/callback_spec.rb
|
|
397
|
+
- spec/ffi/custom_param_type.rb
|
|
398
|
+
- spec/ffi/custom_type_spec.rb
|
|
365
399
|
- spec/ffi/enum_spec.rb
|
|
366
400
|
- spec/ffi/errno_spec.rb
|
|
401
|
+
- spec/ffi/ffi_spec.rb
|
|
367
402
|
- spec/ffi/function_spec.rb
|
|
368
403
|
- spec/ffi/library_spec.rb
|
|
369
404
|
- spec/ffi/managed_struct_spec.rb
|
|
@@ -375,13 +410,27 @@ files:
|
|
|
375
410
|
- spec/ffi/rbx/struct_spec.rb
|
|
376
411
|
- spec/ffi/spec_helper.rb
|
|
377
412
|
- spec/ffi/string_spec.rb
|
|
413
|
+
- spec/ffi/strptr_spec.rb
|
|
378
414
|
- spec/ffi/struct_callback_spec.rb
|
|
379
415
|
- spec/ffi/struct_initialize_spec.rb
|
|
416
|
+
- spec/ffi/struct_packed_spec.rb
|
|
380
417
|
- spec/ffi/struct_spec.rb
|
|
381
418
|
- spec/ffi/typedef_spec.rb
|
|
382
419
|
- spec/ffi/union_spec.rb
|
|
383
420
|
- spec/ffi/variadic_spec.rb
|
|
384
421
|
- spec/spec.opts
|
|
422
|
+
- tasks/ann.rake
|
|
423
|
+
- tasks/extension.rake
|
|
424
|
+
- tasks/gem.rake
|
|
425
|
+
- tasks/git.rake
|
|
426
|
+
- tasks/notes.rake
|
|
427
|
+
- tasks/post_load.rake
|
|
428
|
+
- tasks/rdoc.rake
|
|
429
|
+
- tasks/rubyforge.rake
|
|
430
|
+
- tasks/setup.rb
|
|
431
|
+
- tasks/spec.rake
|
|
432
|
+
- tasks/svn.rake
|
|
433
|
+
- tasks/test.rake
|
|
385
434
|
has_rdoc: true
|
|
386
435
|
homepage: http://wiki.github.com/ffi/ffi
|
|
387
436
|
licenses: []
|
|
@@ -396,21 +445,25 @@ require_paths:
|
|
|
396
445
|
- lib
|
|
397
446
|
- ext
|
|
398
447
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
448
|
+
none: false
|
|
399
449
|
requirements:
|
|
400
450
|
- - ">="
|
|
401
451
|
- !ruby/object:Gem::Version
|
|
452
|
+
segments:
|
|
453
|
+
- 0
|
|
402
454
|
version: "0"
|
|
403
|
-
version:
|
|
404
455
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
456
|
+
none: false
|
|
405
457
|
requirements:
|
|
406
458
|
- - ">="
|
|
407
459
|
- !ruby/object:Gem::Version
|
|
460
|
+
segments:
|
|
461
|
+
- 0
|
|
408
462
|
version: "0"
|
|
409
|
-
version:
|
|
410
463
|
requirements: []
|
|
411
464
|
|
|
412
465
|
rubyforge_project: ffi
|
|
413
|
-
rubygems_version: 1.3.
|
|
466
|
+
rubygems_version: 1.3.7
|
|
414
467
|
signing_key:
|
|
415
468
|
specification_version: 3
|
|
416
469
|
summary: Ruby-FFI is a ruby extension for programmatically loading dynamic libraries, binding functions within them, and calling those functions from Ruby code
|
data/ext/ffi_c/AutoPointer.c
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
#include <stdbool.h>
|
|
3
|
-
#include <stdint.h>
|
|
4
|
-
#include <limits.h>
|
|
5
|
-
#include <ruby.h>
|
|
6
|
-
#include "rbffi.h"
|
|
7
|
-
#include "AbstractMemory.h"
|
|
8
|
-
#include "Pointer.h"
|
|
9
|
-
#include "AutoPointer.h"
|
|
10
|
-
|
|
11
|
-
typedef struct AutoPointer {
|
|
12
|
-
AbstractMemory memory;
|
|
13
|
-
VALUE parent;
|
|
14
|
-
} AutoPointer;
|
|
15
|
-
|
|
16
|
-
static void autoptr_mark(AutoPointer* ptr);
|
|
17
|
-
static VALUE autoptr_allocate(VALUE klass);
|
|
18
|
-
static VALUE autoptr_set_parent(VALUE self, VALUE parent);
|
|
19
|
-
|
|
20
|
-
VALUE rbffi_AutoPointerClass = Qnil;
|
|
21
|
-
|
|
22
|
-
static VALUE
|
|
23
|
-
autoptr_allocate(VALUE klass)
|
|
24
|
-
{
|
|
25
|
-
AutoPointer* p;
|
|
26
|
-
VALUE obj = Data_Make_Struct(klass, AutoPointer, autoptr_mark, -1, p);
|
|
27
|
-
p->parent = Qnil;
|
|
28
|
-
p->memory.access = MEM_RD | MEM_WR;
|
|
29
|
-
|
|
30
|
-
return obj;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
static VALUE
|
|
34
|
-
autoptr_set_parent(VALUE self, VALUE parent)
|
|
35
|
-
{
|
|
36
|
-
AutoPointer* p;
|
|
37
|
-
AbstractMemory* ptr = rbffi_AbstractMemory_Cast(parent, rbffi_PointerClass);
|
|
38
|
-
|
|
39
|
-
Data_Get_Struct(self, AutoPointer, p);
|
|
40
|
-
p->memory = *ptr;
|
|
41
|
-
p->parent = parent;
|
|
42
|
-
|
|
43
|
-
return self;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
static void
|
|
47
|
-
autoptr_mark(AutoPointer* ptr)
|
|
48
|
-
{
|
|
49
|
-
rb_gc_mark(ptr->parent);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
void
|
|
53
|
-
rbffi_AutoPointer_Init(VALUE moduleFFI)
|
|
54
|
-
{
|
|
55
|
-
rbffi_AutoPointerClass = rb_define_class_under(moduleFFI, "AutoPointer", rbffi_PointerClass);
|
|
56
|
-
rb_global_variable(&rbffi_AutoPointerClass);
|
|
57
|
-
|
|
58
|
-
rb_define_alloc_func(rbffi_AutoPointerClass, autoptr_allocate);
|
|
59
|
-
rb_define_protected_method(rbffi_AutoPointerClass, "parent=", autoptr_set_parent, 1);
|
|
60
|
-
}
|
data/ext/ffi_c/AutoPointer.h
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
#ifndef _AUTOPOINTER_H
|
|
3
|
-
#define _AUTOPOINTER_H
|
|
4
|
-
|
|
5
|
-
#ifdef __cplusplus
|
|
6
|
-
extern "C" {
|
|
7
|
-
#endif
|
|
8
|
-
|
|
9
|
-
extern void rbffi_AutoPointer_Init(VALUE ffiModule);
|
|
10
|
-
extern VALUE rbffi_AutoPointerClass;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
#ifdef __cplusplus
|
|
14
|
-
}
|
|
15
|
-
#endif
|
|
16
|
-
|
|
17
|
-
#endif /* _AUTOPOINTER_H */
|
|
18
|
-
|