///|
fn pdf_cursor_read_xref_stream_section(
cursor : @core.ByteCursor,
) -> @reader.PdfXRefSection raise @core.PdfError {
let stream_object_offset = cursor.absolute_position()
if !@core.pdf_is_digit_byte(cursor.peek_byte()) {
raise XRefExpected
}
let parsed = pdf_cursor_read_first_indirect_object_at_current(cursor, [])
guard parsed.object is PdfStreamObject(stream) else { raise XRefExpected }
if !@reader.pdf_reader_xref_stream_type_ok(stream.dictionary) {
raise XRefExpected
}
let decoded_stream = pdf_decode_stream_value(stream)
let widths = @reader.pdf_xref_stream_widths(decoded_stream.dictionary)
let index_pairs = @reader.pdf_xref_stream_index_pairs(
decoded_stream.dictionary,
)
let data = @syntax.pdf_stream_data_bytes(decoded_stream.data)
{
entries: @reader.pdf_xref_stream_entries(data, widths, index_pairs),
trailer: @reader.pdf_reader_stream_dictionary_without_xref_keys(
decoded_stream.dictionary,
),
stream_object_number: Some(parsed.number),
stream_object_offset: Some(stream_object_offset),
}
}