X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=retrieval%2Fd1_read.c;h=e164202c8e83300deab789089a9e9378cba926a9;hp=01b1a09b2bfd4718b0d7876cc97eb5a90e60f0a0;hb=9446211daf0869d342b5738d153d810230b7a299;hpb=3ffa5dbc563e15bccb012f3d3d00a993f87ace82 diff --git a/retrieval/d1_read.c b/retrieval/d1_read.c index 01b1a09..e164202 100644 --- a/retrieval/d1_read.c +++ b/retrieval/d1_read.c @@ -4,7 +4,17 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: d1_read.c,v $ - * Revision 1.3 1995-11-01 16:34:57 quinn + * Revision 1.6 1995-12-12 16:37:08 quinn + * Added destroy element to data1_node. + * + * Revision 1.5 1995/12/11 15:22:37 quinn + * Added last_child field to the node. + * Rewrote schema-mapping. + * + * Revision 1.4 1995/11/13 09:27:36 quinn + * Fiddling with the variant stuff. + * + * Revision 1.3 1995/11/01 16:34:57 quinn * Making data1 look for tables in data1_tabpath * * Revision 1.2 1995/11/01 13:54:48 quinn @@ -94,8 +104,9 @@ data1_node *data1_mk_node(void) else if (!(r = xmalloc(sizeof(*r)))) abort(); - r->next = r->child = r->parent = 0; + r->next = r->child = r->last_child = r->parent = 0; r->num_children = 0; + r->destroy = 0; return r; } @@ -115,6 +126,8 @@ void data1_free_tree(data1_node *t) data1_free_tree(p); p = pn; } + if (t->destroy) + (*t->destroy)(t); fr_node(t); } @@ -133,6 +146,8 @@ data1_node *data1_insert_taggeddata(data1_node *root, data1_node *at, tagn->line = -1; tagn->u.tag.tag = 0; tagn->u.tag.node_selected = 0; + tagn->u.tag.make_variantlist = 0; + tagn->u.tag.no_data_requested = 0; if (!(tagn->u.tag.element = data1_getelementbytagname(root->u.root.absyn, 0, tagname))) { @@ -291,7 +306,7 @@ data1_node *data1_read_node(char **buf, data1_node *parent, int *line, *buf = t + 1; } } - else /* acquire our element in the abstract syntax */ + else /* tag.. acquire our element in the abstract syntax */ { data1_node *partag = get_parent_tag(parent); data1_element *e = 0; @@ -323,6 +338,8 @@ data1_node *data1_read_node(char **buf, data1_node *parent, int *line, res->u.tag.element = elem; res->u.tag.tag = tag; res->u.tag.node_selected = 0; + res->u.tag.make_variantlist = 0; + res->u.tag.no_data_requested = 0; res->root = parent->root; *buf = t + 1; } @@ -336,6 +353,7 @@ data1_node *data1_read_node(char **buf, data1_node *parent, int *line, */ while ((*pp = data1_read_node(buf, res, line, absyn))) { + res->last_child = *pp; res->num_children++; pp = &(*pp)->next; }