/*
- * 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,
* 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.
#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)
{
data1_att *att;
char *structure;
+ char *source;
struct data1_termlist *next;
} data1_termlist;
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;
int get_bytes;
unsigned node_selected : 1;
unsigned make_variantlist : 1;
+#if DATA1_USING_XATTR
+ data1_xattr *attributes;
+#endif
} tag;
struct
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,
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,
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);
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,
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