pub struct VirtualMappingList {
pub mappings: Vec<VirtualMapping>,
}Expand description
A decoded Virtual Dataset mapping list.
Fields§
§mappings: Vec<VirtualMapping>Implementations§
Source§impl VirtualMappingList
impl VirtualMappingList
Sourcepub fn encode(&self, ctx: &FormatContext) -> FormatResult<Vec<u8>>
pub fn encode(&self, ctx: &FormatContext) -> FormatResult<Vec<u8>>
Encode this mapping list into the bytes one global heap object holds
— H5D__virtual_store_layout (H5Dvirtual.c).
Always at heap encoding version 0, because that is the only version
libhdf5 writes short of H5F_LIBVER_V200: version 1 exists solely to
shorten repeated names (SOURCE_SAME_FILE / the two _SHARED forms),
and H5D__virtual_store_layout picks it only when the file’s low
bound is at least V200 and it measures the version-1 block as no
larger. Nothing here is lost by staying at 0: the same mappings decode
back identically, one inline name per entry.
A name holding an interior NUL is refused rather than written: the wire form terminates each name with one, so a name containing another would read back truncated — and everything after it in the block would decode as some other field.
Sourcepub fn decode(buf: &[u8], ctx: &FormatContext) -> FormatResult<Self>
pub fn decode(buf: &[u8], ctx: &FormatContext) -> FormatResult<Self>
Decode a mapping list from a global heap object’s raw bytes.
Unlike most message decoders here, this does not return a
“bytes consumed” count: buf is expected to be exactly one heap
object’s data (as GlobalHeapCollection::get_object returns it),
and every byte in it belongs to this structure — trailing bytes
left over after the checksum are a corrupt block, not data for a
caller to continue decoding, so that case is an error instead.