libwreport  3.40
tableinfo.h
1 #ifndef WREPORT_TABLEINFO_H
2 #define WREPORT_TABLEINFO_H
3 
4 #include <cstdint>
5 #include <cstdio>
6 #include <iosfwd>
7 #include <wreport/fwd.h>
8 
9 namespace wreport {
10 
15 {
16 public:
17  static const uint8_t MASTER_TABLE_VERSION_NUMBER_NEWEST = 0xff;
18 
19  uint16_t originating_centre = 0xffff;
20  uint16_t originating_subcentre = 0xffff;
21  uint8_t master_table_number = 0xff;
22  uint8_t master_table_version_number = 0xff;
23  uint8_t master_table_version_number_local = 0xff;
24 
25  BufrTableID() {}
26  BufrTableID(uint16_t originating_centre, uint16_t originating_subcentre,
27  uint8_t master_table_number,
28  uint8_t master_table_version_number,
29  uint8_t master_table_version_number_local)
30  : originating_centre(originating_centre),
31  originating_subcentre(originating_subcentre),
32  master_table_number(master_table_number),
33  master_table_version_number(master_table_version_number),
34  master_table_version_number_local(master_table_version_number_local)
35  {
36  }
37  BufrTableID(const BufrTableID&) = default;
38  BufrTableID(BufrTableID&&) = default;
39  BufrTableID& operator=(const BufrTableID&) = default;
40  BufrTableID& operator=(BufrTableID&&) = default;
41 
42  bool operator<(const BufrTableID& o) const;
43  bool operator==(const BufrTableID& o) const;
44 
45  bool is_acceptable_replacement(const BufrTableID& id) const;
46  bool is_acceptable_replacement(const CrexTableID& id) const;
47  int closest_match(const BufrTableID& first,
48  const BufrTableID& second) const;
49  int closest_match(const CrexTableID& first,
50  const CrexTableID& second) const;
51  int closest_match(const BufrTableID& first,
52  const CrexTableID& second) const;
53 
54  void print(FILE* out) const;
55 };
56 
57 std::ostream& operator<<(std::ostream& out, const BufrTableID& id);
58 
63 {
64 public:
65  static const uint8_t MASTER_TABLE_VERSION_NUMBER_NEWEST = 0xff;
66 
67  uint8_t edition_number = 0xff;
68  uint16_t originating_centre = 0xffff;
69  uint16_t originating_subcentre = 0xffff;
70  uint8_t master_table_number = 0xff;
71  uint8_t master_table_version_number = 0xff;
72  uint8_t master_table_version_number_bufr = 0xff;
73  uint8_t master_table_version_number_local = 0xff;
74 
75  CrexTableID() {}
76  CrexTableID(uint8_t edition_number, uint16_t originating_centre,
77  uint16_t originating_subcentre, uint8_t master_table_number,
78  uint8_t master_table_version_number,
79  uint8_t master_table_version_number_bufr,
80  uint8_t master_table_version_number_local)
81  : edition_number(edition_number),
82  originating_centre(originating_centre),
83  originating_subcentre(originating_subcentre),
84  master_table_number(master_table_number),
85  master_table_version_number(master_table_version_number),
86  master_table_version_number_bufr(master_table_version_number_bufr),
87  master_table_version_number_local(master_table_version_number_local)
88  {
89  }
90  CrexTableID(const CrexTableID&) = default;
91  CrexTableID(CrexTableID&&) = default;
92  CrexTableID& operator=(const CrexTableID&) = default;
93  CrexTableID& operator=(CrexTableID&&) = default;
94 
95  bool operator<(const CrexTableID& o) const;
96  bool operator==(const CrexTableID& o) const;
97 
98  bool is_acceptable_replacement(const BufrTableID& id) const;
99  bool is_acceptable_replacement(const CrexTableID& id) const;
100  int closest_match(const BufrTableID& first,
101  const BufrTableID& second) const;
102  int closest_match(const CrexTableID& first,
103  const CrexTableID& second) const;
104  int closest_match(const BufrTableID& first,
105  const CrexTableID& second) const;
106 
107  void print(FILE* out) const;
108 };
109 
110 std::ostream& operator<<(std::ostream& out, const CrexTableID& id);
111 
112 } // namespace wreport
113 #endif
Identifying information for one distinct instance of BUFR tables.
Definition: tableinfo.h:15
Identifying information for one distinct instance of CREX tables.
Definition: tableinfo.h:63
String functions.
Definition: benchmark.h:13