+}
+
+data1_node *data1_append_node (data1_handle dh, NMEM m, int type,
+ data1_node *parent)
+{
+ data1_node *r = (data1_node *)nmem_malloc(m, sizeof(*r));
+ r->next = r->child = r->last_child = 0;
+ r->destroy = 0;
+
+ if (!parent)
+ r->root = r;
+ else
+ {
+ r->root = parent->root;
+ r->parent = parent;
+ if (!parent->child)
+ parent->child = parent->last_child = r;
+ else
+ parent->last_child->next = r;
+ parent->last_child = r;
+ }
+ data1_init_node(dh, r, type);
+ return r;
+}
+
+data1_node *data1_mk_node2 (data1_handle dh, NMEM m, int type,
+ data1_node *parent)
+{
+ return data1_append_node (dh, m, type, parent);
+}
+
+data1_node *data1_insert_node (data1_handle dh, NMEM m, int type,
+ data1_node *parent)
+{
+ data1_node *r = (data1_node *)nmem_malloc(m, sizeof(*r));
+ r->next = r->child = r->last_child = 0;
+ r->destroy = 0;
+
+ if (!parent)
+ r->root = r;
+ else
+ {
+ r->root = parent->root;
+ r->parent = parent;
+ if (!parent->child)
+ parent->last_child = r;
+ else
+ r->next = parent->child;
+ parent->child = r;
+ }
+ data1_init_node(dh, r, type);