1 #ifndef WREPORT_BULLETIN_H
2 #define WREPORT_BULLETIN_H
4 #include <wreport/var.h>
5 #include <wreport/subset.h>
6 #include <wreport/opcodes.h>
7 #include <wreport/tables.h>
8 #include <wreport/fwd.h>
212 bool decode_adds_undef_attrs =
false;
221 static std::unique_ptr<BufrCodecOptions>
create();
232 uint8_t edition_number = 4;
241 uint8_t master_table_version_number = 19;
251 uint8_t master_table_version_number_local = 0;
268 unsigned section_end[6] = { 0, 0, 0, 0, 0, 0 };
306 static void write(
const std::string& buf, FILE* out,
const char*
fname=0);
312 static std::unique_ptr<BufrBulletin>
create();
356 static std::unique_ptr<BufrBulletin>
decode(
const std::string& raw,
const char*
fname=
"(memory)",
size_t offset=0);
399 uint8_t edition_number = 2;
407 uint8_t master_table_version_number = 19;
420 uint8_t master_table_version_number_bufr = 19;
430 uint8_t master_table_version_number_local = 0;
433 bool has_check_digit =
false;
469 static void write(
const std::string& buf, FILE* out,
const char*
fname=0);
475 static std::unique_ptr<CrexBulletin>
create();
503 static std::unique_ptr<CrexBulletin>
decode(
const std::string& raw,
const char*
fname=
"(memory)",
size_t offset=0);
String functions.
Definition: benchmark.h:13
BUFR bulletin implementation.
Definition: bulletin.h:230
static void write(const std::string &buf, FILE *out, const char *fname=0)
Write an encoded BUFR message to a stream.
unsigned diff_details(const Bulletin &msg) const override
Diff format-specific details.
static std::unique_ptr< BufrBulletin > decode_verbose(const std::string &raw, FILE *out, const char *fname="(memory)", size_t offset=0)
Parse an encoded BUFR message, printing decoding information.
static bool read(FILE *in, std::string &buf, const char *fname=0, off_t *offset=0)
Read an encoded BUFR message from a stream.
void clear()
Reset the bulletin.
bool compression
Whether the message is compressed.
Definition: bulletin.h:254
std::string encode() const override
Encode the message.
std::string optional_section
Raw optional section of the message.
Definition: bulletin.h:261
static std::unique_ptr< BufrBulletin > decode(const std::string &raw, const char *fname="(memory)", size_t offset=0)
Parse an encoded BUFR message.
void print_details(FILE *out) const override
Print format-specific details.
void load_tables() override
Load a new set of tables to use for encoding this message.
static std::unique_ptr< BufrBulletin > decode_header(const std::string &raw, const BufrCodecOptions &opts, const char *fname="(memory)", size_t offset=0)
Parse only the header of an encoded BUFR message.
static std::unique_ptr< BufrBulletin > create()
To prevent breaking ABI if new members are added to bulletins, direct construction is discouraged in ...
static std::unique_ptr< BufrBulletin > decode(const std::string &raw, const BufrCodecOptions &opts, const char *fname="(memory)", size_t offset=0)
Parse an encoded BUFR message.
static std::unique_ptr< BufrBulletin > decode_header(const std::string &raw, const char *fname="(memory)", size_t offset=0)
Parse only the header of an encoded BUFR message.
const char * encoding_name() const override
Type of source/target encoding.
Definition: bulletin.h:274
Options used to configure BUFR decoding.
Definition: bulletin.h:202
static std::unique_ptr< BufrCodecOptions > create()
Create a BufrCodecOptions.
Storage for the decoded data of a BUFR or CREX message.
Definition: bulletin.h:31
Subset & obtain_subset(unsigned subsection)
Get a Subset from the message.
virtual void print_details(FILE *out) const
Print format-specific details.
uint16_t originating_centre
Identification of originating/generating centre (see Common Code table C-11)
Definition: bulletin.h:88
uint8_t update_sequence_number
Update sequence number (zero for original messages and for messages containing only delayed reports; ...
Definition: bulletin.h:100
uint8_t rep_hour
Most typical time for the BUFR message contents.
Definition: bulletin.h:112
virtual unsigned diff_details(const Bulletin &msg) const
Diff format-specific details.
std::vector< Subset > subsets
Decoded variables.
Definition: bulletin.h:124
uint8_t rep_minute
Most typical time for the BUFR message contents.
Definition: bulletin.h:113
virtual void load_tables()=0
Load a new set of tables to use for encoding this message.
uint16_t originating_subcentre
Identification of originating/generating sub-centre (allocated by originating/generating centre - see...
Definition: bulletin.h:94
virtual const char * encoding_name() const =0
Type of source/target encoding.
uint8_t rep_month
Most typical time for the BUFR message contents.
Definition: bulletin.h:110
void print_structured(FILE *out) const
Dump the contents of this bulletin, in a more structured way.
std::vector< Varcode > datadesc
Parsed data descriptor section.
Definition: bulletin.h:121
off_t offset
File offset of the start of the message.
Definition: bulletin.h:48
uint16_t rep_year
Most typical time for the BUFR message contents.
Definition: bulletin.h:109
Tables tables
Varcode and opcode tables used for encoding or decoding.
Definition: bulletin.h:118
const Subset & subset(unsigned subsection) const
Get a Subset from the message.
std::string fname
Input file name (optional).
Definition: bulletin.h:39
uint8_t rep_second
Most typical time for the BUFR message contents.
Definition: bulletin.h:114
virtual void clear()
Reset the bulletin.
virtual std::string encode() const =0
Encode the message.
void print_datadesc(FILE *out, unsigned indent=0) const
Pretty-print the data descriptor section.
void print(FILE *out) const
Dump the contents of this bulletin.
uint8_t rep_day
Most typical time for the BUFR message contents.
Definition: bulletin.h:111
virtual unsigned diff(const Bulletin &msg) const
Compute the differences between two bulletins.
uint8_t data_subcategory_local
Local data sub-category, defined locally by automatic data-processing (ADP) centres.
Definition: bulletin.h:82
uint8_t master_table_number
BUFR Master table number.
Definition: bulletin.h:60
uint8_t data_category
Data category (BUFR or CREX Table A)
Definition: bulletin.h:63
uint8_t data_subcategory
International data sub-category (see Common Code table C-13)
Definition: bulletin.h:66
CREX bulletin implementation.
Definition: bulletin.h:397
static std::unique_ptr< CrexBulletin > decode_verbose(const std::string &raw, FILE *out, const char *fname="(memory)", size_t offset=0)
Parse an encoded BUFR message, printing decoding information.
static std::unique_ptr< CrexBulletin > decode(const std::string &raw, const char *fname="(memory)", size_t offset=0)
Parse an encoded BUFR message.
static void write(const std::string &buf, FILE *out, const char *fname=0)
Write an encoded BUFR message to a stream.
void print_details(FILE *out) const override
Print format-specific details.
static std::unique_ptr< CrexBulletin > decode_header(const std::string &raw, const char *fname="(memory)", size_t offset=0)
Parse only the header of an encoded BUFR message.
std::string encode() const override
Encode the message.
static bool read(FILE *in, std::string &buf, const char *fname=0, off_t *offset=0)
Read an encoded BUFR message from a stream.
void load_tables() override
Load a new set of tables to use for encoding this message.
unsigned diff_details(const Bulletin &msg) const override
Diff format-specific details.
const char * encoding_name() const override
Type of source/target encoding.
Definition: bulletin.h:437
static std::unique_ptr< CrexBulletin > create()
To prevent breaking ABI if new members are added to bulletins, direct construction is discouraged in ...
void clear()
Reset the bulletin.
Represent a BUFR/CREX data subset as a list of decoded variables.
Definition: subset.h:14
Collection of BUFR/CREX tables used to work on a bulletin.
Definition: tables.h:18