X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=include%2Fdata1.h;h=e97e8d4218fb87f64f6d5117cbebe21eff4fbd80;hp=bd0747d559ad22c4cc4ef7980bf944dee846cd92;hb=de40d7c17747988ed4c53e51e45cbb790a3abd7b;hpb=2004bbd9b3bbce5eb8ecc49520255b3d0bf578b9 diff --git a/include/data1.h b/include/data1.h index bd0747d..e97e8d4 100644 --- a/include/data1.h +++ b/include/data1.h @@ -24,7 +24,40 @@ * OF THIS SOFTWARE. * * $Log: data1.h,v $ - * Revision 1.2 1995-11-01 13:54:35 quinn + * Revision 1.13 1996-02-20 16:32:48 quinn + * Created util file. + * + * Revision 1.12 1996/01/18 09:46:34 adam + * Changed prototype for reader function parsed to data1_read_record. + * + * Revision 1.11 1995/12/15 16:19:45 quinn + * Added formatted_text. + * + * Revision 1.10 1995/12/14 11:09:43 quinn + * Work on Explain + * + * Revision 1.9 1995/12/13 15:32:47 quinn + * Added sgml-output. + * + * Revision 1.8 1995/12/13 13:44:23 quinn + * Modified Data1-system to use nmem + * + * Revision 1.7 1995/12/12 16:37:05 quinn + * Added destroy element to data1_node. + * + * Revision 1.6 1995/12/11 15:22:12 quinn + * Added last_child field to the node. + * + * Revision 1.5 1995/12/05 14:26:40 quinn + * Added global lbuf to data1_node. + * + * Revision 1.4 1995/11/13 09:27:29 quinn + * Fiddling with the variant stuff. + * + * Revision 1.3 1995/11/01 16:34:52 quinn + * Making data1 look for tables in data1_tabpath + * + * Revision 1.2 1995/11/01 13:54:35 quinn * Minor adjustments * * Revision 1.1 1995/11/01 13:07:18 quinn @@ -77,12 +110,17 @@ #include +#include #include #include #include #include +#define data1_matchstr(s1, s2) yaz_matchstr(s1, s2) + +extern char *data1_tabpath; /* global path for tables */ + #define DATA1_MAX_SYMBOL 31 typedef struct data1_name @@ -229,10 +267,10 @@ typedef struct data1_node { enum { - DATA1N_root, + DATA1N_root, /* the root of a record (containing global data) */ DATA1N_tag, /* a tag */ - DATA1N_data, /* */ - DATA1N_variant, /* variant specification */ + DATA1N_data, /* some data under a leaf tag or variant */ + DATA1N_variant, /* variant specification (a triple, actually) */ DATA1N_indicator /* ISO2709 indicator */ } which; @@ -249,6 +287,8 @@ typedef struct data1_node char *tag; data1_element *element; int node_selected; + int make_variantlist; + int no_data_requested; } tag; struct @@ -260,9 +300,10 @@ typedef struct data1_node DATA1I_text, /* text data */ DATA1I_num /* numerical data */ } what; + int formatted_text; /* newlines are significant */ int len; char *data; /* filename or data */ -#define DATA1_LOCALDATA 15 +#define DATA1_LOCALDATA 40 char lbuf[DATA1_LOCALDATA]; /* small buffer for local data */ } data; @@ -278,18 +319,22 @@ typedef struct data1_node } indicator; } u; + void (*destroy)(struct data1_node *n); + char lbuf[DATA1_LOCALDATA]; /* small buffer for local data */ int line; int num_children; struct data1_node *next; struct data1_node *child; + struct data1_node *last_child; struct data1_node *parent; struct data1_node *root; } data1_node; data1_node *get_parent_tag(data1_node *n); data1_node *data1_read_node(char **buf, data1_node *parent, int *line, - data1_absyn *absyn); -data1_node *data1_read_record(int (*rf)(int, char *, size_t), int fd); + data1_absyn *absyn, NMEM m); +data1_node *data1_read_record(int (*rf)(void *, char *, size_t), + void *fh, NMEM m); data1_absyn *data1_read_absyn(char *file); data1_tag *data1_gettagbynum(data1_tagset *s, int type, int value); data1_tagset *data1_read_tagset(char *file); @@ -301,7 +346,7 @@ data1_tag *data1_gettagbyname(data1_tagset *s, char *name); void data1_free_tree(data1_node *t); char *data1_nodetobuf(data1_node *n, int select, int *len); data1_node *data1_insert_taggeddata(data1_node *root, data1_node *at, - char *tagname); + char *tagname, NMEM m); data1_datatype data1_maptype(char *t); data1_varset *data1_read_varset(char *file); data1_vartype *data1_getvartypebyct(data1_varset *set, char *class, char *type); @@ -309,11 +354,13 @@ Z_Espec1 *data1_read_espec1(char *file, ODR o); int data1_doespec1(data1_node *n, Z_Espec1 *e); data1_esetname *data1_getesetbyname(data1_absyn *a, char *name); data1_element *data1_getelementbyname(data1_absyn *absyn, char *name); -data1_node *data1_mk_node(void); +data1_node *data1_mk_node(NMEM m); data1_absyn *data1_get_absyn(char *name); data1_maptab *data1_read_maptab(char *file); -data1_node *data1_map_record(data1_node *n, data1_maptab *map); +data1_node *data1_map_record(data1_node *n, data1_maptab *map, NMEM m); data1_marctab *data1_read_marctab(char *file); char *data1_nodetomarc(data1_marctab *p, data1_node *n, int selected, int *len); +char *data1_nodetoidsgml(data1_node *n, int select, int *len); +Z_ExplainRecord *data1_nodetoexplain(data1_node *n, int select, ODR o); #endif