1 #ifndef DBALLE_MESSAGE_H
2 #define DBALLE_MESSAGE_H
4 #include <dballe/fwd.h>
34 virtual MessageType
get_type()
const = 0;
49 virtual std::unique_ptr<Message>
clone()
const = 0;
114 void set(
const Level& lev,
const Trange& tr, std::unique_ptr<wreport::Var> var);
126 void set(
const char* shortcut, std::unique_ptr<wreport::Var> var);
175 virtual std::unique_ptr<CursorData>
query_data(
const Query& query)
const = 0;
178 virtual void print(FILE* out)
const = 0;
189 virtual unsigned diff(
const Message& msg)
const = 0;
194 static std::unique_ptr<Message>
create(MessageType type);
201 virtual void set_impl(
const Level& lev,
const Trange& tr, std::unique_ptr<wreport::Var> var) = 0;
213 const char* format_message_type(MessageType type);
217 std::ostream& operator<<(std::ostream&,
const dballe::MessageType&);
virtual void print(FILE *out) const =0
Print all the contents of this message to an output stream.
virtual std::string get_report() const =0
Get the report for this message.
virtual const wreport::Var * get_impl(const Level &lev, const Trange &tr, wreport::Varcode code) const =0
Implementation of get(const Level&, const Trange&, wreport::Varcode)
A bulletin that has been decoded and physically interpreted.
Definition: message.h:28
virtual std::unique_ptr< CursorStation > query_stations(const Query &query) const =0
Return a Cursor to access the station information in the message.
virtual Datetime get_datetime() const =0
Get the reference Datetime for this message.
virtual MessageType get_type() const =0
Return the type of the data in the message.
virtual bool foreach_var(std::function< bool(const Level &, const Trange &, const wreport::Var &)>) const =0
Iterate the contents of the message.
virtual void set_impl(const Level &lev, const Trange &tr, std::unique_ptr< wreport::Var > var)=0
Implementation of set(const Level& const Trange&, std::unique_ptr<wreport::Var>)
void set(const Level &lev, const Trange &tr, wreport::Varcode code, const wreport::Var &var)
Add or replace a value.
virtual Coords get_coords() const =0
Get the reference coordinates for this message.
A station identifier, that can be any string (including the empty string) or a missing value.
Definition: types.h:747
Information on how a value has been sampled or computed with regards to time.
Definition: types.h:686
Vertical level or layer.
Definition: types.h:624
virtual std::unique_ptr< CursorData > query_data(const Query &query) const =0
Query the variables in the message.
virtual std::unique_ptr< CursorStationData > query_station_data(const Query &query) const =0
Query the station variables in the message.
Date and time.
Definition: types.h:164
const wreport::Var * get(const Level &lev, const Trange &tr, wreport::Varcode code) const
Get a variable given its code, level and time range information.
virtual Ident get_ident() const =0
Get the station identifier for this message.
virtual unsigned diff(const Message &msg) const =0
Compute the differences between two Messages.
virtual std::unique_ptr< Message > clone() const =0
Return a copy of this message.
Coordinates.
Definition: types.h:368
Query used to filter DB-All.e data.
Definition: query.h:14
static std::unique_ptr< Message > create(MessageType type)
Create a new empty message.