2 * Copyright (c) 1995-2002, Index Data.
3 * See the file LICENSE for details.
4 * Sebastian Hammer, Adam Dickmeiss
6 * $Id: d1_prtree.c,v 1.8 2002-05-13 14:13:37 adam Exp $
10 #include <yaz/data1.h>
12 static void pr_string (FILE *out, const char *str, int len)
15 for (i = 0; i<len; i++)
19 fprintf (out, "\\x%02x", c);
25 static void pr_tree (data1_handle dh, data1_node *n, FILE *out, int level)
27 fprintf (out, "%*s", level, "");
31 fprintf (out, "root abstract syntax=%s\n", n->u.root.type);
34 fprintf (out, "tag type=%s\n", n->u.tag.tag);
35 if (n->u.tag.attributes)
37 data1_xattr *xattr = n->u.tag.attributes;
38 fprintf (out, "%*s attr", level, "");
39 for (; xattr; xattr = xattr->next)
40 fprintf (out, " %s=%s ", xattr->name, xattr->value);
45 fprintf (out, "data type=");
46 switch (n->u.data.what)
49 fprintf (out, "inctxt\n");
52 fprintf (out, "incbin\n");
55 fprintf (out, "text '");
56 pr_string (out, n->u.data.data, n->u.data.len);
60 fprintf (out, "num '");
61 pr_string (out, n->u.data.data, n->u.data.len);
65 fprintf (out, "oid '");
66 pr_string (out, n->u.data.data, n->u.data.len);
70 fprintf (out, "unknown(%d)\n", n->u.data.what);
75 fprintf (out, "variant\n");
77 if (n->u.variant.type->name)
78 fprintf (out, " class=%s type=%d value=%s\n",
79 n->u.variant.type->name, n->u.variant.type->type,
84 fprintf (out, "unknown(%d)\n", n->which);
87 pr_tree (dh, n->child, out, level+4);
89 pr_tree (dh, n->next, out, level);
93 void data1_pr_tree (data1_handle dh, data1_node *n, FILE *out)
95 pr_tree (dh, n, out, 0);