cauterize 0.0.1.pre10 → 0.0.1.pre11
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/lib/cauterize/version.rb
CHANGED
@@ -1,11 +1,5 @@
|
|
1
1
|
require 'stringio'
|
2
2
|
|
3
|
-
def takeBytes!(num_bytes, str)
|
4
|
-
byte = str.slice!(0, num_bytes)
|
5
|
-
raise "Unexpected end of string" if byte == ""
|
6
|
-
byte
|
7
|
-
end
|
8
|
-
|
9
3
|
class CauterizeData
|
10
4
|
def self.construct(x)
|
11
5
|
if x.is_a? CauterizeData
|
@@ -27,21 +21,44 @@ class CauterizeBuiltin < CauterizeData
|
|
27
21
|
raise "Out of range value" if not in_range(val)
|
28
22
|
@val = val
|
29
23
|
end
|
24
|
+
end
|
25
|
+
|
26
|
+
class CauterizeBuiltinInteger < CauterizeBuiltin
|
27
|
+
def initialize(val)
|
28
|
+
super(val.to_i)
|
29
|
+
end
|
30
|
+
|
30
31
|
def to_i
|
31
|
-
|
32
|
+
val
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
class CauterizeBuiltinFloat < CauterizeBuiltin
|
37
|
+
def initialize(val)
|
38
|
+
super(val.to_f)
|
32
39
|
end
|
40
|
+
|
33
41
|
def to_f
|
34
|
-
|
42
|
+
val
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
class CauterizeBuiltinBool < CauterizeBuiltin
|
47
|
+
def initialize(val)
|
48
|
+
super((val)? true : false)
|
35
49
|
end
|
36
50
|
end
|
37
51
|
|
38
|
-
class CauterizeScalar < CauterizeData
|
39
|
-
attr_reader :val
|
40
52
|
|
53
|
+
class CauterizeScalar < CauterizeData
|
41
54
|
def initialize(val)
|
42
55
|
@val = self.class.builtin.construct val
|
43
56
|
end
|
44
57
|
|
58
|
+
def val
|
59
|
+
@val.val
|
60
|
+
end
|
61
|
+
|
45
62
|
def pack
|
46
63
|
@val.pack
|
47
64
|
end
|
@@ -51,8 +68,17 @@ class CauterizeScalar < CauterizeData
|
|
51
68
|
end
|
52
69
|
end
|
53
70
|
|
71
|
+
class CauterizeArray < CauterizeData
|
72
|
+
def val
|
73
|
+
@elems.map{|e| e.val}
|
74
|
+
end
|
75
|
+
|
76
|
+
def to_s
|
77
|
+
val.to_a.pack("C*")
|
78
|
+
end
|
79
|
+
end
|
54
80
|
|
55
|
-
class CauterizeFixedArray <
|
81
|
+
class CauterizeFixedArray < CauterizeArray
|
56
82
|
attr_reader :elems
|
57
83
|
|
58
84
|
def initialize(elems)
|
@@ -70,7 +96,7 @@ class CauterizeFixedArray < CauterizeData
|
|
70
96
|
end
|
71
97
|
|
72
98
|
|
73
|
-
class CauterizeVariableArray <
|
99
|
+
class CauterizeVariableArray < CauterizeArray
|
74
100
|
attr_reader :length
|
75
101
|
attr_reader :elems
|
76
102
|
|
@@ -80,6 +106,10 @@ class CauterizeVariableArray < CauterizeData
|
|
80
106
|
raise "Invalid length" if @elems.length > self.class.max_length
|
81
107
|
end
|
82
108
|
|
109
|
+
def val
|
110
|
+
@elems.map{|e| e.val}
|
111
|
+
end
|
112
|
+
|
83
113
|
def pack
|
84
114
|
@length.pack + @elems.inject("") { |sum, n| sum + n.pack }
|
85
115
|
end
|
@@ -104,6 +134,10 @@ class CauterizeComposite < CauterizeData
|
|
104
134
|
end]
|
105
135
|
end
|
106
136
|
|
137
|
+
def val
|
138
|
+
Hash[@fields.map{|name, value| [name, value.val]}]
|
139
|
+
end
|
140
|
+
|
107
141
|
def pack
|
108
142
|
@fields.values.inject("") { |sum, v| sum + v.pack }
|
109
143
|
end
|
@@ -134,6 +168,10 @@ class CauterizeEnumeration < CauterizeData
|
|
134
168
|
@field_name = field_name
|
135
169
|
end
|
136
170
|
|
171
|
+
def val
|
172
|
+
@field_name
|
173
|
+
end
|
174
|
+
|
137
175
|
def val() self.class.fields[@field_name] end
|
138
176
|
|
139
177
|
def pack
|
@@ -146,7 +184,7 @@ class CauterizeEnumeration < CauterizeData
|
|
146
184
|
end
|
147
185
|
|
148
186
|
def self.unpackio(str)
|
149
|
-
self.from_int(self.repr_type.unpackio(str))
|
187
|
+
self.from_int(self.repr_type.unpackio(str).to_i)
|
150
188
|
end
|
151
189
|
end
|
152
190
|
|
@@ -155,23 +193,37 @@ class CauterizeGroup < CauterizeData
|
|
155
193
|
attr_reader :tag
|
156
194
|
attr_reader :data
|
157
195
|
|
158
|
-
def
|
159
|
-
|
196
|
+
def val
|
197
|
+
if data.nil?
|
198
|
+
{ tag: tag_field_name }
|
199
|
+
else
|
200
|
+
{ tag: tag_field_name,
|
201
|
+
data: data.val }
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
def tag_field_name
|
206
|
+
self.class.from_tag_field_name(@tag.field_name)
|
207
|
+
end
|
208
|
+
|
209
|
+
def self.tag_from_field_name(field_name)
|
210
|
+
self.tag_type.construct((self.tag_prefix + field_name.to_s).to_sym)
|
160
211
|
end
|
161
212
|
|
162
|
-
def self.
|
213
|
+
def self.from_tag_field_name(tag_name)
|
163
214
|
t = tag_name.to_s
|
164
215
|
t.slice!(self.tag_prefix)
|
165
216
|
t.to_sym
|
166
217
|
end
|
167
218
|
|
168
|
-
def initialize(
|
169
|
-
@tag = self.class.
|
170
|
-
|
219
|
+
def initialize(h)
|
220
|
+
@tag = self.class.tag_from_field_name(h[:tag])
|
221
|
+
|
222
|
+
field_class = self.class.fields[tag_field_name]
|
171
223
|
if field_class.nil?
|
172
|
-
@data =
|
224
|
+
@data = nil
|
173
225
|
else
|
174
|
-
@data = field_class.construct(data)
|
226
|
+
@data = field_class.construct(h[:data])
|
175
227
|
end
|
176
228
|
end
|
177
229
|
|
@@ -185,12 +237,12 @@ class CauterizeGroup < CauterizeData
|
|
185
237
|
|
186
238
|
def self.unpackio(str)
|
187
239
|
tag = self.tag_type.unpackio(str)
|
188
|
-
field_name = self.
|
189
|
-
|
190
|
-
if
|
191
|
-
self.new(field_name)
|
240
|
+
field_name = self.from_tag_field_name(tag.field_name)
|
241
|
+
data_type = self.fields[field_name]
|
242
|
+
if data_type.nil?
|
243
|
+
self.new({ tag: field_name })
|
192
244
|
else
|
193
|
-
self.new(field_name, data.unpackio(str))
|
245
|
+
self.new({ tag: field_name, data: data_type.unpackio(str) })
|
194
246
|
end
|
195
247
|
end
|
196
248
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require_relative './cauterize_ruby_baseclasses'
|
2
2
|
|
3
|
-
class UInt8 <
|
3
|
+
class UInt8 < CauterizeBuiltinInteger
|
4
4
|
def in_range(v) v >= 0 && v < 2**8 end
|
5
5
|
def pack
|
6
6
|
[val.to_i].pack("C")
|
@@ -10,7 +10,7 @@ class UInt8 < CauterizeBuiltin
|
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
-
class UInt16 <
|
13
|
+
class UInt16 < CauterizeBuiltinInteger
|
14
14
|
def in_range(v) v >= 0 && v < 2**16 end
|
15
15
|
def pack
|
16
16
|
[val.to_i].pack("S")
|
@@ -20,7 +20,7 @@ class UInt16 < CauterizeBuiltin
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
-
class UInt32 <
|
23
|
+
class UInt32 < CauterizeBuiltinInteger
|
24
24
|
def in_range(v) v >= 0 && v < 2**32 end
|
25
25
|
def pack
|
26
26
|
[val.to_i].pack("L")
|
@@ -30,7 +30,7 @@ class UInt32 < CauterizeBuiltin
|
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
|
-
class UInt64 <
|
33
|
+
class UInt64 < CauterizeBuiltinInteger
|
34
34
|
def in_range(v) v >= 0 && v < 2**64 end
|
35
35
|
def pack
|
36
36
|
[val.to_i].pack("Q")
|
@@ -40,7 +40,7 @@ class UInt64 < CauterizeBuiltin
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
-
class Int8 <
|
43
|
+
class Int8 < CauterizeBuiltinInteger
|
44
44
|
def in_range(v) (v >= -2**7) && (v < 2**7) end
|
45
45
|
def pack
|
46
46
|
[val.to_i].pack("c")
|
@@ -50,7 +50,7 @@ class Int8 < CauterizeBuiltin
|
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
53
|
-
class Int16 <
|
53
|
+
class Int16 < CauterizeBuiltinInteger
|
54
54
|
def in_range(v) (v >= -2**15) && (v < 2**15) end
|
55
55
|
def pack
|
56
56
|
[val.to_i].pack("s")
|
@@ -60,7 +60,7 @@ class Int16 < CauterizeBuiltin
|
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
63
|
-
class Int32 <
|
63
|
+
class Int32 < CauterizeBuiltinInteger
|
64
64
|
def in_range(v) (v >= -2**31) && (v < 2**31) end
|
65
65
|
def pack
|
66
66
|
[val.to_i].pack("l")
|
@@ -70,7 +70,7 @@ class Int32 < CauterizeBuiltin
|
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
73
|
-
class Int64 <
|
73
|
+
class Int64 < CauterizeBuiltinInteger
|
74
74
|
def in_range(v) (v >= -2**63) && (v < 2**63) end
|
75
75
|
def pack
|
76
76
|
[val.to_i].pack("q")
|
@@ -80,7 +80,7 @@ class Int64 < CauterizeBuiltin
|
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
83
|
-
class Bool <
|
83
|
+
class Bool < CauterizeBuiltinBool
|
84
84
|
def in_range(v) true end
|
85
85
|
def pack
|
86
86
|
if @val
|
@@ -98,7 +98,7 @@ class Bool < CauterizeBuiltin
|
|
98
98
|
end
|
99
99
|
end
|
100
100
|
|
101
|
-
class Float32 <
|
101
|
+
class Float32 < CauterizeBuiltinFloat
|
102
102
|
def in_range(v) v > (-3.402823466e38) && v < (3.402823466e38) end
|
103
103
|
def pack
|
104
104
|
[val.to_f].pack("f")
|
@@ -108,7 +108,7 @@ class Float32 < CauterizeBuiltin
|
|
108
108
|
end
|
109
109
|
end
|
110
110
|
|
111
|
-
class Float64 <
|
111
|
+
class Float64 < CauterizeBuiltinFloat
|
112
112
|
def in_range(v) true end
|
113
113
|
def pack
|
114
114
|
[val.to_f].pack("d")
|
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.pre11
|
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-
|
12
|
+
date: 2013-08-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -263,7 +263,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
263
263
|
version: '0'
|
264
264
|
segments:
|
265
265
|
- 0
|
266
|
-
hash:
|
266
|
+
hash: -3567501395549835058
|
267
267
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
268
268
|
none: false
|
269
269
|
requirements:
|