X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=retrieval%2Fd1_read.c;h=e164202c8e83300deab789089a9e9378cba926a9;hp=633ed629ead95ef715c3bee7db373056aa65a718;hb=9446211daf0869d342b5738d153d810230b7a299;hpb=2004bbd9b3bbce5eb8ecc49520255b3d0bf578b9 diff --git a/retrieval/d1_read.c b/retrieval/d1_read.c index 633ed62..e164202 100644 --- a/retrieval/d1_read.c +++ b/retrieval/d1_read.c @@ -4,7 +4,20 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: d1_read.c,v $ - * Revision 1.2 1995-11-01 13:54:48 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 * Minor adjustments * * Revision 1.1 1995/11/01 11:56:09 quinn @@ -63,6 +76,11 @@ #include #include +char *data1_tabpath = 0; /* global path for tables */ + +void data1_set_tabpath(char *p) +{ data1_tabpath = p; } + static data1_node *freelist = 0; /* @@ -86,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; } @@ -107,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); } @@ -125,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))) { @@ -283,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; @@ -315,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; } @@ -328,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; }