32 #include <yaz/proto.h>
33 #include <yaz/oid_db.h>
34 #include <yaz/snprintf.h>
50 if (!c->
u.
tag.element)
52 yaz_log(YLOG_WARN,
"Tag %s is local", c->
u.
tag.tag);
57 yaz_log(YLOG_WARN,
"Tag %s is not numeric", c->
u.
tag.tag);
62 return c->
u.
tag.element->tag->value.numeric;
82 intbuf[c->
u.
data.len] =
'\0';
83 return odr_intdup(eh->
o, atoi(intbuf));
93 r = (
char *)odr_malloc(eh->
o, c->
u.
data.len + 1);
95 r[c->
u.
data.len] =
'\0';
107 memcpy(intbuf, c->
u.
data.data, c->
u.
data.len);
108 intbuf[c->
u.
data.len] =
'\0';
109 tf = (
int *)odr_malloc(eh->
o,
sizeof(*tf));
121 memcpy(oidstr, c->
u.
data.data, c->
u.
data.len);
122 oidstr[c->
u.
data.len] =
'\0';
124 return yaz_string_to_oid_odr(yaz_oid_std(),
125 CLASS_GENERAL, oidstr, eh->
o);
137 Z_HumanStringUnit *u;
142 r = (Z_HumanString *)odr_malloc(eh->
o,
sizeof(*r));
144 r->strings = (Z_HumanStringUnit **)odr_malloc(eh->
o,
sizeof(Z_HumanStringUnit*));
145 r->strings[0] = u = (Z_HumanStringUnit *)odr_malloc(eh->
o,
sizeof(*u));
147 u->text = (
char *)odr_malloc(eh->
o, c->
u.
data.len+1);
148 memcpy(u->text, c->
u.
data.data, c->
u.
data.len);
149 u->text[c->
u.
data.len] =
'\0';
155 Z_CommonInfo *res = (Z_CommonInfo *)odr_malloc(eh->
o,
sizeof(*res));
159 res->dateChanged = 0;
161 res->humanStringLanguage = 0;
168 case 601: res->dateAdded =
f_string(eh, c);
break;
169 case 602: res->dateChanged =
f_string(eh, c);
break;
170 case 603: res->expiry =
f_string(eh, c);
break;
171 case 604: res->humanStringLanguage =
f_string(eh, c);
break;
189 res = (Odr_oid **)odr_malloc (eh->
o,
sizeof(*res) * (*num));
190 for (c = n->
child, i = 0 ; c; c = c->
next)
192 res[i++] =
f_oid (eh, c, oclass);
211 res = (
char **)odr_malloc(eh->
o,
sizeof(*res) * (*num));
212 for (c = n->
child, i = 0 ; c; c = c->
next)
223 Z_ProximitySupport *res = (Z_ProximitySupport *)
224 odr_malloc(eh->
o,
sizeof(*res));
226 res->num_unitsSupported = 0;
227 res->unitsSupported = 0;
233 Z_RpnCapabilities *res = (Z_RpnCapabilities *)
234 odr_malloc(eh->
o,
sizeof(*res));
237 res->num_operators = 0;
238 res->operators = NULL;
239 res->resultSetAsOperandSupported = eh->
false_value;
240 res->restrictionOperandSupported = eh->
false_value;
241 res->proximity = NULL;
253 (res->num_operators)++;
255 if (res->num_operators)
256 res->operators = (Odr_int **)
257 odr_malloc(eh->
o, res->num_operators
258 *
sizeof(*res->operators));
267 res->resultSetAsOperandSupported =
f_bool(eh, c);
270 res->restrictionOperandSupported =
f_bool(eh, c);
282 Z_QueryTypeDetails *res = (Z_QueryTypeDetails *)
283 odr_malloc(eh->
o,
sizeof(*res));
286 res->
which = Z_QueryTypeDetails_rpn;
293 res->which = Z_QueryTypeDetails_rpn;
307 Z_AccessInfo *res = (Z_AccessInfo *)odr_malloc(eh->
o,
sizeof(*res));
310 res->num_queryTypesSupported = 0;
311 res->queryTypesSupported = 0;
312 res->num_diagnosticsSets = 0;
313 res->diagnosticsSets = 0;
314 res->num_attributeSetIds = 0;
315 res->attributeSetIds = 0;
316 res->num_schemas = 0;
318 res->num_recordSyntaxes = 0;
319 res->recordSyntaxes = 0;
320 res->num_resourceChallenges = 0;
321 res->resourceChallenges = 0;
322 res->restrictedAccess = 0;
324 res->num_variantSets = 0;
325 res->variantSets = 0;
326 res->num_elementSetNames = 0;
327 res->elementSetNames = 0;
328 res->num_unitSystems = 0;
329 res->unitSystems = 0;
341 (res->num_queryTypesSupported)++;
343 if (res->num_queryTypesSupported)
344 res->queryTypesSupported =
345 (Z_QueryTypeDetails **)
346 odr_malloc(eh->
o, res->num_queryTypesSupported
347 *
sizeof(*res->queryTypesSupported));
356 res->diagnosticsSets =
357 f_oid_seq(eh, c, &res->num_diagnosticsSets, CLASS_DIAGSET);
360 res->attributeSetIds =
361 f_oid_seq(eh, c, &res->num_attributeSetIds, CLASS_ATTSET);
365 f_oid_seq(eh, c, &res->num_schemas, CLASS_SCHEMA);
368 res->recordSyntaxes =
369 f_oid_seq(eh, c, &res->num_recordSyntaxes, CLASS_RECSYN);
372 res->resourceChallenges =
373 f_oid_seq(eh, c, &res->num_resourceChallenges, CLASS_RESFORM);
375 case 513: res->restrictedAccess = NULL;
break;
376 case 514: res->costInfo = NULL;
break;
379 f_oid_seq(eh, c, &res->num_variantSets, CLASS_VARSET);
382 res->elementSetNames =
386 res->unitSystems =
f_string_seq(eh, c, &res->num_unitSystems);
401 if (c->
u.
tag.element->tag->value.numeric == 210)
402 *wp = Z_DatabaseInfo_actualNumber;
403 else if (c->
u.
tag.element->tag->value.numeric == 211)
404 *wp = Z_DatabaseInfo_approxNumber;
410 memcpy(intbuf, c->
u.
data.data, c->
u.
data.len);
411 intbuf[c->
u.
data.len] =
'\0';
412 return odr_intdup(eh->
o, atoi(intbuf));
417 Z_ContactInfo *res = (Z_ContactInfo *) odr_malloc(eh->
o,
sizeof(*res));
421 res->description = 0;
430 case 102: res->name =
f_string(eh, c);
break;
431 case 113: res->description =
f_humstring(eh, c);
break;
432 case 127: res->address =
f_humstring(eh, c);
break;
433 case 128: res->email =
f_string(eh, c);
break;
434 case 129: res->phone =
f_string(eh, c);
break;
455 res = (Z_DatabaseList *)odr_malloc (eh->
o,
sizeof(*res));
457 res->num_databases = i;
458 res->databases = (
char **)odr_malloc (eh->
o,
sizeof(*res->databases) * i);
464 res->databases[i++] =
f_string(eh, c);
471 Z_NetworkAddressIA *res = (Z_NetworkAddressIA *)
472 odr_malloc(eh->
o,
sizeof(*res));
475 res->hostAddress = 0;
482 case 121: res->hostAddress =
f_string(eh, c);
break;
483 case 122: res->port =
f_integer(eh, c);
break;
492 Z_NetworkAddressOther *res = (Z_NetworkAddressOther *)
493 odr_malloc(eh->
o,
sizeof(*res));
503 case 124: res->type =
f_string(eh, c);
break;
504 case 121: res->address =
f_string(eh, c);
break;
513 Z_NetworkAddress **res = NULL;
530 res = (Z_NetworkAddress **) odr_malloc(eh->
o,
sizeof(*res) * (*num));
537 res[i] = (Z_NetworkAddress *) odr_malloc(eh->
o,
sizeof(**res));
538 res[i]->
which = Z_NetworkAddress_iA;
543 res[i] = (Z_NetworkAddress *) odr_malloc(eh->
o,
sizeof(**res));
544 res[i]->which = Z_NetworkAddress_other;
555 Z_CategoryInfo *res = (Z_CategoryInfo *)odr_malloc(eh->
o,
sizeof(*res));
559 res->originalCategory = 0;
560 res->description = 0;
566 case 102: res->category =
f_string(eh, c);
break;
567 case 302: res->originalCategory =
f_string(eh, c);
break;
568 case 113: res->description =
f_humstring(eh, c);
break;
569 case 303: res->asn1Module =
f_string (eh, c);
break;
577 Z_CategoryList *res = (Z_CategoryList *)odr_malloc(eh->
o,
sizeof(*res));
581 res->num_categories = 0;
582 res->categories = NULL;
596 (res->num_categories)++;
598 if (res->num_categories)
600 (Z_CategoryInfo **)odr_malloc(eh->
o, res->num_categories
601 *
sizeof(*res->categories));
611 assert (res->num_categories && res->categories);
617 Z_TargetInfo *res = (Z_TargetInfo *)odr_malloc(eh->
o,
sizeof(*res));
624 res->namedResultSets = 0;
625 res->multipleDBsearch = 0;
626 res->maxResultSets = 0;
627 res->maxResultSize = 0;
629 res->timeoutInterval = 0;
630 res->welcomeMessage = 0;
631 res->contactInfo = 0;
632 res->description = 0;
633 res->num_nicknames = 0;
636 res->paymentAddr = 0;
638 res->num_dbCombinations = 0;
639 res->dbCombinations = 0;
640 res->num_addresses = 0;
642 res->num_languages = 0;
643 res->languages = NULL;
644 res->commonAccessInfo = 0;
653 case 102: res->name =
f_string(eh, c);
break;
654 case 103: res->recentNews =
f_humstring(eh, c);
break;
655 case 104: res->icon = NULL;
break;
656 case 105: res->namedResultSets =
f_bool(eh, c);
break;
657 case 106: res->multipleDBsearch =
f_bool(eh, c);
break;
658 case 107: res->maxResultSets =
f_integer(eh, c);
break;
659 case 108: res->maxResultSize =
f_integer(eh, c);
break;
660 case 109: res->maxTerms =
f_integer(eh, c);
break;
661 case 110: res->timeoutInterval =
f_intunit(eh, c);
break;
662 case 111: res->welcomeMessage =
f_humstring(eh, c);
break;
664 case 113: res->description =
f_humstring(eh, c);
break;
666 res->num_nicknames = 0;
671 (res->num_nicknames)++;
673 if (res->num_nicknames)
675 (
char **)odr_malloc(eh->
o, res->num_nicknames
676 *
sizeof(*res->nicknames));
681 res->nicknames[i++] =
f_string(eh, n);
684 case 115: res->usageRest =
f_humstring(eh, c);
break;
685 case 116: res->paymentAddr =
f_humstring(eh, c);
break;
688 res->num_dbCombinations = 0;
693 (res->num_dbCombinations)++;
695 if (res->num_dbCombinations)
696 res->dbCombinations =
698 odr_malloc(eh->
o, res->num_dbCombinations
699 *
sizeof(*res->dbCombinations));
712 res->num_languages = 0;
717 (res->num_languages)++;
719 if (res->num_languages)
720 res->languages = (
char **)
721 odr_malloc(eh->
o, res->num_languages *
722 sizeof(*res->languages));
727 res->languages[i++] =
f_string (eh, n);
730 case 500: res->commonAccessInfo =
f_accessInfo(eh, c);
break;
733 if (!res->namedResultSets)
735 if (!res->multipleDBsearch)
742 Z_DatabaseInfo *res = (Z_DatabaseInfo *)odr_malloc(eh->
o,
sizeof(*res));
747 res->explainDatabase = 0;
748 res->num_nicknames = 0;
753 res->titleString = 0;
754 res->num_keywords = 0;
756 res->description = 0;
757 res->associatedDbs = 0;
759 res->disclaimers = 0;
761 res->
u.actualNumber = 0;
762 res->defaultOrder = 0;
763 res->avRecordSize = 0;
764 res->maxRecordSize = 0;
768 res->updateInterval = 0;
770 res->proprietary = 0;
771 res->copyrightText = 0;
772 res->copyrightNotice = 0;
773 res->producerContactInfo = 0;
774 res->supplierContactInfo = 0;
775 res->submissionContactInfo = 0;
785 case 102: res->name =
f_string(eh, c);
break;
786 case 226: res->explainDatabase = odr_nullval();
break;
788 res->num_nicknames = 0;
792 n->
u.
tag.element->tag->value.numeric != 102)
794 (res->num_nicknames)++;
796 if (res->num_nicknames)
798 (
char **)odr_malloc (eh->
o, res->num_nicknames
799 *
sizeof(*res->nicknames));
803 n->
u.
tag.element->tag->value.numeric != 102)
805 res->nicknames[i++] =
f_string (eh, n);
808 case 104: res->icon = 0;
break;
809 case 201: res->userFee =
f_bool(eh, c);
break;
810 case 202: res->available =
f_bool(eh, c);
break;
811 case 203: res->titleString =
f_humstring(eh, c);
break;
813 res->num_keywords = 0;
818 (res->num_keywords)++;
820 if (res->num_keywords)
822 (Z_HumanString **)odr_malloc (eh->
o, res->num_keywords
823 *
sizeof(*res->keywords));
831 case 113: res->description =
f_humstring(eh, c);
break;
838 case 207: res->disclaimers =
f_humstring(eh, c);
break;
840 case 209: res->u.actualNumber =
842 case 212: res->defaultOrder =
f_humstring(eh, c);
break;
843 case 213: res->avRecordSize =
f_integer(eh, c);
break;
844 case 214: res->maxRecordSize =
f_integer(eh, c);
break;
846 case 216: res->bestTime =
f_humstring(eh, c);
break;
847 case 217: res->lastUpdate =
f_string(eh, c);
break;
848 case 218: res->updateInterval =
f_intunit(eh, c);
break;
849 case 219: res->coverage =
f_humstring(eh, c);
break;
850 case 220: res->proprietary =
f_bool(eh, c);
break;
851 case 221: res->copyrightText =
f_humstring(eh, c);
break;
852 case 222: res->copyrightNotice =
f_humstring(eh, c);
break;
853 case 223: res->producerContactInfo =
f_contactInfo(eh, c);
break;
854 case 224: res->supplierContactInfo =
f_contactInfo(eh, c);
break;
855 case 225: res->submissionContactInfo =
f_contactInfo(eh, c);
break;
868 Z_StringOrNumeric *res = (Z_StringOrNumeric *)
869 odr_malloc (eh->
o,
sizeof(*res));
876 res->
which = Z_StringOrNumeric_string;
880 res->which = Z_StringOrNumeric_numeric;
891 Z_AttributeDescription *res = (Z_AttributeDescription *)
892 odr_malloc(eh->
o,
sizeof(*res));
897 res->description = 0;
898 res->attributeValue = 0;
899 res->num_equivalentAttributes = 0;
900 res->equivalentAttributes = 0;
906 case 102: res->name =
f_string(eh, c);
break;
907 case 113: res->description =
f_humstring(eh, c);
break;
909 case 752: (res->num_equivalentAttributes++);
break;
912 if (res->num_equivalentAttributes)
913 res->equivalentAttributes = (Z_StringOrNumeric **)
914 odr_malloc(eh->
o,
sizeof(*res->equivalentAttributes) *
915 res->num_equivalentAttributes);
924 Z_AttributeType *res = (Z_AttributeType *)
925 odr_malloc(eh->
o,
sizeof(*res));
929 res->description = 0;
930 res->attributeType = 0;
931 res->num_attributeValues = 0;
932 res->attributeValues = 0;
939 case 102: res->name =
f_string(eh, c);
break;
940 case 113: res->description =
f_humstring(eh, c);
break;
941 case 704: res->attributeType =
f_integer(eh, c);
break;
947 (res->num_attributeValues)++;
949 if (res->num_attributeValues)
950 res->attributeValues = (Z_AttributeDescription **)
951 odr_malloc(eh->
o, res->num_attributeValues
952 *
sizeof(*res->attributeValues));
967 Z_AttributeSetInfo *res = (Z_AttributeSetInfo *)
968 odr_malloc(eh->
o,
sizeof(*res));
972 res->attributeSet = 0;
974 res->num_attributes = 0;
976 res->description = 0;
983 case 1000: res->attributeSet =
f_oid(eh, c, CLASS_ATTSET);
break;
984 case 102: res->name =
f_string(eh, c);
break;
990 (res->num_attributes)++;
992 if (res->num_attributes)
993 res->attributes = (Z_AttributeType **)
994 odr_malloc(eh->
o, res->num_attributes
995 *
sizeof(*res->attributes));
1003 case 113: res->description =
f_humstring(eh, c);
break;
1012 Z_OmittedAttributeInterpretation *res = (Z_OmittedAttributeInterpretation*)
1013 odr_malloc(eh->
o,
sizeof(*res));
1016 res->defaultValue = 0;
1017 res->defaultDescription = 0;
1035 Z_AttributeValue *res = (Z_AttributeValue *)
1036 odr_malloc(eh->
o,
sizeof(*res));
1040 res->description = 0;
1041 res->num_subAttributes = 0;
1042 res->subAttributes = 0;
1043 res->num_superAttributes = 0;
1044 res->superAttributes = 0;
1045 res->partialSupport = 0;
1060 (res->num_subAttributes)++;
1062 if (res->num_subAttributes)
1063 res->subAttributes =
1064 (Z_StringOrNumeric **)
1065 odr_malloc(eh->
o, res->num_subAttributes
1066 *
sizeof(*res->subAttributes));
1079 (res->num_superAttributes)++;
1081 if (res->num_superAttributes)
1082 res->superAttributes =
1083 (Z_StringOrNumeric **)
1084 odr_malloc(eh->
o, res->num_superAttributes
1085 *
sizeof(*res->superAttributes));
1094 res->partialSupport = odr_nullval();
1103 Z_AttributeTypeDetails *res = (Z_AttributeTypeDetails *)
1104 odr_malloc(eh->
o,
sizeof(*res));
1106 res->attributeType = 0;
1107 res->defaultIfOmitted = 0;
1108 res->num_attributeValues = 0;
1109 res->attributeValues = 0;
1115 case 704: res->attributeType =
f_integer(eh, c);
break;
1124 (res->num_attributeValues)++;
1126 if (res->num_attributeValues)
1127 res->attributeValues =
1128 (Z_AttributeValue **)
1129 odr_malloc(eh->
o, res->num_attributeValues
1130 *
sizeof(*res->attributeValues));
1145 Z_AttributeSetDetails *res = (Z_AttributeSetDetails *)
1146 odr_malloc(eh->
o,
sizeof(*res));
1149 res->attributeSet = 0;
1150 res->num_attributesByType = 0;
1151 res->attributesByType = 0;
1157 case 1000: res->attributeSet =
f_oid(eh, c, CLASS_ATTSET);
break;
1163 (res->num_attributesByType)++;
1165 if (res->num_attributesByType)
1166 res->attributesByType =
1167 (Z_AttributeTypeDetails **)
1168 odr_malloc(eh->
o, res->num_attributesByType
1169 *
sizeof(*res->attributesByType));
1184 Z_AttributeValueList *res = (Z_AttributeValueList *)
1185 odr_malloc(eh->
o,
sizeof(*res));
1189 res->num_attributes = 0;
1193 (res->num_attributes)++;
1194 if (res->num_attributes)
1196 res->attributes = (Z_StringOrNumeric **)
1197 odr_malloc(eh->
o, res->num_attributes *
sizeof(*res->attributes));
1207 Z_AttributeOccurrence *res = (Z_AttributeOccurrence *)
1208 odr_malloc(eh->
o,
sizeof(*res));
1211 res->attributeSet = 0;
1212 res->attributeType = 0;
1213 res->mustBeSupplied = 0;
1214 res->
which = Z_AttributeOcc_any_or_none;
1215 res->attributeValues.any_or_none = odr_nullval();
1222 res->attributeSet =
f_oid(eh, c, CLASS_ATTSET);
break;
1224 res->attributeType =
f_integer(eh, c);
break;
1226 res->mustBeSupplied = odr_nullval();
break;
1228 res->which = Z_AttributeOcc_any_or_none;
1229 res->attributeValues.any_or_none = odr_nullval();
1232 res->which = Z_AttributeOcc_specific;
1242 Z_AttributeCombination *res = (Z_AttributeCombination *)
1243 odr_malloc(eh->
o,
sizeof(*res));
1247 res->num_occurrences = 0;
1248 res->occurrences = 0;
1251 (res->num_occurrences)++;
1252 if (res->num_occurrences)
1254 res->occurrences = (Z_AttributeOccurrence **)
1255 odr_malloc(eh->
o, res->num_occurrences *
sizeof(*res->occurrences));
1260 assert (res->num_occurrences);
1266 Z_AttributeCombinations *res = (Z_AttributeCombinations *)
1267 odr_malloc(eh->
o,
sizeof(*res));
1269 res->defaultAttributeSet = 0;
1270 res->num_legalCombinations = 0;
1271 res->legalCombinations = 0;
1279 res->defaultAttributeSet =
f_oid(eh, c, CLASS_ATTSET);
1286 (res->num_legalCombinations)++;
1288 if (res->num_legalCombinations)
1289 res->legalCombinations =
1290 (Z_AttributeCombination **)
1291 odr_malloc (eh->
o, res->num_legalCombinations
1292 *
sizeof(*res->legalCombinations));
1302 assert(res->num_legalCombinations);
1308 Z_AttributeDetails *res = (Z_AttributeDetails *)
1309 odr_malloc(eh->
o,
sizeof(*res));
1312 res->commonInfo = 0;
1313 res->databaseName = 0;
1314 res->num_attributesBySet = 0;
1315 res->attributesBySet = NULL;
1316 res->attributeCombinations = NULL;
1323 case 600: res->commonInfo =
f_commonInfo(eh, c);
break;
1324 case 102: res->databaseName =
f_string(eh, c);
break;
1330 (res->num_attributesBySet)++;
1332 if (res->num_attributesBySet)
1333 res->attributesBySet =
1334 (Z_AttributeSetDetails **)
1335 odr_malloc(eh->
o, res->num_attributesBySet
1336 *
sizeof(*res->attributesBySet));
1356 Z_ExplainRecord *res = (Z_ExplainRecord *)odr_malloc(o,
sizeof(*res));
1367 if (strcmp(n->
u.
root.type,
"explain"))
1369 yaz_log(YLOG_WARN,
"Attempt to convert a non-Explain record");
1377 res->which = Z_Explain_categoryList;
1382 res->which = Z_Explain_targetInfo;
1387 res->which = Z_Explain_databaseInfo;
1392 res->which = Z_Explain_attributeSetInfo;
1397 res->which = Z_Explain_attributeDetails;
1403 yaz_log(YLOG_WARN,
"No category in Explain record");
Z_AttributeCombination * f_attributeCombination(ExpHandle *eh, data1_node *n)
static Z_NetworkAddressOther * f_networkAddressOther(ExpHandle *eh, data1_node *n)
static char * f_string(ExpHandle *eh, data1_node *c)
static Z_HumanString * f_humstring(ExpHandle *eh, data1_node *c)
static Z_TargetInfo * f_targetInfo(ExpHandle *eh, data1_node *n)
static Z_NetworkAddress ** f_networkAddresses(ExpHandle *eh, data1_node *n, int *num)
char ** f_string_seq(ExpHandle *eh, data1_node *n, int *num)
Z_AttributeValue * f_attributeValue(ExpHandle *eh, data1_node *n)
Z_AttributeCombinations * f_attributeCombinations(ExpHandle *eh, data1_node *n)
static int is_data_tag(ExpHandle *eh, data1_node *c)
Z_OmittedAttributeInterpretation * f_omittedAttributeInterpretation(ExpHandle *eh, data1_node *n)
Z_AttributeType * f_attributeType(ExpHandle *eh, data1_node *n)
static Odr_int * f_integer(ExpHandle *eh, data1_node *c)
static Z_DatabaseInfo * f_databaseInfo(ExpHandle *eh, data1_node *n)
Z_AttributeOccurrence * f_attributeOccurrence(ExpHandle *eh, data1_node *n)
Z_AttributeTypeDetails * f_attributeTypeDetails(ExpHandle *eh, data1_node *n)
Z_StringOrNumeric * f_stringOrNumeric(ExpHandle *eh, data1_node *n)
static Z_CommonInfo * f_commonInfo(ExpHandle *eh, data1_node *n)
Z_AttributeValueList * f_attributeValueList(ExpHandle *eh, data1_node *n)
Z_ExplainRecord * data1_nodetoexplain(data1_handle dh, data1_node *n, int select, ODR o)
Z_AttributeSetInfo * f_attributeSetInfo(ExpHandle *eh, data1_node *n)
static Z_CategoryInfo * f_categoryInfo(ExpHandle *eh, data1_node *n)
static Odr_oid * f_oid(ExpHandle *eh, data1_node *c, oid_class oclass)
static Z_IntUnit * f_intunit(ExpHandle *eh, data1_node *c)
Z_AttributeSetDetails * f_attributeSetDetails(ExpHandle *eh, data1_node *n)
Odr_oid ** f_oid_seq(ExpHandle *eh, data1_node *n, int *num, oid_class oclass)
Z_QueryTypeDetails * f_queryTypeDetails(ExpHandle *eh, data1_node *n)
Z_AttributeDescription * f_attributeDescription(ExpHandle *eh, data1_node *n)
static Z_CategoryList * f_categoryList(ExpHandle *eh, data1_node *n)
Z_ProximitySupport * f_proximitySupport(ExpHandle *eh, data1_node *n)
Z_AttributeDetails * f_attributeDetails(ExpHandle *eh, data1_node *n)
static Z_AccessInfo * f_accessInfo(ExpHandle *eh, data1_node *n)
static Z_DatabaseList * f_databaseList(ExpHandle *eh, data1_node *n)
static bool_t * f_bool(ExpHandle *eh, data1_node *c)
static int is_numeric_tag(ExpHandle *eh, data1_node *c)
static Odr_int * f_recordCount(ExpHandle *eh, data1_node *c, int *which)
Z_RpnCapabilities * f_rpnCapabilities(ExpHandle *eh, data1_node *n)
static Z_ContactInfo * f_contactInfo(ExpHandle *eh, data1_node *n)
static Z_NetworkAddressIA * f_networkAddressIA(ExpHandle *eh, data1_node *n)
struct data1_node::@2::@3 root
struct data1_node * child