dicom_parser::stateful::decode

Trait StatefulDecode

Source
pub trait StatefulDecode {
    type Reader: Read;

    // Required methods
    fn decode_header(&mut self) -> Result<DataElementHeader>;
    fn decode_item_header(&mut self) -> Result<SequenceItemHeader>;
    fn read_value(
        &mut self,
        header: &DataElementHeader,
    ) -> Result<PrimitiveValue>;
    fn read_value_preserved(
        &mut self,
        header: &DataElementHeader,
    ) -> Result<PrimitiveValue>;
    fn read_value_bytes(
        &mut self,
        header: &DataElementHeader,
    ) -> Result<PrimitiveValue>;
    fn read_to_vec(&mut self, length: u32, vec: &mut Vec<u8>) -> Result<()>;
    fn read_u32_to_vec(&mut self, length: u32, vec: &mut Vec<u32>) -> Result<()>;
    fn read_to<W>(&mut self, length: u32, out: W) -> Result<()>
       where Self: Sized,
             W: Write;
    fn skip_bytes(&mut self, length: u32) -> Result<()>;
    fn seek(&mut self, position: u64) -> Result<()>
       where Self::Reader: Seek;
    fn position(&self) -> u64;
}

Required Associated Types§

Required Methods§

Source

fn decode_header(&mut self) -> Result<DataElementHeader>

Same as Decode::decode_header over the bound source.

Source

fn decode_item_header(&mut self) -> Result<SequenceItemHeader>

Same as Decode::decode_item_header over the bound source.

Source

fn read_value(&mut self, header: &DataElementHeader) -> Result<PrimitiveValue>

Eagerly read the following data in the source as a primitive data value. When reading values in text form, a conversion to a more maleable type is attempted. Namely, numbers in text form (IS, DS) are converted to the corresponding binary number types, and date/time instances are decoded into binary date/time objects of types defined in the chrono crate. To avoid this conversion, see read_value_preserved.

§Errors

Returns an error on I/O problems, or if the header VR describes a sequence, which in that case this method should not be used.

Source

fn read_value_preserved( &mut self, header: &DataElementHeader, ) -> Result<PrimitiveValue>

Eagerly read the following data in the source as a primitive data value. Unlike read_value, this method will preserve the DICOM value’s original format: numbers saved as text, as well as dates and times, are read as strings.

§Errors

Returns an error on I/O problems, or if the header VR describes a sequence, which in that case this method should not be used.

Source

fn read_value_bytes( &mut self, header: &DataElementHeader, ) -> Result<PrimitiveValue>

Eagerly read the following data in the source as a primitive data value as bytes, regardless of its value representation.

§Errors

Returns an error on I/O problems, or if the header VR describes a sequence, which in that case this method should not be used.

Source

fn read_to_vec(&mut self, length: u32, vec: &mut Vec<u8>) -> Result<()>

Read the following number of bytes into a vector.

Source

fn read_u32_to_vec(&mut self, length: u32, vec: &mut Vec<u32>) -> Result<()>

Read the following number of bytes as a sequence of unsigned 32 bit integers into a vector.

Source

fn read_to<W>(&mut self, length: u32, out: W) -> Result<()>
where Self: Sized, W: Write,

Read the following number of bytes into a generic writer.

Source

fn skip_bytes(&mut self, length: u32) -> Result<()>

Skip the following bytes into a vector, counting them as if they were read.

Source

fn seek(&mut self, position: u64) -> Result<()>
where Self::Reader: Seek,

Reposition the reader so that it starts reading at the reader’s given position.

The number of bytes read is not expected to be modified.

Source

fn position(&self) -> u64

Retrieve the known position of the inner reader source. If the stateful decoder was constructed at the beginning of the reader, this equals to the number of bytes read so far.

Implementations on Foreign Types§

Source§

impl<D> StatefulDecode for &mut D
where D: StatefulDecode,

Source§

type Reader = <D as StatefulDecode>::Reader

Source§

fn decode_header(&mut self) -> Result<DataElementHeader>

Source§

fn decode_item_header(&mut self) -> Result<SequenceItemHeader>

Source§

fn read_value(&mut self, header: &DataElementHeader) -> Result<PrimitiveValue>

Source§

fn read_value_preserved( &mut self, header: &DataElementHeader, ) -> Result<PrimitiveValue>

Source§

fn read_value_bytes( &mut self, header: &DataElementHeader, ) -> Result<PrimitiveValue>

Source§

fn read_to_vec(&mut self, length: u32, vec: &mut Vec<u8>) -> Result<()>

Source§

fn read_u32_to_vec(&mut self, length: u32, vec: &mut Vec<u32>) -> Result<()>

Source§

fn read_to<W>(&mut self, length: u32, out: W) -> Result<()>
where Self: Sized, W: Write,

Source§

fn skip_bytes(&mut self, length: u32) -> Result<()>

Source§

fn position(&self) -> u64

Source§

fn seek(&mut self, position: u64) -> Result<()>
where Self::Reader: Seek,

Implementors§

Source§

impl<D, S, BD> StatefulDecode for StatefulDecoder<D, S, BD>
where D: DecodeFrom<S>, BD: BasicDecode, S: Read,