31 #include <dballe/core/matcher.h>
63 DBA_KEY_MONTHMAX = 22,
64 DBA_KEY_MONTHMIN = 23,
73 DBA_KEY_LEVELTYPE1 = 32,
75 DBA_KEY_LEVELTYPE2 = 34,
77 DBA_KEY_PINDICATOR = 36,
82 DBA_KEY_CONTEXT_ID = 41,
84 DBA_KEY_ANA_FILTER = 43,
85 DBA_KEY_DATA_FILTER = 44,
86 DBA_KEY_ATTR_FILTER = 45,
88 DBA_KEY_VAR_RELATED = 47,
92 typedef enum _dba_keyword dba_keyword;
104 wreport::Var* keydata[DBA_KEY_COUNT];
107 std::vector<wreport::Var*> m_vars;
110 int find_item(wreport::Varcode code)
const throw ();
113 wreport::Var&
get_item(wreport::Varcode code);
116 const wreport::Var&
get_item(wreport::Varcode code)
const;
128 bool operator==(
const Record& rec)
const;
129 bool operator!=(
const Record& rec)
const {
return !operator==(rec); }
174 const wreport::Var*
key_peek(dba_keyword parameter)
const throw ();
183 const wreport::Var*
var_peek(wreport::Varcode code)
const throw ();
191 const wreport::Var*
peek(
const char* name)
const;
194 const wreport::Var*
peek(dba_keyword parameter)
const throw () {
return key_peek(parameter); }
197 const wreport::Var*
peek(wreport::Varcode code)
const throw () {
return var_peek(code); }
225 const char*
peek_value(
const char* name)
const;
236 const wreport::Var&
key(dba_keyword parameter)
const;
241 const wreport::Var&
var(wreport::Varcode code)
const;
246 wreport::Var&
key(dba_keyword parameter);
251 wreport::Var&
var(wreport::Varcode code);
255 const wreport::Var&
get(dba_keyword parameter)
const {
return key(parameter); }
256 const wreport::Var&
get(wreport::Varcode code)
const {
return var(code); }
257 const wreport::Var&
get(
const char* name)
const;
258 wreport::Var&
get(dba_keyword parameter) {
return key(parameter); }
259 wreport::Var&
get(wreport::Varcode code) {
return var(code); }
260 wreport::Var&
get(
const char* name);
261 template<
typename K,
typename T>
262 T
get(K name, T default_value)
const
264 if (
const wreport::Var* v =
peek(name))
265 return v->enq(default_value);
267 return default_value;
269 const wreport::Var&
operator[](dba_keyword parameter)
const {
return key(parameter); }
270 const wreport::Var&
operator[](wreport::Varcode code)
const {
return var(code); }
271 const wreport::Var&
operator[](
const char* name)
const {
return get(name); }
274 wreport::Var&
operator[](
const char* name) {
return get(name); }
275 template<
typename P,
typename V>
276 void set(
const P& field,
const V& val) {
get(field).
set(val); }
277 void set(
const wreport::Var&
var) {
get(
var.code()).
set(
var); }
280 void unset(
const char* name);
291 const std::vector<wreport::Var*>&
vars()
const;
359 void print(FILE* out)
const;
375 static wreport::Varinfo
keyword_info(dba_keyword keyword);
414 void dba_record_diff(dba_record rec1, dba_record rec2,
int* diffs, FILE* out);
427 virtual matcher::Result
match_date(
const int* min,
const int* max)
const;
428 virtual matcher::Result
match_coords(
int latmin,
int latmax,
int lonmin,
int lonmax)
const;