Sha256: f96b61dd895536b4e1ec305b4cbfe098a0b84ac8dd664392b0115f07fd65a702
Contents?: true
Size: 1.42 KB
Versions: 1
Compression:
Stored size: 1.42 KB
Contents
module Exonum class ArrayT attr_accessor :value_type def initialize value_type raise 'String arrays are not supported yet' if value_type.is_a?(StringT) self.value_type = value_type end def size 8 end def fixed? false end def serialize data, buffer, from=0, shift=0 raise "Expecting array" unless data.is_a?(Array) UInt32T.new.serialize buffer.length, buffer, from UInt32T.new.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.new.serialize finish - shift, buffer, index value_type.serialize data[i], buffer, finish UInt32T.new.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 end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
exonum-client-ruby-0.0.1 | lib/exonum/types/array.rb |