X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=include%2Fdata1.h;h=7f21853edff2703388610103db4f22ace9ad6de6;hb=0a159e0b47088801788dc3a90b79f6d5e964ea1f;hp=8feeb71ba575f167e7a47c41cff10c4238852ce9;hpb=a309d6ece06c0ab732d98c59f2718efaebd01ec6;p=yaz-moved-to-github.git diff --git a/include/data1.h b/include/data1.h index 8feeb71..7f21853 100644 --- a/include/data1.h +++ b/include/data1.h @@ -24,7 +24,52 @@ * OF THIS SOFTWARE. * * $Log: data1.h,v $ - * Revision 1.4 1995-11-13 09:27:29 quinn + * Revision 1.19 1996-10-11 11:57:16 quinn + * Smallish + * + * Revision 1.18 1996/10/07 15:29:16 quinn + * Added SOIF support + * + * Revision 1.17 1996/07/06 19:58:32 quinn + * System headerfiles gathered in yconfig + * + * Revision 1.16 1996/06/10 08:55:34 quinn + * Added Summary. Unfinished work + * + * Revision 1.15 1996/06/03 09:46:03 quinn + * Added OID type. + * + * Revision 1.14 1996/05/09 07:27:11 quinn + * Multiple local values supported. + * + * 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 @@ -83,12 +128,15 @@ #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 @@ -113,6 +161,12 @@ typedef enum data1_datatype DATA1K_null } data1_datatype; +typedef enum data1_structure +{ + DATA1S_word, + DATA1S_phrase +} data1_structure; + typedef struct data1_marctab { char *name; @@ -203,6 +257,13 @@ typedef struct data1_tagset struct data1_tagset *next; /* sibling */ } data1_tagset; +typedef struct data1_termlist +{ + data1_att *att; + data1_structure structure; + struct data1_termlist *next; +} data1_termlist; + /* * abstract syntax specification */ @@ -211,7 +272,8 @@ typedef struct data1_element { char *name; data1_tag *tag; - data1_att *att; + data1_termlist *termlists; + struct data1_element *parent; struct data1_element *children; struct data1_element *next; } data1_element; @@ -259,6 +321,7 @@ typedef struct data1_node int node_selected; int make_variantlist; int no_data_requested; + int get_bytes; } tag; struct @@ -268,11 +331,13 @@ typedef struct data1_node DATA1I_inctxt, /* text inclusion */ DATA1I_incbin, /* binary data inclusion */ DATA1I_text, /* text data */ - DATA1I_num /* numerical data */ + DATA1I_num, /* numerical data */ + DATA1I_oid /* object identifier */ } 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; @@ -288,30 +353,34 @@ 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); data1_element *data1_getelementbytagname(data1_absyn *abs, data1_element *parent, char *tagname); -Z_GenericRecord *data1_nodetogr(data1_node *n, int select, ODR o); +Z_GenericRecord *data1_nodetogr(data1_node *n, int select, ODR o, int *len); int data1_matchstr(char *s1, char *s2); 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); @@ -319,11 +388,15 @@ 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); +Z_BriefBib *data1_nodetosummary(data1_node *n, int select, ODR o); +char *data1_nodetosoif(data1_node *n, int select, int *len); #endif