def read_binary_object(fname,fd)
buff = fd.read(1)
object_length = buff.unpack("C*")
object_length = object_length[0] & 0xF
buff = buff.unpack("H*")
object_type = buff[0][0].chr
if(object_type != "0" && object_length == 15) then
object_length = read_binary_object(fname,fd)
object_length = object_length.value
end
retval = nil
case object_type
when '0' then
retval = read_binary_null_type(object_length)
when '1' then
retval = read_binary_int(fname,fd,object_length)
when '2' then
retval = read_binary_real(fname,fd,object_length)
when '3' then
retval = read_binary_date(fname,fd,object_length)
when '4' then
retval = read_binary_data(fname,fd,object_length)
when '5' then
retval = read_binary_string(fname,fd,object_length)
when '6' then
retval = read_binary_unicode_string(fname,fd,object_length)
when 'a' then
retval = read_binary_array(fname,fd,object_length)
when 'd' then
retval = read_binary_dict(fname,fd,object_length)
end
return retval
end