Library features

# BUFR decoder features

The decoder supports BUFR editions 2, 3 and 4, both uncompressed and compressed.

C operators supported are:

- 1 change data width
- 2 change data scale
- 4 add associated field, limited to 32 bits of associated fields and to associated field significances 1, 2, and 6.
- 5 character data
- 6 local descriptor with explicit length
- 8 override length of character data
- 22 quality information matched via data present bitmap
- 23 substituted values matched via data present bitmap
- 24 first order statistical values matched via data present bitmap

# BUFR encoder features

All features supported by the decoder are supported by the encoder, and tested via decode/reencode/decode runs.

The encoder however does not yet support compression of multisubset data sections.

# CREX decoder features

The decoder supports CREX edition 1.

B, R and D opcodes are supported. Some C modifiers may be supported, but are untested due to lack of real-world samples.

# CREX encoder features

All features supported by the decoder are supported by the encoder, and tested via decode/reencode/decode runs.

# Coding/decoding details

BUFR and CREX header information is stored in member variables of wreport::Bulletin or, for encoding-specific cases, wreport::BufrBulletin and wreport::Crexbulletin.

The contents of the data descriptor section are stored in wreport::Bulletin::datadesc.

The data section is split in 1 or more wreport::Subset objects, stored in wreport::Bulletin::subsets.

BUFR decoding details (such as pointers to beginning and end of the various message sections) are stored in wreport::BufrBulletin::raw_details.

Decoded values are stored as wreport::Var inside wreport::Subset objects. Values that refer to other values (such as associated fields, quality information, substituted values and so on) are stored as attributes of the variable they refer to.

Data Present Bitmaps and other C modifier parameters are stored as special wreport::Var objects, using ad-hoc wreport::Varinfo information that is not found in the usual tables:

- Data Present Bitmaps are stored as string variables, where "+" means "data present" and "-" means "data not present".
- Associated fields are stored as attributes to the wreport::Var object they refer to, according to their Associate Field Significance:
  - significance code 1: stored as a B33002 attribute
  - significance code 2: stored as a B33003 attribute
  - significance code 6: stored as a B33050 attribute
- Quality information is stored as attributes of the variable they refer to, using the appropriate B33YYY descriptor for the attribute values.
- Substituted fields are stored as attributes of the variables they substitute; the attributes will have the same wreport::Varcode as the variable.