X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=include%2Fyaz%2Fdata1.h;h=0db650f5dbda36382fac3883f33055d1d36fff0b;hb=3eef743c121a36edcf66e4e3651d5ceb8b4e0156;hp=769b512ea626e70e4d416552f016ddad8aa965c9;hpb=848e461264a05c14f4ced38f2df25c2232779fdd;p=yaz-moved-to-github.git diff --git a/include/yaz/data1.h b/include/yaz/data1.h index 769b512..0db650f 100644 --- a/include/yaz/data1.h +++ b/include/yaz/data1.h @@ -23,7 +23,7 @@ * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. * - * $Id: data1.h,v 1.9 2002-05-07 11:02:56 adam Exp $ + * $Id: data1.h,v 1.18 2002-10-08 20:14:44 adam Exp $ */ #ifndef DATA1_H @@ -43,8 +43,6 @@ #define d1_isspace(c) strchr(" \r\n\t\f", c) #define d1_isdigit(c) ((c) <= '9' && (c) >= '0') -#define DATA1_USING_XATTR 1 - YAZ_BEGIN_CDECL #define data1_matchstr(s1, s2) yaz_matchstr(s1, s2) @@ -195,13 +193,12 @@ 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; + unsigned short what; /* DATA1I_text, .. see data1_node.u.data */ } data1_xattr; -#endif typedef struct data1_absyn { @@ -215,6 +212,8 @@ typedef struct data1_absyn data1_marctab *marc; data1_sub_elements *sub_elements; data1_element *main_elements; + char *encoding; + int enable_xpath_indexing; } data1_absyn; /* @@ -231,8 +230,11 @@ typedef struct data1_node #define DATA1N_data 3 /* variant specification (a triple, actually) */ #define DATA1N_variant 4 + /* comment (same as data) */ +#define DATA1N_comment 5 + /* preprocessing instruction */ +#define DATA1N_preprocess 6 int which; - union { struct @@ -249,25 +251,25 @@ 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 { char *data; /* filename or data */ int len; - /* text inclusion */ + /* text inclusion */ #define DATA1I_inctxt 1 - /* binary data inclusion */ + /* binary data inclusion */ #define DATA1I_incbin 2 /* text data */ #define DATA1I_text 3 - /* numerical data */ + /* numerical data */ #define DATA1I_num 4 - /* object identifier */ -#define DATA1I_oid 5 + /* object identifier */ +#define DATA1I_oid 5 + /* XML text */ +#define DATA1I_xmltext 6 unsigned what:7; unsigned formatted_text : 1; /* newlines are significant */ } data; @@ -277,6 +279,12 @@ typedef struct data1_node data1_vartype *type; char *value; } variant; + + struct + { + char *target; + data1_xattr *attributes; + } preprocess; } u; void (*destroy)(struct data1_node *n); @@ -290,6 +298,10 @@ typedef struct data1_node } data1_node; YAZ_EXPORT data1_handle data1_create (void); + +#define DATA1_FLAG_XML 1 +YAZ_EXPORT data1_handle data1_createx (int flags); + YAZ_EXPORT void data1_destroy(data1_handle dh); YAZ_EXPORT data1_node *get_parent_tag(data1_handle dh, data1_node *n); YAZ_EXPORT data1_node *data1_read_node(data1_handle dh, const char **buf, @@ -300,7 +312,8 @@ YAZ_EXPORT data1_node *data1_read_nodex (data1_handle dh, NMEM m, YAZ_EXPORT data1_node *data1_read_record(data1_handle dh, int (*rf)(void *, char *, size_t), void *fh, NMEM m); -YAZ_EXPORT data1_absyn *data1_read_absyn(data1_handle dh, const char *file); +YAZ_EXPORT data1_absyn *data1_read_absyn(data1_handle dh, const char *file, + int file_must_exist); YAZ_EXPORT data1_tag *data1_gettagbynum(data1_handle dh, data1_tagset *s, int type, int value); @@ -342,19 +355,45 @@ YAZ_EXPORT data1_node *data1_mk_node2(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); + const char *tag, const char **attr, + data1_node *at); YAZ_EXPORT data1_node *data1_mk_tag_n (data1_handle dh, NMEM nmem, const char *tag, size_t len, + const char **attr, data1_node *at); +YAZ_EXPORT void data1_tag_add_attr (data1_handle dh, NMEM nmem, + data1_node *res, const char **attr); 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_nf (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_comment_n (data1_handle dh, NMEM mem, + const char *buf, size_t len, + data1_node *parent); + +YAZ_EXPORT data1_node *data1_mk_comment (data1_handle dh, NMEM mem, + const char *buf, data1_node *parent); + +YAZ_EXPORT data1_node *data1_mk_preprocess_n (data1_handle dh, NMEM nmem, + const char *target, size_t len, + const char **attr, + data1_node *at); + +YAZ_EXPORT data1_node *data1_mk_preprocess (data1_handle dh, NMEM nmem, + const char *target, + const char **attr, + data1_node *at); + YAZ_EXPORT data1_node *data1_mk_root (data1_handle dh, NMEM nmem, const char *name); +YAZ_EXPORT void data1_set_root(data1_handle dh, data1_node *res, + 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, @@ -414,6 +453,9 @@ 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 data1_node *data1_read_xml (data1_handle dh, + int (*rf)(void *, char *, size_t), + void *fh, NMEM m); YAZ_EXPORT void data1_absyn_trav (data1_handle dh, void *handle, void (*fh)(data1_handle dh, void *h, data1_absyn *a)); @@ -440,6 +482,16 @@ YAZ_EXPORT data1_node *data1_add_taggeddata (data1_handle dh, data1_node *root, const char *tagname, NMEM m); +YAZ_EXPORT data1_node *data1_get_root_tag (data1_handle dh, data1_node *n); + +YAZ_EXPORT int data1_iconv (data1_handle dh, NMEM m, data1_node *n, + const char *tocode, + const char *fromcode); + +YAZ_EXPORT const char *data1_get_encoding (data1_handle dh, data1_node *n); + +YAZ_EXPORT int data1_is_xmlmode(data1_handle dh); + YAZ_END_CDECL #endif