1use std::io::{Read, Seek, Write};
4
5pub mod data_extension_hdr;
6pub mod file_hdr;
7pub mod graphic_hdr;
8pub mod image_hdr;
9pub mod reserved_extension_hdr;
10pub mod text_hdr;
11
12pub use data_extension_hdr::DataExtensionHeader;
13pub use file_hdr::NitfHeader;
14pub use graphic_hdr::GraphicHeader;
15pub use image_hdr::ImageHeader;
16pub use reserved_extension_hdr::ReservedExtensionHeader;
17pub use text_hdr::TextHeader;
18
19use crate::NitfResult;
20
21pub trait NitfSegmentHeader
25where
26 Self: Sized + Default + PartialEq + Eq + Ord + PartialOrd + Clone,
27{
28 #[allow(unused)]
34 fn read(&mut self, reader: &mut (impl Read + Seek)) -> NitfResult<()>;
35
36 #[allow(unused)]
42 fn write(&self, writer: &mut (impl Write + Seek)) -> NitfResult<usize>;
43
44 #[allow(unused)]
46 fn length(&self) -> usize;
47
48 fn from_reader(reader: &mut (impl Read + Seek)) -> NitfResult<Self> {
49 let mut hdr = Self::default();
50 hdr.read(reader)?;
51 Ok(hdr)
52 }
53}