X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=recctrl%2Fregxread.c;h=0bf186c1e6faf699e6d6dfd6af2a98dc7868adbe;hb=971894f6614f5e7a4560ed0b8094a7eb1a668bde;hp=9f612e58fcb731cbb30826da8201b2153b47e280;hpb=3ecabdd7340cf895d4d446a217b8b69c17a2d781;p=idzebra-moved-to-github.git diff --git a/recctrl/regxread.c b/recctrl/regxread.c index 9f612e5..0bf186c 100644 --- a/recctrl/regxread.c +++ b/recctrl/regxread.c @@ -2,7 +2,7 @@ * Copyright (C) 1994-2002, Index Data * All rights reserved. * - * $Id: regxread.c,v 1.40 2002-05-03 13:50:25 adam Exp $ + * $Id: regxread.c,v 1.43 2002-07-05 12:43:30 adam Exp $ */ #include #include @@ -672,7 +672,7 @@ static void execData (struct lexSpec *spec, { org_len = 0; - res = data1_mk_node (spec->dh, spec->m, DATA1N_data, parent); + res = data1_mk_node2 (spec->dh, spec->m, DATA1N_data, parent); res->u.data.what = DATA1I_text; res->u.data.len = 0; res->u.data.formatted_text = formatted_text; @@ -762,7 +762,7 @@ static void variantBegin (struct lexSpec *spec, if (parent->which != DATA1N_variant) { - res = data1_mk_node (spec->dh, spec->m, DATA1N_variant, parent); + res = data1_mk_node2 (spec->dh, spec->m, DATA1N_variant, parent); if (spec->d1_stack[spec->d1_level]) tagDataRelease (spec); spec->d1_stack[spec->d1_level] = res; @@ -779,7 +779,7 @@ static void variantBegin (struct lexSpec *spec, logf (LOG_LOG, "variant node (%d)", spec->d1_level); #endif parent = spec->d1_stack[spec->d1_level-1]; - res = data1_mk_node (spec->dh, spec->m, DATA1N_variant, parent); + res = data1_mk_node2 (spec->dh, spec->m, DATA1N_variant, parent); res->u.variant.type = tp; if (value_len >= DATA1_LOCALDATA) @@ -828,7 +828,7 @@ static void tagBegin (struct lexSpec *spec, parent = spec->d1_stack[spec->d1_level -1]; partag = get_parent_tag(spec->dh, parent); - res = data1_mk_node (spec->dh, spec->m, DATA1N_tag, parent); + res = data1_mk_node2 (spec->dh, spec->m, DATA1N_tag, parent); if (len >= DATA1_LOCALDATA) res->u.tag.tag = (char *) nmem_malloc (spec->m, len+1); @@ -1031,23 +1031,20 @@ static int cmd_tcl_begin (ClientData clientData, Tcl_Interp *interp, if (!strcmp(argv[1], "record") && argc == 3) { char *absynName = argv[2]; - data1_absyn *absyn; data1_node *res; #if REGX_DEBUG logf (LOG_LOG, "begin record %s", absynName); #endif - absyn = data1_get_absyn (spec->dh, absynName); + res = data1_mk_root (spec->dh, spec->m, absynName); - res = data1_mk_node (spec->dh, spec->m); - res->which = DATA1N_root; - res->u.root.type = - data1_insert_string(spec->dh, res, spec->m, absynName); - res->u.root.absyn = absyn; - res->root = res; - - spec->d1_stack[spec->d1_level] = res; - spec->d1_stack[++(spec->d1_level)] = NULL; + spec->d1_stack[spec->d1_level++] = res; + + res = data1_mk_tag (spec->dh, spec->m, absynName, 0, res); + + spec->d1_stack[spec->d1_level++] = res; + + spec->d1_stack[spec->d1_level] = NULL; } else if (!strcmp(argv[1], "element") && argc == 3) { @@ -1279,25 +1276,24 @@ static void execCode (struct lexSpec *spec, struct regxCode *code) if (spec->d1_level == 0) { static char absynName[64]; - data1_absyn *absyn; data1_node *res; if (cmd_len > 63) cmd_len = 63; memcpy (absynName, cmd_str, cmd_len); absynName[cmd_len] = '\0'; - #if REGX_DEBUG logf (LOG_LOG, "begin record %s", absynName); #endif - absyn = data1_get_absyn (spec->dh, absynName); - - res = data1_mk_node (spec->dh, spec->m, DATA1N_root, 0); - res->u.root.type = absynName; - res->u.root.absyn = absyn; + res = data1_mk_root (spec->dh, spec->m, absynName); - spec->d1_stack[spec->d1_level] = res; - spec->d1_stack[++(spec->d1_level)] = NULL; + spec->d1_stack[spec->d1_level++] = res; + + res = data1_mk_tag (spec->dh, spec->m, absynName, 0, res); + + spec->d1_stack[spec->d1_level++] = res; + + spec->d1_stack[spec->d1_level] = NULL; } r = execTok (spec, &s, &cmd_str, &cmd_len); }