Support qualifiers as RTMD

Registered by vanh souvanlasy

Christophe Beauregard wrote:
Pretty much any non-trivial code dealing with BUFR messages needs to look at the
qualifiers for at least some descriptors. Certainly, this is the case with
observations like existing BUFR obs and the new NC-AWOS messages. Extracting
wind, for example, requires quite a few (0-02-196, 0-02-001, 0-07-032, 0-08-021,
and/or 0-04-025, depending on the message vintage).

But libecbufr really doesn't provide any "helper" support for that sort of thing.
Both MM and the old CMC decoders had a concept of finding a descriptor with the
active qualifer chain.

This makes using random-access functions like bufr_subset_find_descriptor()
problematic since the caller still needs to walk back through the preceding
descriptors to accumulate qualifiers, and the actual process of accumulating
qualifiers... well, there's going to be a lot of code duplication out there and
it's actually a _lot_ more efficient to do this while expanding the message
itself, at the decoder level (one initial pass rather than one for each
descriptor and qualifier chain).

It would be really, really nice if the library actually kept track of the active
qualifiers and for every descriptor provided a list of active qualifiers as part
of the RTMD structure. Something like adding:

  int nqualifiers;
  BufrDescriptor *qualifiers;

to the end of BufrRTMD, and having the decoder build this list up along with the
time/location meta-data.

It might also be desirable to have decoder flags to control this behaviour since
it'll eat a fair bit of memory. Or have some mechanism for filtering desired
qualifiers, maybe?

Note that quality bitmaps may be a whole other can of worms.

Blueprint information

Status:
Complete
Approver:
None
Priority:
Undefined
Drafter:
None
Direction:
Needs approval
Assignee:
cpb
Definition:
Discussion
Series goal:
None
Implementation:
Implemented
Milestone target:
milestone icon 0.8.2rc2
Started by
cpb
Completed by
cpb

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.