X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=include%2Fyaz%2Fdata1.h;h=37b7c5fbad75e84d93042e55ff864c5d215c02eb;hb=ffe5c37f0c9f55a685ac3559f1cad44baae399f4;hp=1831b5b1eb887d6c861e06751f7fc1187fb7ac70;hpb=5ebe07935fedc4ce6b2a3bb0aa29425674ce7d08;p=yaz-moved-to-github.git diff --git a/include/yaz/data1.h b/include/yaz/data1.h index 1831b5b..37b7c5f 100644 --- a/include/yaz/data1.h +++ b/include/yaz/data1.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995-1998, Index Data. + * Copyright (c) 1995-2000, 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, @@ -24,7 +24,27 @@ * OF THIS SOFTWARE. * * $Log: data1.h,v $ - * Revision 1.2 1999-12-21 14:16:19 ian + * Revision 1.8 2002-05-03 13:48:27 adam + * data1 cleanup + * + * Revision 1.7 2002/04/04 20:49:46 adam + * New functions yaz_is_abspath, yaz_path_fopen_base + * + * Revision 1.6 2000/12/05 12:21:45 adam + * Added termlist source for data1 system. + * + * Revision 1.5 2000/11/29 14:22:47 adam + * Implemented XML/SGML attributes for data1 so that d1_read reads them + * and d1_write generates proper attributes for XML/SGML records. Added + * register locking for threaded version. + * + * Revision 1.4 2000/02/28 11:20:06 adam + * Using autoconf. New definitions: YAZ_BEGIN_CDECL/YAZ_END_CDECL. + * + * Revision 1.3 2000/01/04 17:46:17 ian + * Added function to count occurences of a tag spec in a data1 tree. + * + * Revision 1.2 1999/12/21 14:16:19 ian * Changed retrieval module to allow data1 trees with no associated absyn. * Also added a simple interface for extracting values from data1 trees using * a string based tagpath. @@ -237,9 +257,10 @@ #define d1_isspace(c) strchr(" \r\n\t\f", c) #define d1_isdigit(c) ((c) <= '9' && (c) >= '0') -#ifdef __cplusplus -extern "C" { -#endif + +#define DATA1_USING_XATTR 1 + +YAZ_BEGIN_CDECL #define data1_matchstr(s1, s2) yaz_matchstr(s1, s2) @@ -365,6 +386,7 @@ typedef struct data1_termlist { data1_att *att; char *structure; + char *source; struct data1_termlist *next; } data1_termlist; @@ -388,6 +410,14 @@ typedef struct data1_sub_elements { data1_element *elements; } data1_sub_elements; +#if DATA1_USING_XATTR +typedef struct data1_xattr { + char *name; + char *value; + struct data1_xattr *next; +} data1_xattr; +#endif + typedef struct data1_absyn { char *name; @@ -434,6 +464,9 @@ typedef struct data1_node int get_bytes; unsigned node_selected : 1; unsigned make_variantlist : 1; +#if DATA1_USING_XATTR + data1_xattr *attributes; +#endif } tag; struct @@ -502,13 +535,13 @@ YAZ_EXPORT data1_tag *data1_gettagbyname(data1_handle dh, data1_tagset *s, YAZ_EXPORT void data1_free_tree(data1_handle dh, data1_node *t); YAZ_EXPORT char *data1_nodetobuf(data1_handle dh, data1_node *n, int select, int *len); -YAZ_EXPORT data1_node *data1_insert_taggeddata(data1_handle dh, - data1_node *root, - data1_node *at, - const char *tagname, NMEM m); -YAZ_EXPORT data1_node *data1_add_taggeddata(data1_handle dh, data1_node *root, - data1_node *at, - const char *tagname, NMEM m); +YAZ_EXPORT data1_node *data1_mk_tag_data_wd(data1_handle dh, + data1_node *root, + data1_node *at, + const char *tagname, NMEM m); +YAZ_EXPORT data1_node *data1_mk_tag_data(data1_handle dh, data1_node *root, + data1_node *at, + const char *tagname, NMEM m); YAZ_EXPORT data1_datatype data1_maptype(data1_handle dh, char *t); YAZ_EXPORT data1_varset *data1_read_varset(data1_handle dh, const char *file); YAZ_EXPORT data1_vartype *data1_getvartypebyct(data1_handle dh, @@ -522,8 +555,46 @@ YAZ_EXPORT data1_esetname *data1_getesetbyname(data1_handle dh, YAZ_EXPORT data1_element *data1_getelementbyname(data1_handle dh, data1_absyn *absyn, const char *name); -YAZ_EXPORT data1_node *data1_mk_node(data1_handle dh, NMEM m); -YAZ_EXPORT data1_absyn *data1_get_absyn(data1_handle dh, const char *name); +YAZ_EXPORT data1_node *data1_mk_node(data1_handle dh, NMEM m, + int type, data1_node *parent); + +YAZ_EXPORT data1_node *data1_mk_tag (data1_handle dh, NMEM nmem, + const char *tag, data1_node *at); +YAZ_EXPORT data1_node *data1_mk_tag_n (data1_handle dh, NMEM nmem, + const char *tag, size_t len, + data1_node *at); + +YAZ_EXPORT data1_node *data1_mk_text_n (data1_handle dh, NMEM mem, + const char *buf, size_t len, + data1_node *parent); +YAZ_EXPORT data1_node *data1_mk_text (data1_handle dh, NMEM mem, + const char *buf, data1_node *parent); + +YAZ_EXPORT data1_node *data1_mk_root (data1_handle dh, NMEM nmem, + const char *name); + +YAZ_EXPORT data1_node *data1_mk_tag_data_int (data1_handle dh, data1_node *at, + const char *tag, int num, + NMEM nmem); +YAZ_EXPORT data1_node *data1_mk_tag_data_oid (data1_handle dh, data1_node *at, + const char *tag, Odr_oid *oid, + NMEM nmem); +YAZ_EXPORT data1_node *data1_mk_tag_data_text (data1_handle dh, data1_node *at, + const char *tag, + const char *str, + NMEM nmem); +YAZ_EXPORT data1_node *data1_mk_tag_data_text_uni (data1_handle dh, + data1_node *at, + const char *tag, + const char *str, + NMEM nmem); + +YAZ_EXPORT data1_absyn *data1_get_absyn (data1_handle dh, const char *name); + +YAZ_EXPORT data1_node *data1_search_tag (data1_handle dh, data1_node *n, + const char *tag); +YAZ_EXPORT data1_node *data1_mk_tag_uni (data1_handle dh, NMEM nmem, + const char *tag, data1_node *at); YAZ_EXPORT data1_attset *data1_get_attset (data1_handle dh, const char *name); YAZ_EXPORT data1_maptab *data1_read_maptab(data1_handle dh, const char *file); YAZ_EXPORT data1_node *data1_map_record(data1_handle dh, data1_node *n, @@ -543,7 +614,9 @@ YAZ_EXPORT Z_BriefBib *data1_nodetosummary(data1_handle dh, YAZ_EXPORT char *data1_nodetosoif(data1_handle dh, data1_node *n, int select, int *len); YAZ_EXPORT void data1_set_tabpath(data1_handle dh, const char *path); +YAZ_EXPORT void data1_set_tabroot (data1_handle dp, const char *p); YAZ_EXPORT const char *data1_get_tabpath(data1_handle dh); +YAZ_EXPORT const char *data1_get_tabroot(data1_handle dh); YAZ_EXPORT WRBUF data1_get_wrbuf (data1_handle dp); YAZ_EXPORT char **data1_get_read_buf (data1_handle dp, int **lenp); @@ -554,6 +627,8 @@ YAZ_EXPORT NMEM data1_nmem_get (data1_handle dh); YAZ_EXPORT void data1_pr_tree (data1_handle dh, data1_node *n, FILE *out); YAZ_EXPORT char *data1_insert_string (data1_handle dh, data1_node *res, NMEM m, const char *str); +YAZ_EXPORT char *data1_insert_string_n (data1_handle dh, data1_node *res, + NMEM m, const char *str, size_t len); YAZ_EXPORT data1_node *data1_read_sgml (data1_handle dh, NMEM m, const char *buf); YAZ_EXPORT void data1_absyn_trav (data1_handle dh, void *handle, @@ -562,17 +637,13 @@ YAZ_EXPORT void data1_absyn_trav (data1_handle dh, void *handle, YAZ_EXPORT data1_attset *data1_attset_search_id (data1_handle dh, int id); -YAZ_EXPORT data1_node -*data1_add_insert_taggeddata(data1_handle dh, data1_node *root, - data1_node *at, const char *tagname, NMEM m, - int first_flag, int local_allowed); - YAZ_EXPORT char *data1_getNodeValue(data1_node* node, char* pTagPath); - YAZ_EXPORT data1_node *data1_LookupNode(data1_node* node, char* pTagPath); +YAZ_EXPORT int data1_CountOccurences(data1_node* node, char* pTagPath); -#ifdef __cplusplus -} -#endif +YAZ_EXPORT FILE *data1_path_fopen (data1_handle dh, const char *file, + const char *mode); + +YAZ_END_CDECL #endif