record.h

Go to the documentation of this file.
00001 /*
00002  * DB-ALLe - Archive for punctual meteorological data
00003  *
00004  * Copyright (C) 2005,2006  ARPA-SIM <urpsim@smr.arpa.emr.it>
00005  *
00006  * This program is free software; you can redistribute it and/or modify
00007  * it under the terms of the GNU General Public License as published by
00008  * the Free Software Foundation; either version 2 of the License.
00009  *
00010  * This program is distributed in the hope that it will be useful,
00011  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013  * GNU General Public License for more details.
00014  *
00015  * You should have received a copy of the GNU General Public License
00016  * along with this program; if not, write to the Free Software
00017  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
00018  *
00019  * Author: Enrico Zini <enrico@enricozini.com>
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 /* TODO: should be deleted after checking if dbavm uses them */
00095 #if 0
00096 /* Shortcuts for commonly used variables */
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 /* vim:set ts=4 sw=4: */
00856 #endif

Generated on Fri Jun 22 14:21:32 2007 for libdballe-msg by  doxygen 1.5.2