|
12 | 12 | # See the License for the specific language governing permissions and |
13 | 13 | # limitations under the License. |
14 | 14 |
|
| 15 | +require_relative "alignable" |
15 | 16 | require_relative "append_as_bytes" |
16 | 17 |
|
17 | 18 | module FlatBuffers |
18 | 19 | using AppendAsBytes if const_defined?(:AppendAsBytes) |
19 | 20 |
|
20 | 21 | class Serializer |
21 | | - module Alignable |
22 | | - private |
23 | | - def align32!(data) |
24 | | - padding_size = data.bytesize % 4 # IO::Buffer.size_of(:s32) |
25 | | - return if padding_size.zero? |
26 | | - data.append_as_bytes("\x00" * padding_size) |
27 | | - end |
28 | | - end |
29 | | - |
30 | 22 | module Packable |
31 | 23 | private |
32 | 24 | def pack_value(base_type, value) |
@@ -60,7 +52,6 @@ def pack_value(base_type, value) |
60 | 52 | packed_value = [value.bytesize].pack("L<") |
61 | 53 | packed_value.append_as_bytes(value) |
62 | 54 | packed_value.append_as_bytes("\x00") |
63 | | - align32!(packed_value) |
64 | 55 | packed_value |
65 | 56 | when String |
66 | 57 | klass = Object.const_get(base_type) |
@@ -89,7 +80,7 @@ def add_field(field, value) |
89 | 80 | packed_value = pack_value(field.base_type, value) |
90 | 81 | @buffer.append_as_bytes(packed_value) |
91 | 82 | unless field.padding.zero? |
92 | | - @buffer.append_as_bytes("\x00" * field.padding) |
| 83 | + pad!(@buffer, field.padding) |
93 | 84 | end |
94 | 85 | end |
95 | 86 |
|
@@ -243,7 +234,7 @@ def add_field(field, value) |
243 | 234 | end |
244 | 235 |
|
245 | 236 | def finish |
246 | | - align32!(@field_values) |
| 237 | + align!(@field_values, View::OFFSET_SIZE) |
247 | 238 | table_size = View::Table.compute_size(@field_values.bytesize) |
248 | 239 |
|
249 | 240 | field_offset_base = |
|
0 commit comments