libdballe 9.6
common.h
1#ifndef DBALLE_MSG_WREXPORTER_BASE_H
2#define DBALLE_MSG_WREXPORTER_BASE_H
3
4#include <dballe/msg/msg.h>
5
6namespace wreport {
7struct Subset;
8struct Bulletin;
9struct Var;
10}
11
12namespace dballe {
13namespace impl {
14namespace msg {
15namespace wr {
16
18{
19protected:
20 // Subset being written
21 wreport::Subset* subset;
22 const Message* msg = 0;
23 const msg::Context* c_ana = 0;
24 const msg::Context* c_surface_instant = 0;
25
26 void add(wreport::Varcode code, const msg::Context* ctx, const Shortcut& shortcut) const;
27 void add(wreport::Varcode code, const msg::Context* ctx, wreport::Varcode srccode) const;
28 void add(wreport::Varcode code, const msg::Context* ctx) const;
29 void add(wreport::Varcode code, const wreport::Var* var) const;
30
31public:
32 void init(const Message& msg, wreport::Subset& subset);
33 void scan_context(const msg::Context& c);
34
35 void add_ecmwf_synop_head();
36};
37
39{
40protected:
41 const msg::Context* c_geopotential;
42 const msg::Context* c_thermo;
43 const msg::Context* c_tmax;
44 const msg::Context* c_tmin;
45 const msg::Context* c_prec1;
46 const msg::Context* c_prec2;
47 const msg::Context* c_prec24;
48 const msg::Context* c_cloud_cover;
49 const msg::Context* c_cloud_data[4];
50 const msg::Context* c_cloud_group[4];
51 const msg::Context* c_wind;
52 const msg::Context* c_gust1;
53 const msg::Context* c_gust2;
54 const msg::Context* c_visib;
55 const msg::Context* c_past_wtr;
56 const msg::Context* c_depth;
57 const msg::Context* c_swell_waves[2];
58
59public:
60 const wreport::Var* v_press;
61 const wreport::Var* v_pressmsl;
62 const wreport::Var* v_pchange3;
63 const wreport::Var* v_pchange24;
64 const wreport::Var* v_ptend;
65 const wreport::Var* v_geopotential;
66
67 void init(const Message& msg, wreport::Subset& subset);
68 void scan_context(const msg::Context& c);
69
70 // Pressure data
71 void add_D02001();
72 // synop: pressure data
73 void add_D02031();
74 // synop: temperature and humidity
75 void add_D02032();
76 // ship: temperature and humidity
77 void add_D02052();
78 // synop: extreme temperature data
79 void add_D02041();
80 // ship: extreme temperature data
81 void add_D02058();
82 void add_pressure();
83 void add_geopotential(wreport::Varcode code);
84 // Precipitation past 24 hours
85 void add_D02034();
86 // Precipitation measurement
87 void add_D02040();
88 // synop: wind data
89 void add_D02042();
90 // ship: wind data
91 void add_D02059();
92 // Present and past weather
93 void add_D02038();
94 void add_ecmwf_synop_weather();
95 // Basic synoptic "instantaneous" data
96 void add_D02035();
97 // Icing and ice
98 void add_D02055();
99 void add_ecmwf_ice();
100 // ship: visibility data
101 void add_D02053();
102 // Ship marine data
103 void add_D02056();
104 // Sea waves
105 void add_plain_waves();
106 // Ship waves (wind and swell)
107 void add_D02024();
108
113 void add_sensor_height(const msg::Context& c, const wreport::Var* sample_var=NULL);
114
119 void add_marine_sensor_height(const msg::Context& c, const wreport::Var* sample_var=NULL);
120
126
131
136
139
144 void add_time_period(wreport::Varcode code, const msg::Context& c, const wreport::Var* sample_var, const Trange& tr_std);
145};
146
147}
148}
149}
150}
151
152#endif
Storage for related physical data.
Definition: msg.h:131
Store an array of physical data all on the same level.
Definition: context.h:24
void add_marine_sensor_height(const msg::Context &c, const wreport::Var *sample_var=NULL)
Add B07032 and B07033 sensor heights, taking the value from the var attributes or the context,...
void add_prec_group(const msg::Context *c)
Add time period and total precipitation from the given context.
void add_time_period(wreport::Varcode code, const msg::Context &c, const wreport::Var *sample_var, const Trange &tr_std)
Add a B04025 or B04025 time period variable, with data taken from its parameters as needed.
void add_wind_gust(const msg::Context *c)
Add a wind gust block with info from the given context.
void add_xtemp_group(wreport::Varcode code, const msg::Context *c)
Add an extreme temperature group, with the measured value added with the given code,...
void add_cloud_data()
Add cloud data, as D02004 and a delayed replication of D02005.
void add_sensor_height(const msg::Context &c, const wreport::Var *sample_var=NULL)
Add B07032 sensor height, taking the value from the var attributes or the context,...
uint16_t Varcode
Information on how a value has been sampled or computed with regards to time.
Definition: types.h:687
Definition: shortcuts.h:12