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.
Files changed (76) hide show
  1. data/History.txt +109 -0
  2. data/LICENSE +10 -21
  3. data/README.rdoc +1 -0
  4. data/Rakefile +3 -2
  5. data/ext/ffi_c/AbstractMemory.c +56 -38
  6. data/ext/ffi_c/AbstractMemory.h +15 -22
  7. data/ext/ffi_c/Buffer.c +61 -22
  8. data/ext/ffi_c/Call.c +55 -543
  9. data/ext/ffi_c/Call.h +1 -1
  10. data/ext/ffi_c/DataConverter.c +62 -0
  11. data/ext/ffi_c/DynamicLibrary.c +21 -1
  12. data/ext/ffi_c/Function.c +255 -32
  13. data/ext/ffi_c/MappedType.c +146 -0
  14. data/ext/ffi_c/MappedType.h +57 -0
  15. data/ext/ffi_c/MemoryPointer.c +12 -33
  16. data/ext/ffi_c/Platform.c +2 -0
  17. data/ext/ffi_c/Pointer.c +66 -28
  18. data/ext/ffi_c/Struct.c +106 -318
  19. data/ext/ffi_c/Struct.h +6 -0
  20. data/ext/ffi_c/StructByReference.c +150 -0
  21. data/ext/ffi_c/StructByReference.h +50 -0
  22. data/ext/ffi_c/StructLayout.c +25 -14
  23. data/ext/ffi_c/Type.c +39 -68
  24. data/ext/ffi_c/Type.h +12 -22
  25. data/ext/ffi_c/Types.c +21 -6
  26. data/ext/ffi_c/Types.h +7 -7
  27. data/ext/ffi_c/Variadic.c +21 -17
  28. data/ext/ffi_c/extconf.rb +4 -0
  29. data/ext/ffi_c/ffi.c +8 -2
  30. data/ext/ffi_c/libffi/configure +1 -1
  31. data/ext/ffi_c/libffi.gnu.mk +1 -1
  32. data/ext/ffi_c/libffi.mk +1 -1
  33. data/ext/ffi_c/rbffi.h +1 -0
  34. data/gen/Rakefile +4 -2
  35. data/lib/ffi/autopointer.rb +23 -22
  36. data/lib/ffi/enum.rb +36 -21
  37. data/lib/ffi/errno.rb +20 -0
  38. data/lib/ffi/ffi.rb +13 -79
  39. data/lib/ffi/io.rb +12 -20
  40. data/lib/ffi/library.rb +110 -93
  41. data/lib/ffi/managedstruct.rb +1 -1
  42. data/lib/ffi/memorypointer.rb +15 -21
  43. data/lib/ffi/platform.rb +24 -28
  44. data/lib/ffi/pointer.rb +14 -21
  45. data/lib/ffi/struct.rb +100 -51
  46. data/lib/ffi/struct_layout_builder.rb +158 -0
  47. data/lib/ffi/types.rb +99 -128
  48. data/lib/ffi/union.rb +20 -0
  49. data/lib/ffi/variadic.rb +33 -22
  50. data/spec/ffi/async_callback_spec.rb +23 -0
  51. data/spec/ffi/callback_spec.rb +62 -0
  52. data/spec/ffi/custom_param_type.rb +31 -0
  53. data/spec/ffi/custom_type_spec.rb +73 -0
  54. data/spec/ffi/enum_spec.rb +19 -0
  55. data/spec/ffi/ffi_spec.rb +24 -0
  56. data/spec/ffi/pointer_spec.rb +15 -0
  57. data/spec/ffi/rbx/memory_pointer_spec.rb +7 -1
  58. data/spec/ffi/strptr_spec.rb +36 -0
  59. data/spec/ffi/struct_packed_spec.rb +46 -0
  60. data/spec/ffi/struct_spec.rb +39 -7
  61. data/spec/ffi/typedef_spec.rb +14 -0
  62. data/tasks/ann.rake +80 -0
  63. data/tasks/extension.rake +25 -0
  64. data/tasks/gem.rake +200 -0
  65. data/tasks/git.rake +41 -0
  66. data/tasks/notes.rake +27 -0
  67. data/tasks/post_load.rake +34 -0
  68. data/tasks/rdoc.rake +50 -0
  69. data/tasks/rubyforge.rake +55 -0
  70. data/tasks/setup.rb +301 -0
  71. data/tasks/spec.rake +54 -0
  72. data/tasks/svn.rake +47 -0
  73. data/tasks/test.rake +40 -0
  74. metadata +64 -11
  75. data/ext/ffi_c/AutoPointer.c +0 -60
  76. 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
- version: 0.6.0
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-02-08 00:00:00 +10:00
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
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
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
- version:
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.5
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
@@ -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
- }
@@ -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
-