Path: blob/main/crates/polars-arrow/src/io/ipc/write/serialize/map.rs
6940 views
use super::*;12pub(super) fn write_map(3array: &MapArray,4buffers: &mut Vec<ipc::Buffer>,5arrow_data: &mut Vec<u8>,6nodes: &mut Vec<ipc::FieldNode>,7offset: &mut i64,8is_little_endian: bool,9compression: Option<Compression>,10) {11let offsets = array.offsets().buffer();12let validity = array.validity();1314write_bitmap(15validity,16offsets.len() - 1,17buffers,18arrow_data,19offset,20compression,21);2223let first = *offsets.first().unwrap();24let last = *offsets.last().unwrap();25if first == 0 {26write_buffer(27offsets,28buffers,29arrow_data,30offset,31is_little_endian,32compression,33);34} else {35write_buffer_from_iter(36offsets.iter().map(|x| *x - first),37buffers,38arrow_data,39offset,40is_little_endian,41compression,42);43}4445write(46array47.field()48.sliced(first as usize, last as usize - first as usize)49.as_ref(),50buffers,51arrow_data,52nodes,53offset,54is_little_endian,55compression,56);57}585960