libdballe  8.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 
6 namespace wreport {
7 struct Subset;
8 struct Bulletin;
9 struct Var;
10 }
11 
12 namespace dballe {
13 namespace impl {
14 namespace msg {
15 namespace wr {
16 
18 {
19 protected:
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 
31 public:
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 {
40 protected:
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 
59 public:
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 
125  void add_xtemp_group(wreport::Varcode code, const msg::Context* c);
126 
130  void add_prec_group(const msg::Context* c);
131 
135  void add_cloud_data();
136 
138  void add_wind_gust(const msg::Context* c);
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
Information on how a value has been sampled or computed with regards to time.
Definition: types.h:686
Definition: cmdline.h:18
Store an array of physical data all on the same level.
Definition: context.h:23
uint16_t Varcode
Definition: shortcuts.h:11
Storage for related physical data.
Definition: msg.h:130