libdballe 9.13
matcher.h
1#ifndef DBALLE_CORE_MATCHER_H
2#define DBALLE_CORE_MATCHER_H
3
4#include <dballe/core/fwd.h>
5#include <dballe/types.h>
6#include <memory>
7
8namespace dballe {
9namespace matcher {
10
11enum Result {
12 MATCH_YES, // Item matches
13 MATCH_NO, // Item does not match
14 MATCH_NA // Match not applicable to this item
15};
16
18std::string result_format(Result res);
19
20} // namespace matcher
21
29struct Matched
30{
31 virtual ~Matched() {}
32
38 virtual matcher::Result match_var_id(int val) const;
39
45 virtual matcher::Result match_station_id(int val) const;
46
52 virtual matcher::Result match_station_wmo(int block,
53 int station = -1) const;
54
56 virtual matcher::Result match_datetime(const DatetimeRange& range) const;
57
64 virtual matcher::Result match_coords(const LatRange& latrange,
65 const LonRange& lonrange) const;
66
72 virtual matcher::Result match_rep_memo(const char* memo) const;
73
80 static matcher::Result int_in_range(int val, int min, int max);
81
85 static matcher::Result lon_in_range(int val, int min, int max);
86};
87
92struct Matcher
93{
94 virtual ~Matcher() {}
95
96 virtual matcher::Result match(const Matched& item) const = 0;
97 virtual void to_query(dballe::core::Query& query) const = 0;
98
99 static std::unique_ptr<Matcher> create(const dballe::Query& query);
100};
101
102} // namespace dballe
103
104#endif
Query used to filter DB-All.e data.
Definition query.h:17
Range of datetimes.
Definition types.h:297
Range of latitudes.
Definition types.h:470
Range of longitudes.
Definition types.h:553
Common interface for things that are matched.
Definition matcher.h:30
virtual matcher::Result match_station_wmo(int block, int station=-1) const
Match station WMO code.
virtual matcher::Result match_coords(const LatRange &latrange, const LonRange &lonrange) const
Match coordinates, with bounds in 1/100000 of degree.
virtual matcher::Result match_datetime(const DatetimeRange &range) const
Match datetime.
virtual matcher::Result match_var_id(int val) const
Match variable ID.
virtual matcher::Result match_rep_memo(const char *memo) const
Match rep_memo.
static matcher::Result lon_in_range(int val, int min, int max)
Match if val is contained inside the given longitude range.
static matcher::Result int_in_range(int val, int min, int max)
Match if min <= val <= max.
virtual matcher::Result match_station_id(int val) const
Match station ID.
Match DB-All.e objects using the same queries that can be made on DB-All.e databases.
Definition matcher.h:93
Standard dballe::Query implementation.
Definition core/query.h:36
Common base types used by most of DB-All.e code.