class UR::Serialize::DataConfig

Public Class Methods

unpack_recipe(buf) click to toggle source
# File lib/serialize.rb, line 131
def self.unpack_recipe(buf)
  rmd = DataConfig.new
  rmd.id = buf.unpack('C')[0]
  rmd.types = buf[1..-1].split(',')
  rmd.fmt = 'C'
  rmd.types.each do |i|
    if i == 'INT32'
      rmd.fmt += 'i>'
    elsif i == 'UINT32'
      rmd.fmt += 'I>'
    elsif i == 'VECTOR6D'
      rmd.fmt += 'G'*6
    elsif i == 'VECTOR3D'
      rmd.fmt += 'G'*3
    elsif i == 'VECTOR6INT32'
      rmd.fmt += 'i>'*6
    elsif i == 'VECTOR6UINT32'
      rmd.fmt += 'I>'*6
    elsif i == 'DOUBLE'
      rmd.fmt += 'G'
    elsif i == 'UINT64'
      rmd.fmt += 'Q>'
    elsif i == 'UINT8'
      rmd.fmt += 'C'
    elsif i == 'BOOL'
      rmd.fmt += 'c'
    elsif i == 'IN_USE'
      raise  'An input parameter is already in use.'
    else
      raise 'Unknown data type: ' + i
    end
  end
  rmd
end

Public Instance Methods

pack(state) click to toggle source
# File lib/serialize.rb, line 166
def pack(state)
  l = state.pack(self.names, self.types)
  l.pack(self.fmt)
end
unpack(data) click to toggle source
# File lib/serialize.rb, line 171
def unpack(data)
  li = data.unpack(self.fmt)
  DataObject.unpack(li, self.names, self.types)
end