📄 grs1disp.c
字号:
/* * Copyright (c) 2002, Index Data. * See the file LICENSE for details. * * $Id: grs1disp.c,v 1.1 2002/10/22 10:29:58 adam Exp $ */#include <stdio.h>#include <string.h>#include <stdlib.h>#include <ctype.h>#include <yaz/proto.h>static void display_variant(WRBUF w, Z_Variant *v, int level){ int i; for (i = 0; i < v->num_triples; i++) { printf("%*sclass=%d,type=%d", level * 4, "", *v->triples[i]->zclass, *v->triples[i]->type); if (v->triples[i]->which == Z_Triple_internationalString) printf(",value=%s\n", v->triples[i]->value.internationalString); else printf("\n"); }}static void display_grs1(WRBUF w, Z_GenericRecord *r, int level){ int i; if (!r) { return; } for (i = 0; i < r->num_elements; i++) { Z_TaggedElement *t; wrbuf_printf(w, "%*s", level * 4, ""); t = r->elements[i]; wrbuf_printf(w, "("); if (t->tagType) wrbuf_printf(w, "%d,", *t->tagType); else wrbuf_printf(w, "?,"); if (t->tagValue->which == Z_StringOrNumeric_numeric) wrbuf_printf(w, "%d) ", *t->tagValue->u.numeric); else wrbuf_printf(w, "%s) ", t->tagValue->u.string); if (t->content->which == Z_ElementData_subtree) { if (!t->content->u.subtree) printf (" (no subtree)\n"); else { wrbuf_printf(w, "\n"); display_grs1(w, t->content->u.subtree, level+1); } } else if (t->content->which == Z_ElementData_string) wrbuf_printf(w, "%s\n", t->content->u.string); else if (t->content->which == Z_ElementData_numeric) wrbuf_printf(w, "%d\n", *t->content->u.numeric); else if (t->content->which == Z_ElementData_oid) { int *ip = t->content->u.oid; oident *oent; if ((oent = oid_getentbyoid(t->content->u.oid))) wrbuf_printf(w, "OID: %s\n", oent->desc); else { wrbuf_printf(w, "{"); while (ip && *ip >= 0) wrbuf_printf(w, " %d", *(ip++)); wrbuf_printf(w, " }\n"); } } else if (t->content->which == Z_ElementData_noDataRequested) wrbuf_printf(w, "[No data requested]\n"); else if (t->content->which == Z_ElementData_elementEmpty) wrbuf_printf(w, "[Element empty]\n"); else if (t->content->which == Z_ElementData_elementNotThere) wrbuf_printf(w, "[Element not there]\n"); else if (t->content->which == Z_ElementData_date) wrbuf_printf(w, "Date: %s\n", t->content->u.date); else if (t->content->which == Z_ElementData_ext) { printf ("External\n"); /* we cannot print externals here. Srry */ } else wrbuf_printf(w, "? type = %d\n",t->content->which); if (t->appliedVariant) display_variant(w, t->appliedVariant, level+1); if (t->metaData && t->metaData->supportedVariants) { int c; wrbuf_printf(w, "%*s---- variant list\n", (level+1)*4, ""); for (c = 0; c < t->metaData->num_supportedVariants; c++) { wrbuf_printf(w, "%*svariant #%d\n", (level+1)*4, "", c); display_variant(w, t->metaData->supportedVariants[c], level+2); } } }}void yaz_display_grs1(WRBUF wrbuf, Z_GenericRecord *r, int flags){ display_grs1 (wrbuf, r, 0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -