Skip to main content

AttributeMessage

Struct AttributeMessage 

Source
pub struct AttributeMessage {
    pub name: String,
    pub datatype: DatatypeMessage,
    pub dataspace: DataspaceMessage,
    pub data: Vec<u8>,
}
Expand description

An HDF5 attribute message.

Fields§

§name: String

Attribute name.

§datatype: DatatypeMessage

Datatype of the attribute value.

§dataspace: DataspaceMessage

Dataspace (scalar or simple).

§data: Vec<u8>

Raw attribute value data.

Implementations§

Source§

impl AttributeMessage

Source

pub fn scalar_string(name: &str, value: &str) -> Self

Create a scalar string attribute with the given name and value.

Uses a null-terminated UTF-8 fixed-length string datatype with size = value.len() + 1 (for the null terminator), and a scalar dataspace.

Source

pub fn scalar_numeric( name: &str, datatype: DatatypeMessage, data: Vec<u8>, ) -> Self

Create a scalar numeric attribute with raw bytes as value.

Source

pub fn array_numeric( name: &str, datatype: DatatypeMessage, dims: &[u64], data: Vec<u8>, ) -> Self

Create a numeric array attribute with a simple dataspace.

dims are the dimension sizes (e.g. &[3] for the 1-D array attributes AreaDetector writes). data is the row-major raw bytes and must hold product(dims) * datatype.element_size() bytes — the caller owns that invariant. An empty dims yields a scalar dataspace; prefer Self::scalar_numeric for that case.

Source

pub fn encode(&self, ctx: &FormatContext) -> Vec<u8> ⓘ

Encode the attribute message into a byte vector.

The result is the raw payload for an object header message of type 0x0C (MSG_ATTRIBUTE). It does NOT include the object header message envelope (type, size, flags bytes); that is handled by the caller.

Source

pub fn encode_at(&self, ctx: &FormatContext, libver: LibverBound) -> Vec<u8> ⓘ

Encode the attribute message for a file whose low libver bound is libver, which the datatype message inside it follows.

Source

pub fn encode_for( &self, ctx: &FormatContext, libver: LibverBound, format: ObjectFormat, ) -> Vec<u8> ⓘ

Encode the attribute message at the version a file of this format calls for, with the datatype inside it at libver.

Source

pub fn encode_with_fields( &self, flags: u8, datatype: &[u8], dataspace: &[u8], ) -> EncodedAttribute

The version-3 body with its datatype and dataspace fields supplied.

H5O__attr_encode writes each of the two through its message class’s encoder, which is the shared encoder when that piece is a shared message — the field then holds a H5O_shared_t and the attribute’s own flags byte says so (H5O_ATTR_FLAG_TYPE_SHARED / H5O_ATTR_FLAG_SPACE_SHARED, H5Oattr.c:358-359). Whichever it is, the size fields record what is actually stored, so the caller supplies the bytes and the matching flag bits and this lays the message out around them.

Source

pub fn decode(buf: &[u8], ctx: &FormatContext) -> FormatResult<(Self, usize)>

Decode an attribute message from a byte buffer.

Supports versions 1, 2, and 3:

  • v1: 8-byte header, each field padded to 8-byte alignment
  • v2: 8-byte header, no alignment padding
  • v3: 9-byte header (adds charset byte), no alignment padding

Trait Implementations§

Source§

impl Clone for AttributeMessage

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for AttributeMessage

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<AttributeMessage> for AttributeEntry

Source§

fn from(attr: AttributeMessage) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for AttributeMessage

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for AttributeMessage

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, S> SimdFrom<T, S> for T
where S: Simd,

Source§

fn simd_from(_simd: S, value: T) -> T

Source§

impl<F, T, S> SimdInto<T, S> for F
where T: SimdFrom<F, S>, S: Simd,

Source§

fn simd_into(self, simd: S) -> T

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.