X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=include%2Fyaz%2Fdata1.h;h=23dce1f2c16b7aadd790e5024dbb8f35494e0b20;hp=ff3c8d08087795bcd39fc9583a2a3301791355dc;hb=43801085d371c69455730182f72c4e53d8c8218f;hpb=d9ee01635f03f9095a66f71b73580560d48798e8 diff --git a/include/yaz/data1.h b/include/yaz/data1.h index ff3c8d0..23dce1f 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,23 @@ * OF THIS SOFTWARE. * * $Log: data1.h,v $ - * Revision 1.1 1999-11-30 13:47:11 adam + * 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. + * + * Revision 1.1 1999/11/30 13:47:11 adam * Improved installation. Moved header files to include/yaz. * * Revision 1.42 1999/10/21 12:06:28 adam @@ -232,9 +248,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) @@ -383,6 +400,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; @@ -429,6 +454,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 @@ -518,6 +546,7 @@ 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_node *data1_mk_node_type (data1_handle dh, NMEM m, int type); YAZ_EXPORT data1_absyn *data1_get_absyn(data1_handle dh, const char *name); 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); @@ -561,8 +590,11 @@ 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); -#ifdef __cplusplus -} -#endif + +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); + +YAZ_END_CDECL #endif