class UR::Serialize::DataObject

Attributes

recipe_id[RW]
values[R]

Public Class Methods

create_empty(names, recipe_id) click to toggle source
# File lib/serialize.rb, line 107
def self.create_empty(names, recipe_id)
  obj = DataObject.new
  names.each do |i|
    obj.values[i] = nil
  end
  obj.recipe_id = recipe_id
  obj
end
new() click to toggle source
# File lib/serialize.rb, line 81
def initialize
  @values = {}
  @recipe_id = nil
end
unpack(data, names, types) click to toggle source
# File lib/serialize.rb, line 93
def self.unpack(data, names, types)
  if names.length != types.length
    raise RuntimeError.new('List sizes are not identical.')
  end
  obj = DataObject.new
  offset = 0
  obj.recipe_id = data[0]
  names.each_with_index do |name,i|
    obj.values[name] = Serialize.unpack_field(data[1..-1], offset, types[i])
    offset += Serialize::get_item_size(types[i])
  end
  obj
end

Public Instance Methods

[](item) click to toggle source
# File lib/serialize.rb, line 86
def [](item)
  @values[item]
end
[]=(item,value) click to toggle source
# File lib/serialize.rb, line 89
def []=(item,value)
  @values[item] = value
end
pack(names, types) click to toggle source
# File lib/serialize.rb, line 116
def pack(names, types)
  if names.length != types.length
    raise RuntimeError.new('List sizes are not identical.')
  end
  l = []
  l.append @recipe_id if @recipe_id
  names.each do |i|
    raise RuntimeError.new('Uninitialized parameter: ' + i) if @values[i].nil?
    l.push *(!!@values[i] == @values[i] ? (@values[i] == true ? 1 : 0) : @values[i])
  end
  l
end