'Decode a section of the data section starting at offset
Arguments:
offset -- the location of the data structure to decode'

def decode(self, offset):

    new_offset = (offset + 1)
    (ctrl_byte,) = struct.unpack('!B', self._buffer[offset:new_offset])
    type_num = (ctrl_byte >> 5)
    if (not type_num):
        (type_num, new_offset) = self._read_extended(new_offset)
    if (not (type_num in self._type_decoder)):
        raise InvalidDatabaseError(u'Unexpected    type    number    ({type})    encountered'.format(type=type_num))
    (size, new_offset) = self._size_from_ctrl_byte(ctrl_byte, new_offset, type_num)
    return self._type_decoder[type_num](self, size, new_offset)
