def read_record_fields(this_record, c)
this_record[:key] = []
index_page.record_format[:key].each do |field|
this_record[:key][field.position] = {
:name => field.name,
:type => field.data_type.name,
:value => c.name(field.name) {
field_length = c.name("field_length") { c.get_ic_uint32 }
field.value_by_length(c, field_length)
}
}
end
if has_previous_version?
field_count = c.name("field_count") { c.get_ic_uint32 }
this_record[:row] = Array.new(index_page.record_format[:row].size)
field_count.times do
field_number = c.name("field_number[#{field_count}]") { c.get_ic_uint32 }
field = nil
field_index = nil
index_page.record_format[:row].each_with_index do |candidate_field, index|
if candidate_field.position == field_number
field = candidate_field
field_index = index
end
end
raise "Unknown field #{field_number}" unless field
this_record[:row][field_index] = {
:name => field.name,
:type => field.data_type.name,
:value => c.name(field.name) {
field_length = c.name("field_length") { c.get_ic_uint32 }
field.value_by_length(c, field_length)
}
}
end
end
end