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_LEVELTYPE1 = 32,
00075 DBA_KEY_L1 = 33,
00076 DBA_KEY_LEVELTYPE2 = 34,
00077 DBA_KEY_L2 = 35,
00078 DBA_KEY_PINDICATOR = 36,
00079 DBA_KEY_P1 = 37,
00080 DBA_KEY_P2 = 38,
00081 DBA_KEY_VAR = 39,
00082 DBA_KEY_VARLIST = 40,
00083 DBA_KEY_CONTEXT_ID = 41,
00084 DBA_KEY_QUERY = 42,
00085 DBA_KEY_ANA_FILTER = 43,
00086 DBA_KEY_DATA_FILTER = 44,
00087 DBA_KEY_ATTR_FILTER = 45,
00088 DBA_KEY_LIMIT = 46,
00089 DBA_KEY_VAR_RELATED = 47,
00090 DBA_KEY_COUNT = 48,
00091 };
00093 typedef enum _dba_keyword dba_keyword;
00094
00095
00096 #if 0
00097
00098 #define DBA_VAR_BLOCK DBA_VAR(0, 1, 1)
00099 #define DBA_VAR_STATION DBA_VAR(0, 1, 2)
00100 #define DBA_VAR_NAME DBA_VAR(0, 1, 19)
00101 #define DBA_VAR_HEIGHT DBA_VAR(0, 7, 1)
00102 #define DBA_VAR_HEIGHTBARO DBA_VAR(0, 7, 31)
00103 #define DBA_VAR_DATA_ID DBA_VAR(0, 33, 195)
00104 #endif
00105
00106 struct _dba_record;
00107 struct _dba_item;
00108
00118 typedef struct _dba_record* dba_record;
00119
00126 typedef struct _dba_item* dba_record_cursor;
00127
00136 const char* dba_record_keyword_name(dba_keyword keyword);
00137
00148 dba_err dba_record_keyword_info(dba_keyword keyword, dba_varinfo* info);
00149
00159 dba_keyword dba_record_keyword_byname(const char* tag);
00160
00172 dba_keyword dba_record_keyword_byname_len(const char* tag, int len);
00173
00183 dba_err dba_record_create(dba_record* rec);
00184
00191 void dba_record_delete(dba_record rec);
00192
00199 void dba_record_clear(dba_record rec);
00200
00207 void dba_record_clear_vars(dba_record rec);
00208
00220 dba_err dba_record_copy(dba_record dest, dba_record source);
00221
00235 dba_err dba_record_add(dba_record dest, dba_record source);
00236
00252 dba_err dba_record_difference(dba_record dest, dba_record source1, dba_record source2);
00253
00264 int dba_record_equals(dba_record rec1, dba_record rec2);
00265
00277 dba_var dba_record_key_peek(dba_record rec, dba_keyword parameter);
00278
00290 dba_var dba_record_var_peek(dba_record rec, dba_varcode code);
00291
00308 const char* dba_record_key_peek_value(dba_record rec, dba_keyword parameter);
00309
00324 const char* dba_record_var_peek_value(dba_record rec, dba_varcode code);
00325
00338 dba_err dba_record_contains(dba_record rec, const char* name, int* found);
00339
00352 dba_err dba_record_contains_key(dba_record rec, dba_keyword parameter, int* found);
00353
00366 dba_err dba_record_contains_var(dba_record rec, dba_varcode code, int* found);
00367
00381 dba_err dba_record_enq(dba_record rec, const char* name, dba_var* var);
00382
00396 dba_err dba_record_key_enq(dba_record rec, dba_keyword parameter, dba_var* var);
00397
00411 dba_err dba_record_var_enq(dba_record rec, dba_varcode code, dba_var* var);
00412
00429 dba_err dba_record_enqi(dba_record rec, const char* name, int* value, int* found);
00430
00447 dba_err dba_record_key_enqi(dba_record rec, dba_keyword parameter, int* value, int* found);
00448
00465 dba_err dba_record_var_enqi(dba_record rec, dba_varcode code, int* value, int* found);
00466
00483 dba_err dba_record_enqd(dba_record rec, const char* name, double* value, int* found);
00484
00501 dba_err dba_record_key_enqd(dba_record rec, dba_keyword parameter, double* value, int* found);
00502
00519 dba_err dba_record_var_enqd(dba_record rec, dba_varcode code, double* value, int* found);
00520
00537 dba_err dba_record_enqc(dba_record rec, const char* name, const char** value);
00538
00555 dba_err dba_record_key_enqc(dba_record rec, dba_keyword parameter, const char** value);
00556
00573 dba_err dba_record_var_enqc(dba_record rec, dba_varcode code, const char** value);
00574
00592 dba_err dba_record_key_set(dba_record rec, dba_keyword parameter, dba_var var);
00593
00609 dba_err dba_record_var_set(dba_record rec, dba_varcode code, dba_var var);
00610
00623 dba_err dba_record_var_set_direct(dba_record rec, dba_var var);
00624
00633 dba_err dba_record_set_ana_context(dba_record rec);
00634
00649 dba_err dba_record_key_seti(dba_record rec, dba_keyword parameter, int value);
00650
00665 dba_err dba_record_var_seti(dba_record rec, dba_varcode code, int value);
00666
00681 dba_err dba_record_key_setd(dba_record rec, dba_keyword parameter, double value);
00682
00697 dba_err dba_record_var_setd(dba_record rec, dba_varcode code, double value);
00698
00712 dba_err dba_record_key_setc(dba_record rec, dba_keyword parameter, const char* value);
00713
00727 dba_err dba_record_var_setc(dba_record rec, dba_varcode code, const char* value);
00728
00742 dba_err dba_record_set_from_string(dba_record rec, const char* str);
00743
00754 dba_err dba_record_key_unset(dba_record rec, dba_keyword parameter);
00755
00766 dba_err dba_record_var_unset(dba_record rec, dba_varcode code);
00767
00776 void dba_record_print(dba_record rec, FILE* out);
00777
00791 void dba_record_diff(dba_record rec1, dba_record rec2, int* diffs, FILE* out);
00792
00803 dba_record_cursor dba_record_iterate_first(dba_record rec);
00804
00818 dba_record_cursor dba_record_iterate_next(dba_record rec, dba_record_cursor cur);
00819
00829 dba_var dba_record_cursor_variable(dba_record_cursor cur);
00830
00850 dba_err dba_record_parse_date_extremes(dba_record rec, int* minvalues, int* maxvalues);
00851
00852 #ifdef __cplusplus
00853 }
00854 #endif
00855
00856
00857 #endif