class Exonum::ArrayT
Attributes
value_type[RW]
Public Class Methods
new(value_type)
click to toggle source
# File lib/exonum/types/array.rb, line 5 def initialize value_type raise 'String arrays are not supported yet' if value_type.is_a?(StringT) self.value_type = value_type end
Public Instance Methods
fixed?()
click to toggle source
# File lib/exonum/types/array.rb, line 14 def fixed? false end
serialize(data, buffer, from=0, shift=0)
click to toggle source
# File lib/exonum/types/array.rb, line 18 def serialize data, buffer, from=0, shift=0 raise "Expecting array" unless data.is_a?(Array) UInt32T.serialize buffer.length, buffer, from UInt32T.serialize data.length, buffer, from + 4 if value_type.is_a?(StringT) start = buffer.length (start..(data.length*8-1)).each do |i| buffer[i] = 0 end (0..(data.length-1)).each do |i| index = start + i*8 finish = buffer.length UInt32T.serialize finish - shift, buffer, index value_type.serialize data[i], buffer, finish UInt32T.serialize buffer.length - finish, buffer, index + 4 end elsif value_type.is_a?(ArrayT) start = buffer.length (start..(data.length*8-1)).each do |i| buffer[i] = 0 end (0..(data.length-1)).each do |i| index = start + i*8 value_type.serialize data[i], buffer, shift end else data.each do |item| bufferLength = buffer.length value_type.serialize item, buffer, bufferLength, bufferLength + value_type.size end end end
size()
click to toggle source
# File lib/exonum/types/array.rb, line 10 def size 8 end