Class: Erlang::ETF::LargeTuple

Inherits:
Object
  • Object
show all
Includes:
Term
Defined in:
lib/erlang/etf/large_tuple.rb

Overview

1 4 N
105 Arity Elements

Same as SMALL_TUPLE_EXT with the exception that Arity is an unsigned 4 byte integer in big endian format.

(see LARGE_TUPLE_EXT)

Constant Summary

Constants included from Term

Term::BERT_PREFIX, Term::BIN_LSB_PACK, Term::BIN_MSB_PACK

Instance Method Summary collapse

Methods included from Term

#==, #__erlang_evolve__, #__erlang_type__, included

Constructor Details

#initialize(elements) ⇒ LargeTuple

Returns a new instance of LargeTuple.



37
38
39
# File 'lib/erlang/etf/large_tuple.rb', line 37

def initialize(elements)
  @elements = elements
end

Instance Method Details

#__ruby_evolve__Object



51
52
53
54
55
56
57
# File 'lib/erlang/etf/large_tuple.rb', line 51

def __ruby_evolve__
  if bert?
    ::Erlang::ETF::BERT.evolve(self)
  else
    ::Erlang::Tuple[*elements.map(&:__ruby_evolve__)]
  end
end

#bert?Boolean

Returns:

  • (Boolean)


46
47
48
49
# File 'lib/erlang/etf/large_tuple.rb', line 46

def bert?
  elements[0].respond_to?(:atom_name) &&
  elements[0].atom_name == BERT_PREFIX
end

#serialize_header(buffer) ⇒ Object



41
42
43
44
# File 'lib/erlang/etf/large_tuple.rb', line 41

def serialize_header(buffer)
  serialize_tag(buffer)
  serialize_arity(buffer)
end