class IcAgent::Candid::TupleClass
Represents Tuple, a syntactic sugar for Record.
Attributes
components[RW]
Public Class Methods
new(*_components)
click to toggle source
Calls superclass method
IcAgent::Candid::RecordClass::new
# File lib/ic_agent/candid.rb, line 867 def initialize(*_components) x = {} _components.each_with_index do |v, i| x["_#{i}_"] = v end super(x) @components = _components end
Public Instance Methods
covariant(x)
click to toggle source
# File lib/ic_agent/candid.rb, line 876 def covariant(x) unless x.is_a?(Array) raise ValueError, 'Expected tuple type input.' end @components.each_with_index do |v, idx| unless v.covariant(x[idx]) return false end end x.length >= @fields.length end
decode_value(b, t)
click to toggle source
# File lib/ic_agent/candid.rb, line 897 def decode_value(b, t) tup = check_type(t) unless tup.is_a?(TupleClass) raise ValueError, 'not a tuple type' end unless tup.components.length == @components.length raise ValueError, 'tuple mismatch' end res = [] tup.components.each_with_index do |wireType, i| if i >= @components.length wireType.decode_value(b, wireType) else res << @components[i].decode_value(b, wireType) end end res end
display()
click to toggle source
# File lib/ic_agent/candid.rb, line 921 def display d = @components.map { |item| item.display() } "record {#{d.join(';')}}" end
encode_value(val)
click to toggle source
# File lib/ic_agent/candid.rb, line 889 def encode_value(val) bufs = ''.b @components.each_with_index do |_, i| bufs += @components[i].encode_value(val[i]) end bufs end
id()
click to toggle source
# File lib/ic_agent/candid.rb, line 917 def id TypeIds::Tuple end