emonti-ffi_dry 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +15 -0
- data/VERSION +1 -1
- data/ffi_dry.gemspec +63 -0
- data/lib/ffi/dry.rb +15 -7
- metadata +4 -4
data/Rakefile
CHANGED
@@ -43,3 +43,18 @@ rescue LoadError
|
|
43
43
|
abort "YARD is not available. In order to run yardoc, you must: sudo gem install yard"
|
44
44
|
end
|
45
45
|
end
|
46
|
+
|
47
|
+
require 'rake/rdoctask'
|
48
|
+
Rake::RDocTask.new do |rdoc|
|
49
|
+
if File.exist?('VERSION')
|
50
|
+
version = File.read('VERSION')
|
51
|
+
else
|
52
|
+
version = ""
|
53
|
+
end
|
54
|
+
|
55
|
+
rdoc.rdoc_dir = 'rdoc'
|
56
|
+
rdoc.title = "ffi_dry #{version}"
|
57
|
+
rdoc.rdoc_files.include('README*')
|
58
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
59
|
+
end
|
60
|
+
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.2
|
data/ffi_dry.gemspec
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{ffi_dry}
|
8
|
+
s.version = "0.1.2"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Eric Monti"]
|
12
|
+
s.date = %q{2009-09-13}
|
13
|
+
s.description = %q{Provides a some useful modules, classes, and methods as well as a DSL-like syntax for FFI::Struct layouts}
|
14
|
+
s.email = %q{emonti@matasano.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".document",
|
21
|
+
".gitignore",
|
22
|
+
"LICENSE",
|
23
|
+
"README.rdoc",
|
24
|
+
"Rakefile",
|
25
|
+
"VERSION",
|
26
|
+
"ffi_dry.gemspec",
|
27
|
+
"lib/ffi/dry.rb",
|
28
|
+
"lib/ffi_dry.rb",
|
29
|
+
"samples/afmap.rb",
|
30
|
+
"samples/basic.rb",
|
31
|
+
"samples/describer.rb",
|
32
|
+
"spec/ffi_dry_spec.rb",
|
33
|
+
"spec/spec_helper.rb"
|
34
|
+
]
|
35
|
+
s.homepage = %q{http://github.com/emonti/ffi_dry}
|
36
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
37
|
+
s.require_paths = ["lib"]
|
38
|
+
s.rubygems_version = %q{1.3.4}
|
39
|
+
s.summary = %q{Syntactic sugar and helper utilities for FFI}
|
40
|
+
s.test_files = [
|
41
|
+
"spec/ffi_dry_spec.rb",
|
42
|
+
"spec/spec_helper.rb"
|
43
|
+
]
|
44
|
+
|
45
|
+
if s.respond_to? :specification_version then
|
46
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
47
|
+
s.specification_version = 3
|
48
|
+
|
49
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
50
|
+
s.add_runtime_dependency(%q<ffi-ffi>, [">= 0.5.0"])
|
51
|
+
s.add_development_dependency(%q<rspec>, [">= 0"])
|
52
|
+
s.add_development_dependency(%q<yard>, [">= 0"])
|
53
|
+
else
|
54
|
+
s.add_dependency(%q<ffi-ffi>, [">= 0.5.0"])
|
55
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
56
|
+
s.add_dependency(%q<yard>, [">= 0"])
|
57
|
+
end
|
58
|
+
else
|
59
|
+
s.add_dependency(%q<ffi-ffi>, [">= 0.5.0"])
|
60
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
61
|
+
s.add_dependency(%q<yard>, [">= 0"])
|
62
|
+
end
|
63
|
+
end
|
data/lib/ffi/dry.rb
CHANGED
@@ -76,6 +76,9 @@ module FFI::DRY
|
|
76
76
|
# the :raw tag.
|
77
77
|
#
|
78
78
|
def initialize(*args)
|
79
|
+
@dsl_metadata = self.class.dsl_metadata
|
80
|
+
params=nil
|
81
|
+
|
79
82
|
if args.size == 1 and (oparams=args[0]).is_a? Hash
|
80
83
|
params = oparams.dup
|
81
84
|
if raw=params.delete(:raw)
|
@@ -83,11 +86,11 @@ module FFI::DRY
|
|
83
86
|
else
|
84
87
|
super()
|
85
88
|
end
|
86
|
-
set_fields(params)
|
87
89
|
else
|
88
90
|
super(*args)
|
89
91
|
end
|
90
|
-
|
92
|
+
|
93
|
+
set_fields(params)
|
91
94
|
yield self if block_given?
|
92
95
|
end
|
93
96
|
|
@@ -103,8 +106,8 @@ module FFI::DRY
|
|
103
106
|
# This method is called automatically if you are using the initialize()
|
104
107
|
# method provided in the DryStruct class and passing it a Hash as its only
|
105
108
|
# argument.
|
106
|
-
def set_fields(params)
|
107
|
-
params.keys.each do |p|
|
109
|
+
def set_fields(params=nil)
|
110
|
+
(params || {}).keys.each do |p|
|
108
111
|
if members().include?(p)
|
109
112
|
self.__send__(:"#{p}=", params[p])
|
110
113
|
else
|
@@ -157,11 +160,11 @@ module FFI::DRY
|
|
157
160
|
builder.instance_eval(&block)
|
158
161
|
@layout = builder.build
|
159
162
|
@size = @layout.size
|
160
|
-
|
163
|
+
_class_meths_from_dsl_metadata( builder.metadata )
|
161
164
|
return @layout
|
162
165
|
end
|
163
166
|
|
164
|
-
def
|
167
|
+
def _class_meths_from_dsl_metadata(meta)
|
165
168
|
(@dsl_metadata = meta).each do |spec|
|
166
169
|
name = spec[:name]
|
167
170
|
type = spec[:type]
|
@@ -340,7 +343,12 @@ module FFI::DRY
|
|
340
343
|
def [](arg)
|
341
344
|
if arg.is_a? Integer
|
342
345
|
ret = []
|
343
|
-
|
346
|
+
if arg == 0
|
347
|
+
n = list.invert[0]
|
348
|
+
ret << n if n
|
349
|
+
else
|
350
|
+
list.invert.sort.each {|v,n| ret << n if v !=0 and (v & arg) == v }
|
351
|
+
end
|
344
352
|
return ret
|
345
353
|
elsif arg.is_a? String or arg.is_a? Symbol
|
346
354
|
list[arg.to_s.upcase]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: emonti-ffi_dry
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Monti
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-09-
|
12
|
+
date: 2009-09-13 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -58,6 +58,7 @@ files:
|
|
58
58
|
- README.rdoc
|
59
59
|
- Rakefile
|
60
60
|
- VERSION
|
61
|
+
- ffi_dry.gemspec
|
61
62
|
- lib/ffi/dry.rb
|
62
63
|
- lib/ffi_dry.rb
|
63
64
|
- samples/afmap.rb
|
@@ -67,7 +68,6 @@ files:
|
|
67
68
|
- spec/spec_helper.rb
|
68
69
|
has_rdoc: false
|
69
70
|
homepage: http://github.com/emonti/ffi_dry
|
70
|
-
licenses:
|
71
71
|
post_install_message:
|
72
72
|
rdoc_options:
|
73
73
|
- --charset=UTF-8
|
@@ -88,7 +88,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
88
88
|
requirements: []
|
89
89
|
|
90
90
|
rubyforge_project:
|
91
|
-
rubygems_version: 1.
|
91
|
+
rubygems_version: 1.2.0
|
92
92
|
signing_key:
|
93
93
|
specification_version: 3
|
94
94
|
summary: Syntactic sugar and helper utilities for FFI
|