emonti-ffi_dry 0.1.1 → 0.1.2
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/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
|