libwreport  3.38
bitmaps.h
1 #ifndef WREPORT_BULLETIN_BITMAPS_H
2 #define WREPORT_BULLETIN_BITMAPS_H
3 
4 #include <wreport/var.h>
5 #include <vector>
6 
7 namespace wreport {
8 struct Var;
9 struct Subset;
10 
11 namespace bulletin {
12 
14 struct Bitmap
15 {
18 
23  std::vector<unsigned> refs;
24 
31  std::vector<unsigned>::const_reverse_iterator iter;
32 
44  Bitmap(const Var& bitmap, const Subset& subset, unsigned anchor);
45  Bitmap(const Var& bitmap, const Subset& subset);
46  Bitmap(const Bitmap&) = delete;
47  ~Bitmap();
48  Bitmap& operator=(const Bitmap&) = delete;
49 
54  bool eob() const;
55 
60  unsigned next();
61 
63  void reuse();
64 };
65 
66 struct Bitmaps
67 {
70 
72  Bitmap* current = nullptr;
73 
75  Bitmap* last = nullptr;
76 
77 
78  Bitmaps() {}
79  Bitmaps(const Bitmaps&) = delete;
80  ~Bitmaps();
81  Bitmaps& operator=(const Bitmaps&) = delete;
82 
83  void define(const Var& bitmap, const Subset& subset);
84  void define(const Var& bitmap, const Subset& subset, unsigned anchor_point);
85 
86  void reuse_last();
87 
88  void discard_last();
89 
94  unsigned next();
95 
97  bool active() const { return (bool)current; }
98 };
99 
100 }
101 }
102 #endif
Represent a BUFR/CREX data subset as a list of decoded variables.
Definition: subset.h:13
A physical variable.
Definition: var.h:25
String functions.
Definition: benchmark.h:13
uint16_t Varcode
Holds the WMO variable code of a variable.
Definition: fwd.h:12
Associate a Data Present Bitmap to decoded variables in a subset.
Definition: bitmaps.h:15
unsigned next()
Return the next variable offset for which the bitmap reports that data is present.
Var bitmap
Bitmap being iterated.
Definition: bitmaps.h:17
void reuse()
Reset the bitmap iterator, to reuse the bitmap another time.
bool eob() const
True if there is no bitmap or if the bitmap has been iterated until the end.
Bitmap(const Var &bitmap, const Subset &subset, unsigned anchor)
Create a new bitmap.
std::vector< unsigned > refs
Arrays of variable indices corresponding to positions in the bitmap where data is present.
Definition: bitmaps.h:23
std::vector< unsigned >::const_reverse_iterator iter
Iterator over refs.
Definition: bitmaps.h:31
Definition: bitmaps.h:67
unsigned next()
Return the next variable offset for which the bitmap reports that data is present.
Bitmap * last
Last bitmap used.
Definition: bitmaps.h:75
bool active() const
Return true if there is an active bitmap.
Definition: bitmaps.h:97
Varcode pending_definitions
Nonzero if a Data Present Bitmap is expected.
Definition: bitmaps.h:69
Bitmap * current
Currently active bitmap.
Definition: bitmaps.h:72