* 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 <stdio.h>
#include <assert.h>
{
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;
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;
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)
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);
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)
{
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);
}