Class: Factorix::SerDes::UnsignedInteger

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

Overview

Unsigned integer wrapper

This class wraps a non-negative Integer value to indicate it was originally stored as an unsigned integer (Type 7) in Factorio’s Property Tree format.

Examples:

Creating an unsigned integer

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

Negative values raise an error

UnsignedInteger.new(-5)  # => ArgumentError

Instance Method Summary collapse

Constructor Details

#initialize(value) ⇒ UnsignedInteger

Create a new UnsignedInteger

Parameters:

  • value (Integer)

    The integer value (must be non-negative)

Raises:

  • (ArgumentError)

    If value is not an Integer

  • (ArgumentError)

    If value is negative



24
25
26
27
28
29
# File 'lib/factorix/ser_des/unsigned_integer.rb', line 24

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

  super
end

Instance Method Details

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

Compare with another UnsignedInteger or Integer

Parameters:

Returns:

  • (Boolean)

    True if equal



40
41
42
43
44
45
46
47
48
49
# File 'lib/factorix/ser_des/unsigned_integer.rb', line 40

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

#hashInteger

Hash code for use in Hash keys

Returns:

  • (Integer)

    Hash code



54
# File 'lib/factorix/ser_des/unsigned_integer.rb', line 54

def hash = [value, :unsigned].hash

#inspectString

String representation

Returns:

  • (String)

    String representation



62
# File 'lib/factorix/ser_des/unsigned_integer.rb', line 62

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

#valueInteger

Get the underlying integer value

Returns:

  • (Integer)

    The wrapped integer value



34
# File 'lib/factorix/ser_des/unsigned_integer.rb', line 34

def value = __getobj__