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
9namespace wreport {
10
14class BufrTableID
15{
16public:
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
57std::ostream& operator<<(std::ostream& out, const BufrTableID& id);
58
62class CrexTableID
63{
64public:
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
110std::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