00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef DBA_RECORD_H
00023 #define DBA_RECORD_H
00024
00025 #ifdef __cplusplus
00026 extern "C" {
00027 #endif
00028
00034 #include <dballe/core/error.h>
00035 #include <dballe/core/var.h>
00036
00040 enum _dba_keyword {
00041 DBA_KEY_ERROR = -1,
00042 DBA_KEY_PRIORITY = 0,
00043 DBA_KEY_PRIOMAX = 1,
00044 DBA_KEY_PRIOMIN = 2,
00045 DBA_KEY_REP_COD = 3,
00046 DBA_KEY_REP_MEMO = 4,
00047 DBA_KEY_ANA_ID = 5,
00048 DBA_KEY_MOBILE = 6,
00049 DBA_KEY_IDENT = 7,
00050 DBA_KEY_LAT = 8,
00051 DBA_KEY_LON = 9,
00052 DBA_KEY_LATMAX = 10,
00053 DBA_KEY_LATMIN = 11,
00054 DBA_KEY_LONMAX = 12,
00055 DBA_KEY_LONMIN = 13,
00056 DBA_KEY_YEAR = 14,
00057 DBA_KEY_MONTH = 15,
00058 DBA_KEY_DAY = 16,
00059 DBA_KEY_HOUR = 17,
00060 DBA_KEY_MIN = 18,
00061 DBA_KEY_SEC = 19,
00062 DBA_KEY_YEARMAX = 20,
00063 DBA_KEY_YEARMIN = 21,
00064 DBA_KEY_MONTHMAX = 22,
00065 DBA_KEY_MONTHMIN = 23,
00066 DBA_KEY_DAYMAX = 24,
00067 DBA_KEY_DAYMIN = 25,
00068 DBA_KEY_HOURMAX = 26,
00069 DBA_KEY_HOURMIN = 27,
00070 DBA_KEY_MINUMAX = 28,
00071 DBA_KEY_MINUMIN = 29,
00072 DBA_KEY_SECMAX = 30,
00073 DBA_KEY_SECMIN = 31,
00074 DBA_KEY_LEVELTYPE = 32,
00075 DBA_KEY_L1 = 33,
00076 DBA_KEY_L2 = 34,
00077 DBA_KEY_PINDICATOR = 35,
00078 DBA_KEY_P1 = 36,
00079 DBA_KEY_P2 = 37,
00080 DBA_KEY_VAR = 38,
00081 DBA_KEY_VARLIST = 39,
00082 DBA_KEY_CONTEXT_ID = 40,
00083 DBA_KEY_QUERY = 41,
00084 DBA_KEY_ANA_FILTER = 42,
00085 DBA_KEY_DATA_FILTER = 43,
00086 DBA_KEY_ATTR_FILTER = 44,
00087 DBA_KEY_LIMIT = 45,
00088 DBA_KEY_VAR_RELATED = 46,
00089 DBA_KEY_COUNT = 47,
00090 };
00092 typedef enum _dba_keyword dba_keyword;
00093
00094
00095 #if 0
00096
00097 #define DBA_VAR_BLOCK DBA_VAR(0, 1, 1)
00098 #define DBA_VAR_STATION DBA_VAR(0, 1, 2)
00099 #define DBA_VAR_NAME DBA_VAR(0, 1, 19)
00100 #define DBA_VAR_HEIGHT DBA_VAR(0, 7, 1)
00101 #define DBA_VAR_HEIGHTBARO DBA_VAR(0, 7, 31)
00102 #define DBA_VAR_DATA_ID DBA_VAR(0, 33, 195)
00103 #endif
00104
00105 struct _dba_record;
00106 struct _dba_item;
00107
00117 typedef struct _dba_record* dba_record;
00118
00125 typedef struct _dba_item* dba_record_cursor;
00126
00135 const char* dba_record_keyword_name(dba_keyword keyword);
00136
00147 dba_err dba_record_keyword_info(dba_keyword keyword, dba_varinfo* info);
00148
00158 dba_keyword dba_record_keyword_byname(const char* tag);
00159
00171 dba_keyword dba_record_keyword_byname_len(const char* tag, int len);
00172
00182 dba_err dba_record_create(dba_record* rec);
00183
00190 void dba_record_delete(dba_record rec);
00191
00198 void dba_record_clear(dba_record rec);
00199
00206 void dba_record_clear_vars(dba_record rec);
00207
00219 dba_err dba_record_copy(dba_record dest, dba_record source);
00220
00234 dba_err dba_record_add(dba_record dest, dba_record source);
00235
00251 dba_err dba_record_difference(dba_record dest, dba_record source1, dba_record source2);
00252
00263 int dba_record_equals(dba_record rec1, dba_record rec2);
00264
00276 dba_var dba_record_key_peek(dba_record rec, dba_keyword parameter);
00277
00289 dba_var dba_record_var_peek(dba_record rec, dba_varcode code);
00290
00307 const char* dba_record_key_peek_value(dba_record rec, dba_keyword parameter);
00308
00323 const char* dba_record_var_peek_value(dba_record rec, dba_varcode code);
00324
00337 dba_err dba_record_contains(dba_record rec, const char* name, int* found);
00338
00351 dba_err dba_record_contains_key(dba_record rec, dba_keyword parameter, int* found);
00352
00365 dba_err dba_record_contains_var(dba_record rec, dba_varcode code, int* found);
00366
00380 dba_err dba_record_enq(dba_record rec, const char* name, dba_var* var);
00381
00395 dba_err dba_record_key_enq(dba_record rec, dba_keyword parameter, dba_var* var);
00396
00410 dba_err dba_record_var_enq(dba_record rec, dba_varcode code, dba_var* var);
00411
00428 dba_err dba_record_enqi(dba_record rec, const char* name, int* value, int* found);
00429
00446 dba_err dba_record_key_enqi(dba_record rec, dba_keyword parameter, int* value, int* found);
00447
00464 dba_err dba_record_var_enqi(dba_record rec, dba_varcode code, int* value, int* found);
00465
00482 dba_err dba_record_enqd(dba_record rec, const char* name, double* value, int* found);
00483
00500 dba_err dba_record_key_enqd(dba_record rec, dba_keyword parameter, double* value, int* found);
00501
00518 dba_err dba_record_var_enqd(dba_record rec, dba_varcode code, double* value, int* found);
00519
00536 dba_err dba_record_enqc(dba_record rec, const char* name, const char** value);
00537
00554 dba_err dba_record_key_enqc(dba_record rec, dba_keyword parameter, const char** value);
00555
00572 dba_err dba_record_var_enqc(dba_record rec, dba_varcode code, const char** value);
00573
00591 dba_err dba_record_key_set(dba_record rec, dba_keyword parameter, dba_var var);
00592
00608 dba_err dba_record_var_set(dba_record rec, dba_varcode code, dba_var var);
00609
00622 dba_err dba_record_var_set_direct(dba_record rec, dba_var var);
00623
00632 dba_err dba_record_set_ana_context(dba_record rec);
00633
00648 dba_err dba_record_key_seti(dba_record rec, dba_keyword parameter, int value);
00649
00664 dba_err dba_record_var_seti(dba_record rec, dba_varcode code, int value);
00665
00680 dba_err dba_record_key_setd(dba_record rec, dba_keyword parameter, double value);
00681
00696 dba_err dba_record_var_setd(dba_record rec, dba_varcode code, double value);
00697
00711 dba_err dba_record_key_setc(dba_record rec, dba_keyword parameter, const char* value);
00712
00726 dba_err dba_record_var_setc(dba_record rec, dba_varcode code, const char* value);
00727
00741 dba_err dba_record_set_from_string(dba_record rec, const char* str);
00742
00753 dba_err dba_record_key_unset(dba_record rec, dba_keyword parameter);
00754
00765 dba_err dba_record_var_unset(dba_record rec, dba_varcode code);
00766
00775 void dba_record_print(dba_record rec, FILE* out);
00776
00790 void dba_record_diff(dba_record rec1, dba_record rec2, int* diffs, FILE* out);
00791
00802 dba_record_cursor dba_record_iterate_first(dba_record rec);
00803
00817 dba_record_cursor dba_record_iterate_next(dba_record rec, dba_record_cursor cur);
00818
00828 dba_var dba_record_cursor_variable(dba_record_cursor cur);
00829
00849 dba_err dba_record_parse_date_extremes(dba_record rec, int* minvalues, int* maxvalues);
00850
00851 #ifdef __cplusplus
00852 }
00853 #endif
00854
00855
00856 #endif