Class: Factorix::SerDes::SignedInteger

Inherits:
SimpleDelegator
  • Object
show all
Defined in:
lib/factorix/ser_des/signed_integer.rb

Overview

Signed integer wrapper

This class wraps an Integer value to indicate it was originally stored as a signed integer (Type 6) in Factorio’s Property Tree format.

Examples:

Creating a signed integer

value = SignedInteger.new(42)
value + 1  # => 43 (behaves like Integer)

Negative values are allowed

value = SignedInteger.new(-5)

Instance Method Summary collapse

Constructor Details

#initialize(value) ⇒ SignedInteger

Create a new SignedInteger

Parameters:

  • value (Integer)

    The integer value

Raises:

  • (ArgumentError)

    If value is not an Integer



23
24
25
26
27
# File 'lib/factorix/ser_des/signed_integer.rb', line 23

def initialize(value)
  raise ArgumentError, "value must be an Integer" unless value.is_a?(Integer)

  super
end

Instance Method Details

#==(other) ⇒ Boolean Also known as: eql?

Compare with another SignedInteger or Integer

Parameters:

Returns:

  • (Boolean)

    True if equal



38
39
40
41
42
43
44
45
46
47
# File 'lib/factorix/ser_des/signed_integer.rb', line 38

def ==(other)
  case other
  when SignedInteger
    value == other.value
  when Integer
    value == other
  else
    false
  end
end

#hashInteger

Hash code for use in Hash keys

Returns:

  • (Integer)

    Hash code



52
# File 'lib/factorix/ser_des/signed_integer.rb', line 52

def hash = [value, :signed].hash

#inspectString

String representation

Returns:

  • (String)

    String representation



60
# File 'lib/factorix/ser_des/signed_integer.rb', line 60

def inspect = "#<Factorix::SerDes::SignedInteger:0x%016x value=#{value}>" % object_id

#valueInteger

Get the underlying integer value

Returns:

  • (Integer)

    The wrapped integer value



32
# File 'lib/factorix/ser_des/signed_integer.rb', line 32

def value = __getobj__