pub struct NestedShare {
pub heap_id_at: usize,
pub target: SharedKey,
}Expand description
One place a message body holds another shared message’s heap ID.
The attribute message is the one class that does this: H5A__create
shares the attribute’s datatype and dataspace before H5O__attr_create
shares the attribute (H5Aint.c:375-377), so the body that reaches the heap
carries their heap IDs and says so in its own flags byte. Those IDs are
zero in SharedMessage::body — the heap has not been laid out when the
body is offered — and build_shared_messages fills them in.
The target is named by its own key rather than by position: an index picks
messages by class, so an attribute’s datatype can belong to a different
index than the attribute, and a reader resolves the pointer through the
master table by class as well (H5SM_get_fheap_addr).
Fields§
§heap_id_at: usizeOffset in the body of the eight-byte heap ID, i.e. two bytes past the
start of the H5O_shared_t that holds it.
target: SharedKeyThe message this pointer names. It holds no nesting of its own — datatype and dataspace messages have nothing to nest.