1 #ifndef WREPORT_BUFR_DECODER_H 2 #define WREPORT_BUFR_DECODER_H 4 #include <wreport/var.h> 5 #include <wreport/bulletin.h> 6 #include <wreport/bulletin/interpreter.h> 7 #include <wreport/bufr/input.h> 11 struct DispatchToSubsets;
32 void decode_sec1ed3();
33 void decode_sec1ed4();
57 virtual const Subset& reference_subset()
const = 0;
62 virtual Varinfo lookup_info(
unsigned pos)
const = 0;
71 virtual Var decode_uniform_b_value(
Varinfo info) = 0;
77 virtual const Var& decode_and_add_to_all(
Varinfo info) = 0;
79 virtual const Var& decode_and_add_bitmap(
const Tables& tables,
Varcode code,
unsigned bitmap_size) = 0;
85 virtual void decode_and_set_attribute(
Varinfo info,
unsigned pos) = 0;
90 virtual void decode_and_add_b_value(
Varinfo info) = 0;
102 virtual void decode_and_add_raw_character_data(
Varinfo info) = 0;
108 virtual int decode_c03_refval_override(
unsigned bits) = 0;
111 virtual void print_last_variable_added(FILE* out) = 0;
114 virtual void print_last_attribute_added(FILE* out,
Varcode code,
unsigned pos) = 0;
124 const Subset& reference_subset()
const override;
125 Varinfo lookup_info(
unsigned pos)
const override;
126 Var decode_uniform_b_value(
Varinfo info)
override;
127 const Var& decode_and_add_to_all(
Varinfo info)
override;
128 const Var& decode_and_add_bitmap(
const Tables& tables,
Varcode code,
unsigned bitmap_size)
override;
129 void decode_and_set_attribute(
Varinfo info,
unsigned pos)
override;
130 void decode_and_add_b_value(
Varinfo info)
override;
132 void decode_and_add_raw_character_data(
Varinfo info)
override;
133 int decode_c03_refval_override(
unsigned bits)
override;
135 void print_last_variable_added(FILE* out)
override;
136 void print_last_attribute_added(FILE* out,
Varcode code,
unsigned pos)
override;
149 const Subset& reference_subset()
const override;
150 Varinfo lookup_info(
unsigned pos)
const override;
151 Var decode_uniform_b_value(
Varinfo info)
override;
152 const Var& decode_and_add_to_all(
Varinfo info)
override;
153 const Var& decode_and_add_bitmap(
const Tables& tables,
Varcode code,
unsigned bitmap_size)
override;
154 void decode_and_set_attribute(
Varinfo info,
unsigned pos)
override;
155 void decode_and_add_b_value(
Varinfo info)
override;
157 void decode_and_add_raw_character_data(
Varinfo info)
override;
158 int decode_c03_refval_override(
unsigned bits)
override;
160 void print_last_variable_added(FILE* out)
override;
161 void print_last_attribute_added(FILE* out,
Varcode code,
unsigned pos)
override;
164 void decode_b_value(
Varinfo info, std::function<
void(
unsigned,
Var&&)> dest);
173 unsigned define_delayed_replication_factor(
Varinfo info)
override;
174 unsigned define_associated_field_significance(
Varinfo info)
override;
175 unsigned define_bitmap_delayed_replication_factor(
Varinfo info)
override;
176 void define_c03_refval_override(
Varcode code)
override;
177 void define_bitmap(
unsigned bitmap_size)
override;
178 void define_attribute(
Varinfo info,
unsigned pos)
override;
179 void define_substituted_value(
unsigned pos)
override;
180 void define_variable(
Varinfo info)
override;
181 void define_variable_with_associated_field(
Varinfo info)
override;
182 void define_raw_character_data(
Varcode code)
override;
195 void print_lead_continued();
209 unsigned indent_step = 2;
213 void b_variable(
Varcode code)
override;
216 void run_d_expansion(
Varcode code)
override;
217 unsigned define_delayed_replication_factor(
Varinfo info)
override;
218 unsigned define_associated_field_significance(
Varinfo info)
override;
219 unsigned define_bitmap_delayed_replication_factor(
Varinfo info)
override;
220 void define_c03_refval_override(
Varcode code)
override;
221 void define_bitmap(
unsigned bitmap_size)
override;
222 void define_attribute(
Varinfo info,
unsigned pos)
override;
223 void define_substituted_value(
unsigned pos)
override;
224 void define_variable(
Varinfo info)
override;
225 void define_variable_with_associated_field(
Varinfo info)
override;
226 void define_raw_character_data(
Varcode code)
override;
Definition: decoder.h:139
Options used to configure BUFR decoding.
Definition: bulletin.h:201
Input & in
Input buffer.
Definition: decoder.h:45
Bulletin & out
Output bulletin.
Definition: decoder.h:142
A physical variable.
Definition: var.h:24
Subset & out
Subset where decoded variables go.
Definition: decoder.h:120
Collection of BUFR/CREX tables used to work on a bulletin.
Definition: tables.h:17
FILE * verbose_output
If set, be verbose and print a trace of decoding to the given file.
Definition: decoder.h:26
Storage for the decoded data of a BUFR or CREX message.
Definition: bulletin.h:30
Definition: decoder.h:117
uint16_t Varcode
Holds the WMO variable code of a variable.
Definition: fwd.h:11
Information about a variable.
Definition: varinfo.h:136
Sequence of opcodes, as a slice of a Varcode vector.
Definition: opcodes.h:19
unsigned optional_section_length
Optional section length decoded from the message.
Definition: decoder.h:24
Input in
Input data.
Definition: decoder.h:16
String functions.
Definition: benchmark.h:13
Interpreter for data descriptor sections.
Definition: interpreter.h:25
Definition: decoder.h:185
Definition: associated_fields.h:12
unsigned subset_count
Number of subsets in data section.
Definition: decoder.h:145
size_t expected_subsets
Number of expected subsets (read in decode_header, used in decode_data)
Definition: decoder.h:20
Definition: decoder.h:167
Represent a BUFR/CREX data subset as a list of decoded variables.
Definition: subset.h:13
bool conf_add_undef_attrs
True if undefined attributes are added to the output, else false.
Definition: decoder.h:22
BUFR bulletin implementation.
Definition: bulletin.h:229