Fixed data1_gettagbyname. Bug introduced by previous revision.
[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.4  1998-05-18 13:07:06  adam
8  * Changed the way attribute sets are handled by the retriaval module.
9  * Extended Explain conversion / schema.
10  * Modified server and client to work with ASN.1 compiled protocol handlers.
11  *
12  * Revision 1.3  1998/02/27 14:05:34  adam
13  * Added printing of integer nodes.
14  *
15  * Revision 1.2  1997/11/06 11:36:44  adam
16  * Implemented variant match on simple elements -data1 tree and Espec-1.
17  *
18  * Revision 1.1  1997/10/27 14:04:07  adam
19  * New debug utility, data1_pr_tree, that dumps a data1 tree.
20  *
21  */
22
23 #include <log.h>
24 #include <data1.h>
25
26 static void pr_tree (data1_handle dh, data1_node *n, FILE *out, int level)
27 {
28      fprintf (out, "%*s", level, "");
29      switch (n->which)
30      {
31      case DATA1N_root:
32          fprintf (out, "root abstract syntax=%s\n", n->u.root.type);
33          break;
34      case DATA1N_tag:
35          fprintf (out, "tag type=%s\n", n->u.tag.tag);
36          break;
37      case DATA1N_data:
38          fprintf (out, "data type=");
39          switch (n->u.data.what)
40          {
41          case DATA1I_inctxt:
42              fprintf (out, "inctxt\n");
43              break;
44          case DATA1I_incbin:
45              fprintf (out, "incbin\n");
46              break;
47          case DATA1I_text:
48              fprintf (out, "text '%.*s'\n", n->u.data.len, n->u.data.data);
49              break;
50          case DATA1I_num:
51              fprintf (out, "num %.*s\n", n->u.data.len, n->u.data.data);
52              break;
53          case DATA1I_oid:
54              fprintf (out, "oid %.*s\n", n->u.data.len, n->u.data.data);
55              break;
56          default:
57              fprintf (out, "unknown(%d)\n", n->u.data.what);
58              break;
59          }
60          break;
61      case DATA1N_variant:
62          fprintf (out, "variant\n");
63 #if 0
64          if (n->u.variant.type->name)
65              fprintf (out, " class=%s type=%d value=%s\n",
66                       n->u.variant.type->name, n->u.variant.type->type,
67                       n->u.variant.value);
68 #endif
69          break;
70      default:
71          fprintf (out, "unknown(%d)\n", n->which);
72      }
73      if (n->child)
74          pr_tree (dh, n->child, out, level+4);
75      if (n->next)
76          pr_tree (dh, n->next, out, level);
77 }
78
79
80 void data1_pr_tree (data1_handle dh, data1_node *n, FILE *out)
81 {
82      pr_tree (dh, n, out, 0);
83 }