Skip to main content

grib_reader/
metadata.rs

1//! Edition-independent field metadata.
2
3/// Common reference time representation for GRIB fields.
4#[derive(Debug, Clone, Copy, PartialEq, Eq)]
5pub struct ReferenceTime {
6    pub year: u16,
7    pub month: u8,
8    pub day: u8,
9    pub hour: u8,
10    pub minute: u8,
11    pub second: u8,
12}
13
14/// Edition-independent parameter identity.
15#[derive(Debug, Clone, Copy, PartialEq, Eq)]
16pub struct Parameter {
17    pub discipline: Option<u8>,
18    pub category: Option<u8>,
19    pub table_version: Option<u8>,
20    pub number: u8,
21    pub short_name: &'static str,
22    pub description: &'static str,
23}
24
25impl Parameter {
26    pub fn new_grib1(
27        table_version: u8,
28        number: u8,
29        short_name: &'static str,
30        description: &'static str,
31    ) -> Self {
32        Self {
33            discipline: None,
34            category: None,
35            table_version: Some(table_version),
36            number,
37            short_name,
38            description,
39        }
40    }
41
42    pub fn new_grib2(
43        discipline: u8,
44        category: u8,
45        number: u8,
46        short_name: &'static str,
47        description: &'static str,
48    ) -> Self {
49        Self {
50            discipline: Some(discipline),
51            category: Some(category),
52            table_version: None,
53            number,
54            short_name,
55            description,
56        }
57    }
58}