Make data1 to EXPLAIN ignore local tags in root.
[yaz-moved-to-github.git] / retrieval / d1_prtree.c
1 /*
2  * Copyright (c) 1995-1998, Index Data.
3  * See the file LICENSE for details.
4  * Sebastian Hammer, Adam Dickmeiss
5  *
6  * $Log: d1_prtree.c,v $
7  * Revision 1.3  1998-02-27 14:05:34  adam
8  * Added printing of integer nodes.
9  *
10  * Revision 1.2  1997/11/06 11:36:44  adam
11  * Implemented variant match on simple elements -data1 tree and Espec-1.
12  *
13  * Revision 1.1  1997/10/27 14:04:07  adam
14  * New debug utility, data1_pr_tree, that dumps a data1 tree.
15  *
16  */
17
18 #include <log.h>
19 #include <data1.h>
20
21 static void pr_tree (data1_handle dh, data1_node *n, FILE *out, int level)
22 {
23      fprintf (out, "%*s", level, "");
24      switch (n->which)
25      {
26      case DATA1N_root:
27          fprintf (out, "root abstract syntax=%s\n", n->u.root.type);
28          break;
29      case DATA1N_tag:
30          fprintf (out, "tag type=%s\n", n->u.tag.tag);
31          break;
32      case DATA1N_data:
33          fprintf (out, "data type=");
34          switch (n->u.data.what)
35          {
36          case DATA1I_inctxt:
37              fprintf (out, "inctxt\n");
38              break;
39          case DATA1I_incbin:
40              fprintf (out, "incbin\n");
41              break;
42          case DATA1I_text:
43              fprintf (out, "text '%.*s'\n", n->u.data.len, n->u.data.data);
44              break;
45          case DATA1I_num:
46              fprintf (out, "num %.*s\n", n->u.data.len, n->u.data.data);
47              break;
48          case DATA1I_oid:
49              fprintf (out, "oid\n");
50              break;
51          default:
52              fprintf (out, "unknown(%d)\n", n->u.data.what);
53              break;
54          }
55          break;
56      case DATA1N_variant:
57          fprintf (out, "variant\n");
58 #if 0
59          if (n->u.variant.type->name)
60              fprintf (out, " class=%s type=%d value=%s\n",
61                       n->u.variant.type->name, n->u.variant.type->type,
62                       n->u.variant.value);
63 #endif
64          break;
65      default:
66          fprintf (out, "unknown(%d)\n", n->which);
67      }
68      if (n->child)
69          pr_tree (dh, n->child, out, level+4);
70      if (n->next)
71          pr_tree (dh, n->next, out, level);
72 }
73
74
75 void data1_pr_tree (data1_handle dh, data1_node *n, FILE *out)
76 {
77      pr_tree (dh, n, out, 0);
78 }