X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=include%2Fdata1.h;h=e97e8d4218fb87f64f6d5117cbebe21eff4fbd80;hb=a4b3ddd8ad754b42454c7a18fdb3ef61f7bd580d;hp=65cc658dc50f26deff2eeb2a02294237590571e1;hpb=1237873423722c1c5cffad7baa61281902c29c53;p=yaz-moved-to-github.git diff --git a/include/data1.h b/include/data1.h index 65cc658..e97e8d4 100644 --- a/include/data1.h +++ b/include/data1.h @@ -1,10 +1,66 @@ /* - * Copyright (C) 1994, Index Data I/S - * All rights reserved. - * Sebastian Hammer, Adam Dickmeiss + * Copyright (c) 1995, Index Data. + * + * Permission to use, copy, modify, distribute, and sell this software and + * its documentation, in whole or in part, for any purpose, is hereby granted, + * provided that: + * + * 1. This copyright and permission notice appear in all copies of the + * software and its documentation. Notices of copyright or attribution + * which appear at the beginning of any file must remain unchanged. + * + * 2. The names of Index Data or the individual authors may not be used to + * endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND, + * EXPRESS, IMPLIED, OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY + * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + * IN NO EVENT SHALL INDEX DATA BE LIABLE FOR ANY SPECIAL, INCIDENTAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR + * NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF + * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE + * OF THIS SOFTWARE. * * $Log: data1.h,v $ - * Revision 1.1 1995-11-01 13:07:18 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 * Data1 module now lives in YAZ. * * Revision 1.13 1995/10/25 16:00:49 quinn @@ -54,11 +110,16 @@ #include +#include #include #include #include -#include "d1_map.h" +#include + +#define data1_matchstr(s1, s2) yaz_matchstr(s1, s2) + +extern char *data1_tabpath; /* global path for tables */ #define DATA1_MAX_SYMBOL 31 @@ -206,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; @@ -226,6 +287,8 @@ typedef struct data1_node char *tag; data1_element *element; int node_selected; + int make_variantlist; + int no_data_requested; } tag; struct @@ -237,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; @@ -255,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); @@ -278,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); @@ -286,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