Class: Erlang::ETF::String

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

Overview

1 2 Len
107 Len Characters

String does NOT have a corresponding Erlang representation, but is an optimization for sending lists of bytes (integer in the range 0-255) more efficiently over the distribution. Since the Length field is an unsigned 2 byte integer (big endian), implementations must make sure that lists longer than 65535 elements are encoded as LIST_EXT.

(see STRING_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(characters) ⇒ String

Returns a new instance of String.



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

def initialize(characters)
  @characters = characters
end

Instance Method Details

#__ruby_evolve__Object



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

def __ruby_evolve__
  ::Erlang::String.new(characters)
end

#deserialize_characters(buffer) ⇒ Object



31
32
33
# File 'lib/erlang/etf/string.rb', line 31

def deserialize_characters(buffer)
  self.characters = buffer.read(len).from_utf8_binary
end

#serialize_characters(buffer) ⇒ Object



36
37
38
# File 'lib/erlang/etf/string.rb', line 36

def serialize_characters(buffer)
  buffer << characters.to_utf8_binary
end