cauterize 0.0.1.pre9 → 0.0.1.pre10
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/.gitignore +1 -3
- data/example/build.sh +2 -0
- data/lib/cauterize/base_type.rb +23 -39
- data/lib/cauterize/builtin.rb +7 -0
- data/lib/cauterize/c_builder.rb +5 -0
- data/lib/cauterize/composite.rb +13 -0
- data/lib/cauterize/cs_builder.rb +3 -1
- data/lib/cauterize/enumeration.rb +15 -1
- data/lib/cauterize/fixed_array.rb +7 -0
- data/lib/cauterize/group.rb +18 -0
- data/lib/cauterize/ruby_builder.rb +8 -0
- data/lib/cauterize/scalar.rb +6 -0
- data/lib/cauterize/variable_array.rb +8 -0
- data/lib/cauterize/version.rb +1 -1
- data/spec/base_type_spec.rb +126 -60
- data/spec/builtin_spec.rb +0 -7
- data/spec/fixed_array_spec.rb +0 -1
- data/spec/scalar_spec.rb +0 -4
- data/spec/spec_helper.rb +0 -6
- data/spec/support/spec_sample_model.rb +76 -0
- data/support/cs/src/CauterizeTypes.cs +2 -0
- metadata +5 -3
data/.gitignore
CHANGED
data/example/build.sh
CHANGED
data/lib/cauterize/base_type.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'set'
|
2
|
+
require 'digest'
|
2
3
|
|
3
4
|
module Cauterize
|
4
5
|
class BaseType
|
5
|
-
attr_reader :name, :
|
6
|
-
@@next_id = {}
|
6
|
+
attr_reader :name, :description
|
7
7
|
@@instances = {}
|
8
8
|
|
9
9
|
def initialize(name, description=nil)
|
@@ -13,42 +13,25 @@ module Cauterize
|
|
13
13
|
|
14
14
|
@name = name
|
15
15
|
@description = description
|
16
|
-
@id = next_id
|
17
16
|
register_instance(self)
|
18
17
|
end
|
19
18
|
|
20
|
-
def
|
21
|
-
|
22
|
-
|
23
|
-
(
|
19
|
+
def type_hash(digest = nil)
|
20
|
+
digest ||= BaseType.digest_class.new
|
21
|
+
digest.update(@name.to_s)
|
22
|
+
local_hash(digest)
|
24
23
|
end
|
25
24
|
|
26
|
-
def
|
27
|
-
"0x%04X" % type
|
28
|
-
end
|
25
|
+
def self.all_instances; @@instances.values end
|
29
26
|
|
30
|
-
def
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
when "Cauterize::FixedArray"; 3
|
37
|
-
when "Cauterize::VariableArray"; 4
|
38
|
-
when "Cauterize::Group"; 5
|
39
|
-
else
|
40
|
-
raise Exception.new("Tag not defined for #{cname}.")
|
41
|
-
end
|
27
|
+
def self.model_hash
|
28
|
+
@@instances.keys.sort.map do |k|
|
29
|
+
@@instances[k]
|
30
|
+
end.inject(BaseType.digest_class.new) do |d, i|
|
31
|
+
i.type_hash(d)
|
32
|
+
end.digest
|
42
33
|
end
|
43
34
|
|
44
|
-
def self.tag_bit_mask; 0xE000 end
|
45
|
-
def self.tag_bit_width; 3 end
|
46
|
-
def self.id_bit_mask; 0x1FFF end
|
47
|
-
def self.id_bit_width; 13 end
|
48
|
-
def self.type_bit_mask; 0xFFFF end
|
49
|
-
def self.type_bit_width; tag_bit_width + id_bit_width end
|
50
|
-
def self.all_instances; @@instances.values end
|
51
|
-
|
52
35
|
def self.find_type(name)
|
53
36
|
@@instances[name]
|
54
37
|
end
|
@@ -61,6 +44,10 @@ module Cauterize
|
|
61
44
|
end
|
62
45
|
end
|
63
46
|
|
47
|
+
def self.digest_class
|
48
|
+
Digest::SHA1
|
49
|
+
end
|
50
|
+
|
64
51
|
alias :orig_method_missing :method_missing
|
65
52
|
|
66
53
|
def method_missing(sym, *args)
|
@@ -74,6 +61,12 @@ module Cauterize
|
|
74
61
|
|
75
62
|
protected
|
76
63
|
|
64
|
+
# local_hash is responsible for hashing the things in the type that
|
65
|
+
# are not known about in the BaseType parent class.
|
66
|
+
def local_hash(digest)
|
67
|
+
raise Exception.new("All instances of BaseType (including #{self.class}) must implement local_hash.")
|
68
|
+
end
|
69
|
+
|
77
70
|
def register_instance(inst)
|
78
71
|
if @@instances[inst.name]
|
79
72
|
raise Exception.new("Type with name #{inst.name} already defined.")
|
@@ -81,14 +74,5 @@ module Cauterize
|
|
81
74
|
|
82
75
|
@@instances[inst.name] = inst
|
83
76
|
end
|
84
|
-
|
85
|
-
def next_id
|
86
|
-
cname = self.class.name
|
87
|
-
@@next_id[cname] ||= 0
|
88
|
-
|
89
|
-
an_id = @@next_id[cname]
|
90
|
-
@@next_id[cname] += 1
|
91
|
-
return an_id
|
92
|
-
end
|
93
77
|
end
|
94
78
|
end
|
data/lib/cauterize/builtin.rb
CHANGED
data/lib/cauterize/c_builder.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'time'
|
2
|
+
require 'digest'
|
2
3
|
|
3
4
|
module Cauterize
|
4
5
|
class CBuilder
|
@@ -32,6 +33,10 @@ module Cauterize
|
|
32
33
|
f << "#define GEN_DATE (\"#{DateTime.now.to_s}\")"
|
33
34
|
f.blank_line
|
34
35
|
|
36
|
+
f << "#define MODEL_HASH_LEN (#{BaseType.digest_class.new.length})"
|
37
|
+
f << "#define MODEL_HASH {#{BaseType.model_hash.bytes.to_a.join(", ")}}"
|
38
|
+
f.blank_line
|
39
|
+
|
35
40
|
instances = BaseType.all_instances
|
36
41
|
builders = instances.map {|i| Builders.get(:c, i)}
|
37
42
|
|
data/lib/cauterize/composite.rb
CHANGED
@@ -30,6 +30,11 @@ module Cauterize
|
|
30
30
|
@type = BaseType.find_type!(type_name)
|
31
31
|
@description = desc
|
32
32
|
end
|
33
|
+
|
34
|
+
def field_hash(digest)
|
35
|
+
digest.update(@name.to_s)
|
36
|
+
@type.type_hash(digest)
|
37
|
+
end
|
33
38
|
end
|
34
39
|
|
35
40
|
class Composite < BaseType
|
@@ -47,5 +52,13 @@ module Cauterize
|
|
47
52
|
@fields[name] = CompositeField.new(name, type, desc)
|
48
53
|
end
|
49
54
|
end
|
55
|
+
|
56
|
+
protected
|
57
|
+
|
58
|
+
def local_hash(digest)
|
59
|
+
@fields.keys.inject(digest) {|d, k|
|
60
|
+
@fields[k].field_hash(digest)
|
61
|
+
}
|
62
|
+
end
|
50
63
|
end
|
51
64
|
end
|
data/lib/cauterize/cs_builder.rb
CHANGED
@@ -31,7 +31,9 @@ module Cauterize
|
|
31
31
|
f.braces do
|
32
32
|
f << "Name = \"#{@name}\","
|
33
33
|
f << "GeneratedVersion = \"#{Cauterize.get_version}\","
|
34
|
-
f << "GeneratedDate = \"#{DateTime.now.to_s}\""
|
34
|
+
f << "GeneratedDate = \"#{DateTime.now.to_s}\","
|
35
|
+
f << "ModelHashLength = #{BaseType.digest_class.new.length},"
|
36
|
+
f << "ModelHash = new byte[] {#{BaseType.model_hash.bytes.to_a.join(", ")}}"
|
35
37
|
end
|
36
38
|
f << ";"
|
37
39
|
end
|
@@ -31,6 +31,11 @@ module Cauterize
|
|
31
31
|
@name = name
|
32
32
|
@value = value
|
33
33
|
end
|
34
|
+
|
35
|
+
def value_hash(digest)
|
36
|
+
digest.update(@name.to_s)
|
37
|
+
digest.update(@value.to_s)
|
38
|
+
end
|
34
39
|
end
|
35
40
|
|
36
41
|
class Enumeration < BaseType
|
@@ -69,12 +74,21 @@ module Cauterize
|
|
69
74
|
raise Exception.new("Unable to represent enumeration (#{min_val} -> #{max_val})")
|
70
75
|
end
|
71
76
|
end
|
77
|
+
|
78
|
+
protected
|
79
|
+
|
80
|
+
def local_hash(digest)
|
81
|
+
representation.type_hash(digest)
|
82
|
+
values.keys.sort.inject(digest) {|d, k|
|
83
|
+
values[k].value_hash(digest)
|
84
|
+
}
|
85
|
+
end
|
72
86
|
|
73
87
|
private
|
74
88
|
|
75
89
|
def value_id(next_id=nil)
|
76
90
|
if next_id
|
77
|
-
@value_id = next_id
|
91
|
+
@value_id = next_id.to_i
|
78
92
|
end
|
79
93
|
|
80
94
|
v = @value_id
|
data/lib/cauterize/group.rb
CHANGED
@@ -27,6 +27,15 @@ module Cauterize
|
|
27
27
|
@type = BaseType.find_type!(type) if type
|
28
28
|
@description = desc
|
29
29
|
end
|
30
|
+
|
31
|
+
def field_hash(digest)
|
32
|
+
digest.update(@name.to_s)
|
33
|
+
if @type
|
34
|
+
@type.type_hash(digest)
|
35
|
+
else
|
36
|
+
digest
|
37
|
+
end
|
38
|
+
end
|
30
39
|
end
|
31
40
|
|
32
41
|
class Group < BaseType
|
@@ -59,5 +68,14 @@ module Cauterize
|
|
59
68
|
def enum_sym(fname)
|
60
69
|
"group_#{@name}_type_#{fname}".up_snake.to_sym
|
61
70
|
end
|
71
|
+
|
72
|
+
protected
|
73
|
+
|
74
|
+
def local_hash(digest)
|
75
|
+
@tag_enum.type_hash(digest)
|
76
|
+
@fields.keys.inject(digest) {|d, k|
|
77
|
+
@fields[k].field_hash(digest)
|
78
|
+
}
|
79
|
+
end
|
62
80
|
end
|
63
81
|
end
|
@@ -20,6 +20,14 @@ module Cauterize
|
|
20
20
|
f << "require_relative './cauterize_ruby_builtins'"
|
21
21
|
f << ""
|
22
22
|
|
23
|
+
f << "CAUTERIZE_GEN_VERSION = \"#{Cauterize.get_version}\""
|
24
|
+
f << "CAUTERIZE_GEN_DATE = \"#{DateTime.now.to_s}\""
|
25
|
+
f << ""
|
26
|
+
|
27
|
+
f << "CAUTERIZE_MODEL_HASH_LEN = #{BaseType.digest_class.new.length}"
|
28
|
+
f << "CAUTERIZE_MODEL_HASH = [#{BaseType.model_hash.bytes.to_a.join(", ")}]"
|
29
|
+
f << ""
|
30
|
+
|
23
31
|
instances = BaseType.all_instances
|
24
32
|
builders = instances.map {|i| Builders.get(:ruby, i)}
|
25
33
|
builders.each { |b| b.class_defn(f) }
|
data/lib/cauterize/scalar.rb
CHANGED
data/lib/cauterize/version.rb
CHANGED
data/spec/base_type_spec.rb
CHANGED
@@ -2,10 +2,6 @@ module Cauterize
|
|
2
2
|
|
3
3
|
describe Cauterize do
|
4
4
|
describe BaseType do
|
5
|
-
describe :id do
|
6
|
-
it { has_a_unique_id_for_each_instance(BaseType) }
|
7
|
-
end
|
8
|
-
|
9
5
|
describe :description do
|
10
6
|
it "handles nil description" do
|
11
7
|
BaseType.new(:foo, nil).description.should be_nil
|
@@ -16,62 +12,6 @@ module Cauterize
|
|
16
12
|
end
|
17
13
|
end
|
18
14
|
|
19
|
-
describe :type_str do
|
20
|
-
it "is the hexadecimal representation of type" do
|
21
|
-
f = Cauterize.enumeration(:foo) do |e|
|
22
|
-
e.value :a, 1
|
23
|
-
end
|
24
|
-
|
25
|
-
b = Cauterize.enumeration(:bar) do |e|
|
26
|
-
e.value :a, 1
|
27
|
-
end
|
28
|
-
|
29
|
-
b.type_str.should == "0x2001"
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
describe :tag do
|
34
|
-
it { is_tagged_as(Scalar, 0) }
|
35
|
-
it { is_tagged_as(Enumeration, 1) }
|
36
|
-
it { is_tagged_as(Composite, 2) }
|
37
|
-
it { is_tagged_as(FixedArray, 3) }
|
38
|
-
it { is_tagged_as(VariableArray, 4) }
|
39
|
-
it { is_tagged_as(Group, 5) }
|
40
|
-
end
|
41
|
-
|
42
|
-
describe :next_id do
|
43
|
-
it "is an incrementing value starting at 0" do
|
44
|
-
# the .new consumes the 0.
|
45
|
-
BaseType.new(:foo).instance_exec do
|
46
|
-
next_id.should == 1
|
47
|
-
next_id.should == 2
|
48
|
-
next_id.should == 3
|
49
|
-
next_id.should == 4
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
it "should not allow derived class ids to interact" do
|
54
|
-
a1 = Scalar.new(:uint8_t)
|
55
|
-
a2 = Scalar.new(:uint64_t)
|
56
|
-
e1 = Enumeration.new(:zoop)
|
57
|
-
e2 = Enumeration.new(:nih)
|
58
|
-
|
59
|
-
a1.id.should == 0
|
60
|
-
a2.id.should == 1
|
61
|
-
e1.id.should == 0
|
62
|
-
e2.id.should == 1
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
describe "bit stuff" do
|
67
|
-
it "is consistent" do
|
68
|
-
BaseType.class_exec do
|
69
|
-
(tag_bit_width + id_bit_width).should == type_bit_width
|
70
|
-
(tag_bit_mask >> id_bit_width).should == 0x7
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
15
|
describe :register_instance do
|
76
16
|
it "adds an instance to the instance list" do
|
77
17
|
orig_len = BaseType.all_instances.length
|
@@ -122,6 +62,132 @@ module Cauterize
|
|
122
62
|
end
|
123
63
|
end
|
124
64
|
|
65
|
+
describe :type_hash do
|
66
|
+
it "is different for objects with different names" do
|
67
|
+
f = Cauterize.scalar(:foo) {|t| t.type_name :uint8}.type_hash
|
68
|
+
g = Cauterize.scalar(:bar) {|t| t.type_name :uint8}.type_hash
|
69
|
+
|
70
|
+
f.should_not == g
|
71
|
+
end
|
72
|
+
|
73
|
+
it "is different for objects with different types" do
|
74
|
+
f = Cauterize.scalar(:foo) {|t| t.type_name :uint8}.type_hash
|
75
|
+
reset_for_test
|
76
|
+
|
77
|
+
g = Cauterize.scalar(:foo) {|t| t.type_name :int8}.type_hash
|
78
|
+
reset_for_test
|
79
|
+
|
80
|
+
f.should_not == g
|
81
|
+
end
|
82
|
+
|
83
|
+
it "differes on enumeration value differences" do
|
84
|
+
f = Cauterize.enumeration(:foo) { |t| t.value :a, 0 }.type_hash
|
85
|
+
reset_for_test
|
86
|
+
|
87
|
+
g = Cauterize.enumeration(:foo) { |t| t.value :a, 1 }.type_hash
|
88
|
+
reset_for_test
|
89
|
+
|
90
|
+
f.should_not == g
|
91
|
+
end
|
92
|
+
|
93
|
+
it "differs on differing length in fixed arrays" do
|
94
|
+
f = Cauterize.fixed_array(:foo) { |t| t.array_type :int8; t.array_size 1 }.type_hash
|
95
|
+
reset_for_test
|
96
|
+
|
97
|
+
g = Cauterize.fixed_array(:foo) { |t| t.array_type :int8; t.array_size 2 }.type_hash
|
98
|
+
reset_for_test
|
99
|
+
|
100
|
+
f.should_not == g
|
101
|
+
end
|
102
|
+
|
103
|
+
it "differs on differing size type in variable arrays" do
|
104
|
+
f = Cauterize.variable_array(:foo) { |t| t.array_type :int8; t.array_size 2; t.size_type :uint8 }.type_hash
|
105
|
+
reset_for_test
|
106
|
+
|
107
|
+
g = Cauterize.variable_array(:foo) { |t| t.array_type :int8; t.array_size 2; t.size_type :uint16 }.type_hash
|
108
|
+
reset_for_test
|
109
|
+
|
110
|
+
f.should_not == g
|
111
|
+
end
|
112
|
+
|
113
|
+
it "differs on group field reordering" do
|
114
|
+
f = Cauterize.group(:foo) do |t|
|
115
|
+
t.field :a, :int8
|
116
|
+
t.field :b, :int8
|
117
|
+
end.type_hash
|
118
|
+
reset_for_test
|
119
|
+
|
120
|
+
g = Cauterize.group(:foo) do |t|
|
121
|
+
t.field :b, :int8
|
122
|
+
t.field :a, :int8
|
123
|
+
end.type_hash
|
124
|
+
reset_for_test
|
125
|
+
|
126
|
+
f.should_not == g
|
127
|
+
end
|
128
|
+
|
129
|
+
it "differs on composite field reordering" do
|
130
|
+
f = Cauterize.composite(:foo) do |t|
|
131
|
+
t.field :a, :int8
|
132
|
+
t.field :b, :int8
|
133
|
+
end.type_hash
|
134
|
+
reset_for_test
|
135
|
+
|
136
|
+
g = Cauterize.composite(:foo) do |t|
|
137
|
+
t.field :b, :int8
|
138
|
+
t.field :a, :int8
|
139
|
+
end.type_hash
|
140
|
+
reset_for_test
|
141
|
+
|
142
|
+
f.should_not == g
|
143
|
+
end
|
144
|
+
|
145
|
+
it "differs on changes in indirect fields" do
|
146
|
+
Cauterize.scalar(:a_thing) { |t| t.type_name :int8 }
|
147
|
+
f = Cauterize.composite(:foo) do |t|
|
148
|
+
t.field :a, :a_thing
|
149
|
+
end.type_hash
|
150
|
+
reset_for_test
|
151
|
+
|
152
|
+
Cauterize.scalar(:a_thing) { |t| t.type_name :uint8 }
|
153
|
+
g = Cauterize.composite(:foo) do |t|
|
154
|
+
t.field :a, :a_thing
|
155
|
+
end.type_hash
|
156
|
+
reset_for_test
|
157
|
+
|
158
|
+
f.should_not == g
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
describe :model_hash do
|
163
|
+
it "returns a SHA1 of the model" do
|
164
|
+
Cauterize.scalar(:foo) {|t| t.type_name :uint8}
|
165
|
+
|
166
|
+
h = BaseType.model_hash
|
167
|
+
h.should_not be_nil
|
168
|
+
h.length.should == 20 # length of sha1
|
169
|
+
end
|
170
|
+
|
171
|
+
it "is supported by all the types" do
|
172
|
+
gen_a_model
|
173
|
+
h = BaseType.model_hash
|
174
|
+
h.should_not be_nil
|
175
|
+
h.length.should == 20 # length of sha1
|
176
|
+
end
|
177
|
+
|
178
|
+
it "differs on different models" do
|
179
|
+
gen_a_model
|
180
|
+
a = BaseType.model_hash
|
181
|
+
reset_for_test
|
182
|
+
|
183
|
+
gen_b_model
|
184
|
+
b = BaseType.model_hash
|
185
|
+
reset_for_test
|
186
|
+
|
187
|
+
a.should_not == b
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
125
191
|
describe :find_type do
|
126
192
|
it "returns the instance with the provided name" do
|
127
193
|
f = Cauterize.scalar(:foo)
|
data/spec/builtin_spec.rb
CHANGED
data/spec/fixed_array_spec.rb
CHANGED
data/spec/scalar_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -43,12 +43,6 @@ module Cauterize
|
|
43
43
|
cls.new(:foo).tag.should == tag
|
44
44
|
end
|
45
45
|
|
46
|
-
def has_a_unique_id_for_each_instance(cls)
|
47
|
-
cls.new(:foo).id.should == 0
|
48
|
-
cls.new(:bar).id.should == 1
|
49
|
-
cls.new(:baz).id.should == 2
|
50
|
-
end
|
51
|
-
|
52
46
|
def creates_a_named_object(fn_sym, obj)
|
53
47
|
fn = Cauterize.method(fn_sym)
|
54
48
|
a = fn.call(:foo)
|
@@ -0,0 +1,76 @@
|
|
1
|
+
module Cauterize
|
2
|
+
module CauterizeHelpers
|
3
|
+
def gen_a_model
|
4
|
+
Cauterize.scalar(:foo) do |t|
|
5
|
+
t.type_name :uint8
|
6
|
+
end
|
7
|
+
|
8
|
+
Cauterize.enumeration(:color) do |e|
|
9
|
+
e.value :red
|
10
|
+
e.value :blue
|
11
|
+
e.value :green
|
12
|
+
end
|
13
|
+
|
14
|
+
Cauterize.fixed_array(:color_list) do |a|
|
15
|
+
a.array_type :color
|
16
|
+
a.array_size 41
|
17
|
+
end
|
18
|
+
|
19
|
+
Cauterize.variable_array(:int8_list) do |a|
|
20
|
+
a.size_type :uint8
|
21
|
+
a.array_type :int8
|
22
|
+
a.array_size 200
|
23
|
+
end
|
24
|
+
|
25
|
+
Cauterize.composite(:two_things) do |t|
|
26
|
+
t.field :thing_1, :uint8
|
27
|
+
t.field :thing_2, :uint16
|
28
|
+
end
|
29
|
+
|
30
|
+
Cauterize.group(:one_of_everything) do |t|
|
31
|
+
t.field :a_foo, :foo
|
32
|
+
t.field :a_color, :color
|
33
|
+
t.field :a_color_list, :color_list
|
34
|
+
t.field :an_int8_list, :int8_list
|
35
|
+
t.field :a_two_things, :two_things
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def gen_b_model
|
40
|
+
Cauterize.scalar(:foo) do |t|
|
41
|
+
t.type_name :uint8
|
42
|
+
end
|
43
|
+
|
44
|
+
Cauterize.enumeration(:color) do |e|
|
45
|
+
e.value :red
|
46
|
+
e.value :blue
|
47
|
+
e.value :green
|
48
|
+
end
|
49
|
+
|
50
|
+
Cauterize.fixed_array(:color_list) do |a|
|
51
|
+
a.array_type :color
|
52
|
+
a.array_size 41
|
53
|
+
end
|
54
|
+
|
55
|
+
Cauterize.variable_array(:int8_list) do |a|
|
56
|
+
a.size_type :uint8
|
57
|
+
a.array_type :int8
|
58
|
+
a.array_size 200
|
59
|
+
end
|
60
|
+
|
61
|
+
Cauterize.composite(:two_things) do |t|
|
62
|
+
t.field :thing_1, :uint8
|
63
|
+
t.field :thing_2, :uint16
|
64
|
+
end
|
65
|
+
|
66
|
+
Cauterize.group(:one_of_everything) do |t|
|
67
|
+
t.field :a_foo, :foo
|
68
|
+
t.field :a_color, :color
|
69
|
+
t.field :a_color_list, :color_list
|
70
|
+
t.field :an_int8_list, :int8_list
|
71
|
+
t.field :a_two_things, :two_things
|
72
|
+
t.dataless :emptyness
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cauterize
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.1.
|
4
|
+
version: 0.0.1.pre10
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-07-
|
12
|
+
date: 2013-07-31 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -212,6 +212,7 @@ files:
|
|
212
212
|
- spec/support/shared_examples_for_c_buildables.rb
|
213
213
|
- spec/support/shared_examples_for_sane_c_buildables.rb
|
214
214
|
- spec/support/shared_examples_for_stubbed_functions.rb
|
215
|
+
- spec/support/spec_sample_model.rb
|
215
216
|
- spec/test_main.c
|
216
217
|
- spec/variable_array_spec.rb
|
217
218
|
- support/c/src/cauterize.c
|
@@ -262,7 +263,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
262
263
|
version: '0'
|
263
264
|
segments:
|
264
265
|
- 0
|
265
|
-
hash:
|
266
|
+
hash: 3445789086503525251
|
266
267
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
267
268
|
none: false
|
268
269
|
requirements:
|
@@ -310,5 +311,6 @@ test_files:
|
|
310
311
|
- spec/support/shared_examples_for_c_buildables.rb
|
311
312
|
- spec/support/shared_examples_for_sane_c_buildables.rb
|
312
313
|
- spec/support/shared_examples_for_stubbed_functions.rb
|
314
|
+
- spec/support/spec_sample_model.rb
|
313
315
|
- spec/test_main.c
|
314
316
|
- spec/variable_array_spec.rb
|