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.9 2002-07-11 10:40:50 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 & 255);
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);
46 if (n->which == DATA1N_data)
47 fprintf (out, "data type=");
49 fprintf (out, "comment type=");
50 switch (n->u.data.what)
53 fprintf (out, "inctxt\n");
56 fprintf (out, "incbin\n");
59 fprintf (out, "text '");
60 pr_string (out, n->u.data.data, n->u.data.len);
64 fprintf (out, "num '");
65 pr_string (out, n->u.data.data, n->u.data.len);
69 fprintf (out, "oid '");
70 pr_string (out, n->u.data.data, n->u.data.len);
74 fprintf (out, "unknown(%d)\n", n->u.data.what);
78 case DATA1N_preprocess:
79 fprintf (out, "preprocess target=%s\n", n->u.preprocess.target);
80 if (n->u.preprocess.attributes)
82 data1_xattr *xattr = n->u.preprocess.attributes;
83 fprintf (out, "%*s attr", level, "");
84 for (; xattr; xattr = xattr->next)
85 fprintf (out, " %s=%s ", xattr->name, xattr->value);
90 fprintf (out, "variant\n");
92 if (n->u.variant.type->name)
93 fprintf (out, " class=%s type=%d value=%s\n",
94 n->u.variant.type->name, n->u.variant.type->type,
99 fprintf (out, "unknown(%d)\n", n->which);
102 pr_tree (dh, n->child, out, level+4);
104 pr_tree (dh, n->next, out, level);
108 void data1_pr_tree (data1_handle dh, data1_node *n, FILE *out)
110 pr_tree (dh, n, out, 0);