* OF THIS SOFTWARE.
*
* $Log: data1.h,v $
- * Revision 1.34 1998-02-27 14:08:04 adam
+ * Revision 1.35 1998-03-05 08:15:32 adam
+ * Implemented data1_add_insert_taggeddata utility which is more flexible
+ * than data1_insert_taggeddata.
+ *
+ * Revision 1.34 1998/02/27 14:08:04 adam
* Added const to some char pointer arguments.
* Reworked data1_read_node so that it doesn't create a tree with
* pointers to original "SGML"-buffer.
NMEM m, const char *str);
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,
+ void (*fh)(data1_handle dh,
+ void *h, data1_absyn *a));
+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
* Sebastian Hammer, Adam Dickmeiss
*
* $Log: d1_absyn.c,v $
- * Revision 1.18 1998-02-27 14:08:04 adam
+ * Revision 1.19 1998-03-05 08:15:32 adam
+ * Implemented data1_add_insert_taggeddata utility which is more flexible
+ * than data1_insert_taggeddata.
+ *
+ * Revision 1.18 1998/02/27 14:08:04 adam
* Added const to some char pointer arguments.
* Reworked data1_read_node so that it doesn't create a tree with
* pointers to original "SGML"-buffer.
return NULL;
}
+void data1_absyn_trav (data1_handle dh, void *handle,
+ void (*fh)(data1_handle dh, void *h, data1_absyn *a))
+{
+ data1_absyn_cache p = *data1_absyn_cache_get (dh);
+
+ while (p)
+ {
+ (*fh)(dh, handle, p->absyn);
+ p = p->next;
+ }
+}
+
data1_absyn *data1_absyn_add (data1_handle dh, const char *name)
{
char fname[512];
* Sebastian Hammer, Adam Dickmeiss
*
* $Log: d1_read.c,v $
- * Revision 1.21 1998-02-27 14:08:05 adam
+ * Revision 1.22 1998-03-05 08:15:32 adam
+ * Implemented data1_add_insert_taggeddata utility which is more flexible
+ * than data1_insert_taggeddata.
+ *
+ * Revision 1.21 1998/02/27 14:08:05 adam
* Added const to some char pointer arguments.
* Reworked data1_read_node so that it doesn't create a tree with
* pointers to original "SGML"-buffer.
data1_node *data1_add_insert_taggeddata(data1_handle dh, data1_node *root,
data1_node *at,
const char *tagname, NMEM m,
- int first_flag)
+ int first_flag, int local_allowed)
{
data1_node *partag = get_parent_tag (dh, at);
data1_node *tagn = data1_mk_node (dh, m);
e = partag->u.tag.element;
tagn->u.tag.element =
data1_getelementbytagname (dh, root->u.root.absyn, e, tagname);
+ if (!local_allowed && !tagn->u.tag.element)
+ return NULL;
tagn->last_child = tagn->child = datn = data1_mk_node (dh, m);
datn->parent = tagn;
datn->root = root;
data1_node *at,
const char *tagname, NMEM m)
{
- return data1_add_insert_taggeddata (dh, root, at, tagname, m, 0);
+ return data1_add_insert_taggeddata (dh, root, at, tagname, m, 0, 1);
}
data1_node *at,
const char *tagname, NMEM m)
{
- return data1_add_insert_taggeddata (dh, root, at, tagname, m, 1);
+ return data1_add_insert_taggeddata (dh, root, at, tagname, m, 1, 0);
}
/*
/* use local buffer of nmem if too large */
if (len >= DATA1_LOCALDATA)
- res->u.data.data = nmem_malloc (m, len);
+ res->u.data.data = (char*) nmem_malloc (m, len);
else
res->u.data.data = res->lbuf;