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