2 * Copyright (c) 1995, Index Data.
3 * See the file LICENSE for details.
4 * Sebastian Hammer, Adam Dickmeiss
7 * Revision 1.6 1995-12-14 11:09:09 quinn
8 * Fixed bug in tagging.
10 * Revision 1.5 1995/12/05 11:15:50 quinn
13 * Revision 1.4 1995/09/29 17:11:54 quinn
16 * Revision 1.3 1995/09/27 15:02:42 quinn
17 * Modified function heads & prototypes.
19 * Revision 1.2 1995/08/15 11:59:43 quinn
22 * Revision 1.1 1995/08/10 08:54:02 quinn
30 int z_LanguageCode(ODR o, char **p, int opt);
31 int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt);
32 int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt);
33 int z_HumanString(ODR o, Z_HumanString **p, int opt);
34 int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt);
35 int z_IconObject(ODR o, Z_IconObject **p, int opt);
36 int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt);
37 int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt);
38 int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt);
39 int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt);
40 int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt);
41 int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt);
42 int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt);
43 int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt);
44 int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt);
45 int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt);
46 int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt);
47 int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt);
48 int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt);
49 int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt);
50 int z_SearchKey(ODR o, Z_SearchKey **p, int opt);
51 int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt);
52 int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt);
53 int z_CostsOtherCharge(ODR o, Z_CostsOtherCharge **p, int opt);
54 int z_Costs(ODR o, Z_Costs **p, int opt);
55 int z_Charge(ODR o, Z_Charge **p, int opt);
56 int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt);
57 int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt);
58 int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt);
59 int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt);
60 int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt);
61 int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt);
62 int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt);
63 int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt);
64 int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt);
65 int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt);
66 int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt);
67 int z_PathUnit(ODR o, Z_PathUnit **p, int opt);
68 int z_Path(ODR o, Z_Path **p, int opt);
69 int z_ElementInfoList(ODR o, Z_Path **p, int opt);
70 int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt);
71 int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt);
72 int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt);
73 int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt);
74 int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt);
75 int z_AttributeType(ODR o, Z_AttributeType **p, int opt);
76 int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt);
77 int z_TermListElement(ODR o, Z_TermListElement **p, int opt);
78 int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt);
79 int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt);
80 int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt);
81 int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt);
82 int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt);
83 int z_OmittedAttributeInterpretation(ODR o, Z_OmittedAttributeInterpretation **p, int opt);
84 int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt);
85 int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt);
86 int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt);
87 int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt);
88 int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt);
89 int z_RecordTag(ODR o, Z_RecordTag **p, int opt);
90 int z_SortDetails(ODR o, Z_SortDetails **p, int opt);
91 int z_SortKeyDetailsSortType(ODR o, Z_SortKeyDetailsSortType **p, int opt);
92 int z_SortKeyDetails(ODR o, Z_SortKeyDetails **p, int opt);
93 int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt);
94 int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt);
95 int z_VariantClass(ODR o, Z_VariantClass **p, int opt);
96 int z_VariantType(ODR o, Z_VariantType **p, int opt);
97 int z_VariantValue(ODR o, Z_VariantValue **p, int opt);
98 int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt);
99 int z_ValueSet(ODR o, Z_ValueSet **p, int opt);
100 int z_ValueRange(ODR o, Z_ValueRange **p, int opt);
101 int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt);
102 int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt);
103 int z_UnitType(ODR o, Z_UnitType **p, int opt);
104 int z_Units(ODR o, Z_Units **p, int opt);
105 int z_CategoryList(ODR o, Z_CategoryList **p, int opt);
106 int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt);
107 int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt);
109 int z_LanguageCode(ODR o, char **p, int opt)
111 return z_InternationalString(o, p, opt);
114 int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt)
116 if (!odr_sequence_begin(o, p, sizeof(**p)))
117 return opt && odr_ok(o);
119 odr_implicit(o, odr_generalizedtime, &(*p)->dateAdded, ODR_CONTEXT, 0, 1) &&
120 odr_implicit(o, odr_generalizedtime, &(*p)->dateChanged, ODR_CONTEXT, 1, 1) &&
121 odr_implicit(o, odr_generalizedtime, &(*p)->expiry, ODR_CONTEXT, 2, 1) &&
122 odr_implicit(o, z_LanguageCode, &(*p)->humanStringLanguage, ODR_CONTEXT, 3, 1) &&
123 z_OtherInformation(o, &(*p)->otherInfo, 1) &&
127 int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt)
129 if (!odr_sequence_begin(o, p, sizeof(**p)))
130 return opt && odr_ok(o);
132 odr_implicit(o, z_LanguageCode, &(*p)->language, ODR_CONTEXT, 0, 1) &&
133 odr_implicit(o, z_InternationalString, &(*p)->text, ODR_CONTEXT,
138 int z_HumanString(ODR o, Z_HumanString **p, int opt)
140 if (o->direction == ODR_DECODE)
141 *p = odr_malloc(o, sizeof(**p));
145 return opt && odr_ok(o);
147 if (odr_sequence_of(o, z_HumanStringUnit, &(*p)->strings,
151 return opt && odr_ok(o);
154 int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt)
156 static Odr_arm arm[] =
158 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IconObject_ianaType,
159 z_InternationalString},
160 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IconObject_z3950type,
161 z_InternationalString},
162 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IconObject_otherType,
163 z_InternationalString},
167 if (!odr_sequence_begin(o, p, sizeof(**p)))
168 return opt && odr_ok(o);
170 odr_constructed_begin(o, &(*p)->bodyType, ODR_CONTEXT, 1) &&
171 odr_choice(o, arm, &(*p)->bodyType, &(*p)->which) &&
172 odr_constructed_end(o) &&
173 odr_implicit(o, odr_octetstring, &(*p)->content, ODR_CONTEXT, 2, 0) &&
177 int z_IconObject(ODR o, Z_IconObject **p, int opt)
179 if (o->direction == ODR_DECODE)
180 *p = odr_malloc(o, sizeof(**p));
186 if (odr_sequence_of(o, z_IconObjectUnit, &(*p)->iconUnits,
187 &(*p)->num_iconUnits))
190 return opt && odr_ok(o);
193 int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt)
195 if (!odr_sequence_begin(o, p, sizeof(**p)))
196 return opt && odr_ok(o);
198 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
199 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
200 odr_implicit(o, z_HumanString, &(*p)->address, ODR_CONTEXT, 2, 1) &&
201 odr_implicit(o, z_InternationalString, &(*p)->email, ODR_CONTEXT, 3, 1) &&
202 odr_implicit(o, z_InternationalString, &(*p)->phone, ODR_CONTEXT, 4, 1) &&
206 int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt)
208 if (!odr_sequence_begin(o, p, sizeof(**p)))
211 odr_implicit(o, z_InternationalString, &(*p)->hostAddress, ODR_CONTEXT, 0, 0) &&
212 odr_implicit(o, odr_integer, &(*p)->port, ODR_CONTEXT, 1, 0) &&
216 int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt)
218 if (!odr_sequence_begin(o, p, sizeof(**p)))
221 odr_implicit(o, z_InternationalString, &(*p)->pSel, ODR_CONTEXT, 0, 0) &&
222 odr_implicit(o, z_InternationalString, &(*p)->sSel, ODR_CONTEXT, 1, 1) &&
223 odr_implicit(o, z_InternationalString, &(*p)->tSel, ODR_CONTEXT, 2, 1) &&
224 odr_implicit(o, z_InternationalString, &(*p)->nSap, ODR_CONTEXT, 3, 0) &&
228 int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt)
230 if (!odr_sequence_begin(o, p, sizeof(**p)))
233 odr_implicit(o, z_InternationalString, &(*p)->type, ODR_CONTEXT, 0, 0) &&
234 odr_implicit(o, z_InternationalString, &(*p)->address, ODR_CONTEXT, 1, 0) &&
238 int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt)
240 static Odr_arm arm[] =
242 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_NetworkAddress_iA,
244 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_NetworkAddress_oPA,
245 z_NetworkAddressOPA},
246 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_NetworkAddress_other,
247 z_NetworkAddressOther},
251 if (o->direction == ODR_DECODE)
252 *p = odr_malloc(o, sizeof(**p));
255 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
258 return opt && odr_ok(o);
261 int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt)
263 if (!odr_sequence_begin(o, p, sizeof(**p)))
264 return opt && odr_ok(o);
266 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
267 (odr_sequence_of(o, z_QueryTypeDetails, &(*p)->queryTypesSupported,
268 &(*p)->num_queryTypesSupported) || odr_ok(o)) &&
269 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
270 (odr_sequence_of(o, odr_oid, &(*p)->diagnosticsSets,
271 &(*p)->num_diagnosticsSets) || odr_ok(o)) &&
272 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
273 (odr_sequence_of(o, odr_oid, &(*p)->attributeSetIds,
274 &(*p)->num_attributeSetIds) || odr_ok(o)) &&
275 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
276 (odr_sequence_of(o, odr_oid, &(*p)->schemas, &(*p)->num_schemas) ||
278 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
279 (odr_sequence_of(o, odr_oid, &(*p)->recordSyntaxes,
280 &(*p)->num_recordSyntaxes) || odr_ok(o)) &&
281 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
282 (odr_sequence_of(o, odr_oid, &(*p)->resourceChallenges,
283 &(*p)->num_resourceChallenges) || odr_ok(o)) &&
284 odr_implicit(o, z_AccessRestrictions, &(*p)->restrictedAccess,
285 ODR_CONTEXT, 6, 1) &&
286 odr_implicit(o, z_Costs, &(*p)->costInfo, ODR_CONTEXT, 8, 1) &&
287 odr_implicit_settag(o, ODR_CONTEXT, 9) &&
288 (odr_sequence_of(o, odr_oid, &(*p)->variantSets,
289 &(*p)->num_variantSets) || odr_ok(o)) &&
290 odr_implicit_settag(o, ODR_CONTEXT, 10) &&
291 (odr_sequence_of(o, z_ElementSetName, &(*p)->elementSetNames,
292 &(*p)->num_elementSetNames) || odr_ok(o)) &&
293 odr_implicit_settag(o, ODR_CONTEXT, 11) &&
294 (odr_sequence_of(o, z_InternationalString, &(*p)->unitSystems,
295 &(*p)->num_unitSystems) || odr_ok(o)) &&
299 int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt)
301 static Odr_arm arm[] =
303 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_QueryTypeDetails_private,
304 z_PrivateCapabilities},
305 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_QueryTypeDetails_rpn,
307 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_QueryTypeDetails_iso8777,
308 z_Iso8777Capabilities},
309 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_QueryTypeDetails_z3958,
311 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_QueryTypeDetails_erpn,
313 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_QueryTypeDetails_rankedList,
318 if (o->direction == ODR_DECODE)
319 *p = odr_malloc(o, sizeof(**p));
322 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
325 return opt && odr_ok(o);
328 int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt)
330 if (!odr_sequence_begin(o, p, sizeof(**p)))
331 return opt && odr_ok(o);
333 odr_implicit(o, z_InternationalString, &(*p)->operator, ODR_CONTEXT, 0, 0) &&
334 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
338 int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt)
340 if (!odr_sequence_begin(o, p, sizeof(**p)))
341 return opt && odr_ok(o);
343 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
344 (odr_sequence_of(o, z_PrivateCapOperator, &(*p)->operators,
345 &(*p)->num_operators) || odr_ok(o)) &&
346 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
347 (odr_sequence_of(o, z_SearchKey, &(*p)->searchKeys,
348 &(*p)->num_searchKeys) || odr_ok(o)) &&
349 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
350 (odr_sequence_of(o, z_HumanString, &(*p)->description,
351 &(*p)->num_description) || odr_ok(o)) &&
355 int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt)
357 if (!odr_sequence_begin(o, p, sizeof(**p)))
358 return opt && odr_ok(o);
360 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
361 (odr_sequence_of(o, odr_integer, &(*p)->operators, &(*p)->num_operators) || odr_ok(o)) &&
362 odr_implicit(o, odr_bool, &(*p)->resultSetAsOperandSupported,
363 ODR_CONTEXT, 1, 0) &&
364 odr_implicit(o, odr_bool, &(*p)->restrictionOperandSupported,
365 ODR_CONTEXT, 2, 0) &&
366 odr_implicit(o, z_ProximitySupport, &(*p)->proximity, ODR_CONTEXT,
371 int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt)
373 if (!odr_sequence_begin(o, p, sizeof(**p)))
374 return opt && odr_ok(o);
376 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
377 odr_sequence_of(o, z_SearchKey, &(*p)->searchKeys,
378 &(*p)->num_searchKeys) &&
379 odr_implicit(o, z_HumanString, &(*p)->restrictions, ODR_CONTEXT,
384 int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt)
386 if (!odr_sequence_begin(o, p, sizeof(**p)))
387 return opt && odr_ok(o);
389 odr_implicit(o, odr_integer, &(*p)->unit, ODR_CONTEXT, 0, 0) &&
390 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
394 int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt)
396 static Odr_arm arm[] =
398 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ProxSupportUnit_known,
400 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ProxSupportUnit_private,
401 z_ProxSupportPrivate},
405 if (o->direction == ODR_DECODE)
406 *p = odr_malloc(o, sizeof(**p));
409 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
412 return opt && odr_ok(o);
415 int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt)
417 if (!odr_sequence_begin(o, p, sizeof(**p)))
418 return opt && odr_ok(o);
420 odr_implicit(o, odr_bool, &(*p)->anySupport, ODR_CONTEXT, 0, 0) &&
421 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
422 (odr_sequence_of(o, z_ProxSupportUnit, &(*p)->unitsSupported,
423 &(*p)->num_unitsSupported) || odr_ok(o)) &&
427 int z_SearchKey(ODR o, Z_SearchKey **p, int opt)
429 if (!odr_sequence_begin(o, p, sizeof(**p)))
430 return opt && odr_ok(o);
432 odr_implicit(o, z_InternationalString, &(*p)->searchKey, ODR_CONTEXT, 0, 0) &&
433 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
437 int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt)
439 if (!odr_sequence_begin(o, p, sizeof(**p)))
440 return opt && odr_ok(o);
442 odr_explicit(o, odr_integer, &(*p)->accessType, ODR_CONTEXT, 0, 0) &&
443 odr_implicit(o, z_HumanString, &(*p)->accessText, ODR_CONTEXT, 1, 1) &&
444 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
445 (odr_sequence_of(o, odr_oid, &(*p)->accessChallenges,
446 &(*p)->num_accessChallenges) || odr_ok(o)) &&
450 int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt)
452 if (o->direction == ODR_DECODE)
453 *p = odr_malloc(o, sizeof(**p));
456 if (odr_sequence_of(o, z_AccessRestrictionsUnit, &(*p)->restrictions,
457 &(*p)->num_restrictions))
460 return opt && odr_ok(o);
463 int z_CostsOtherCharge(ODR o, Z_CostsOtherCharge **p, int opt)
465 if (!odr_sequence_begin(o, p, sizeof(**p)))
466 return opt && odr_ok(o);
468 odr_implicit(o, z_HumanString, &(*p)->forWhat, ODR_CONTEXT, 1, 0) &&
469 odr_implicit(o, z_Charge, &(*p)->charge, ODR_CONTEXT, 2, 1) &&
473 int z_Costs(ODR o, Z_Costs **p, int opt)
475 if (!odr_sequence_begin(o, p, sizeof(**p)))
476 return opt && odr_ok(o);
478 odr_implicit(o, z_Charge, &(*p)->connectCharge, ODR_CONTEXT, 0, 1) &&
479 odr_implicit(o, z_Charge, &(*p)->connectTime, ODR_CONTEXT, 1, 1) &&
480 odr_implicit(o, z_Charge, &(*p)->displayCharge, ODR_CONTEXT, 2, 1) &&
481 odr_implicit(o, z_Charge, &(*p)->searchCharge, ODR_CONTEXT, 3, 1) &&
482 odr_implicit(o, z_Charge, &(*p)->subscriptCharge, ODR_CONTEXT, 4, 1) &&
483 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
484 (odr_sequence_of(o, z_CostsOtherCharge, &(*p)->otherCharges,
485 &(*p)->num_otherCharges) || odr_ok(o)) &&
489 int z_Charge(ODR o, Z_Charge **p, int opt)
491 if (!odr_sequence_begin(o, p, sizeof(**p)))
492 return opt && odr_ok(o);
494 odr_implicit(o, z_IntUnit, &(*p)->cost, ODR_CONTEXT, 1, 0) &&
495 odr_implicit(o, z_Unit, &(*p)->perWhat, ODR_CONTEXT, 2, 1) &&
496 odr_implicit(o, z_HumanString, &(*p)->text, ODR_CONTEXT, 3, 1) &&
500 int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt)
502 if (o->direction == ODR_DECODE)
503 *p = odr_malloc(o, sizeof(**p));
506 if (odr_sequence_of(o, z_DatabaseName, &(*p)->databases,
507 &(*p)->num_databases))
510 return opt && odr_ok(o);
513 int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt)
515 if (!odr_sequence_begin(o, p, sizeof(**p)))
516 return opt && odr_ok(o);
518 odr_implicit(o, odr_oid, &(*p)->defaultAttributeSet,
519 ODR_CONTEXT, 0, 0) &&
520 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
521 odr_sequence_of(o, z_AttributeCombination, &(*p)->legalCombinations,
522 &(*p)->num_legalCombinations) &&
526 int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt)
528 if (o->direction == ODR_DECODE)
529 *p = odr_malloc(o, sizeof(**p));
532 if (odr_sequence_of(o, z_AttributeOccurrence, &(*p)->occurrences,
533 &(*p)->num_occurrences))
536 return opt && odr_ok(o);
539 int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt)
541 if (o->direction == ODR_DECODE)
542 *p = odr_malloc(o, sizeof(**p));
545 if (odr_sequence_of(o, z_StringOrNumeric, &(*p)->attributes,
546 &(*p)->num_attributes))
549 return opt && odr_ok(o);
552 int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt)
554 static Odr_arm arm[] =
556 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_AttributeOcc_anyOrNone, odr_null},
557 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_AttributeOcc_specific,
558 z_AttributeValueList},
562 if (!odr_sequence_begin(o, p, sizeof(**p)))
563 return opt && odr_ok(o);
565 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 0, 1) &&
566 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 1, 0) &&
567 odr_implicit(o, odr_null, &(*p)->mustBeSupplied, ODR_CONTEXT, 2, 1) &&
568 odr_choice(o, arm, &(*p)->attributeValues, &(*p)->which) &&
572 int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt)
574 if (!odr_sequence_begin(o, p, sizeof(**p)))
575 return opt && odr_ok(o);
577 odr_explicit(o, z_StringOrNumeric, &(*p)->value, ODR_CONTEXT, 0, 0) &&
578 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
579 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
580 (odr_sequence_of(o, z_StringOrNumeric, &(*p)->subAttributes,
581 &(*p)->num_subAttributes) || odr_ok(o)) &&
582 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
583 (odr_sequence_of(o, z_StringOrNumeric, &(*p)->superAttributes,
584 &(*p)->num_superAttributes) || odr_ok(o)) &&
585 odr_implicit(o, odr_null, &(*p)->partialSupport, ODR_CONTEXT, 4, 1) &&
591 int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt)
593 if (!odr_sequence_begin(o, p, sizeof(**p)))
594 return opt && odr_ok(o);
596 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
597 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
599 odr_implicit(o, z_HumanString, &(*p)->recentNews, ODR_CONTEXT, 2, 1) &&
600 odr_implicit(o, z_IconObject, &(*p)->icon, ODR_CONTEXT, 3, 1) &&
601 odr_implicit(o, odr_bool, &(*p)->namedResultSets, ODR_CONTEXT, 4, 0) &&
602 odr_implicit(o, odr_bool, &(*p)->multipleDBsearch, ODR_CONTEXT, 5, 0) &&
603 odr_implicit(o, odr_integer, &(*p)->maxResultSets, ODR_CONTEXT, 6, 1) &&
604 odr_implicit(o, odr_integer, &(*p)->maxResultSize, ODR_CONTEXT, 7, 1) &&
605 odr_implicit(o, odr_integer, &(*p)->maxTerms, ODR_CONTEXT, 8, 1) &&
606 odr_implicit(o, z_IntUnit, &(*p)->timeoutInterval, ODR_CONTEXT, 9, 1) &&
607 odr_implicit(o, z_HumanString, &(*p)->welcomeMessage, ODR_CONTEXT,
609 odr_implicit(o, z_ContactInfo, &(*p)->contactInfo, ODR_CONTEXT,
611 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
613 odr_implicit_settag(o, ODR_CONTEXT, 13) &&
614 (odr_sequence_of(o, z_InternationalString, &(*p)->nicknames,
615 &(*p)->num_nicknames) || odr_ok(o)) &&
616 odr_implicit(o, z_HumanString, &(*p)->usageRest, ODR_CONTEXT, 14, 1) &&
617 odr_implicit(o, z_HumanString, &(*p)->paymentAddr, ODR_CONTEXT,
619 odr_implicit(o, z_HumanString, &(*p)->hours, ODR_CONTEXT, 16, 1) &&
620 odr_implicit_settag(o, ODR_CONTEXT, 17) &&
621 (odr_sequence_of(o, z_DatabaseList, &(*p)->dbCombinations,
622 &(*p)->num_dbCombinations) || odr_ok(o)) &&
623 odr_implicit_settag(o, ODR_CONTEXT, 18) &&
624 (odr_sequence_of(o, z_NetworkAddress, &(*p)->addresses,
625 &(*p)->num_addresses) || odr_ok(o)) &&
626 odr_implicit(o, z_AccessInfo, &(*p)->commonAccessInfo, ODR_CONTEXT,
631 int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt)
633 static Odr_arm arm[] =
635 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Exp_RecordCount_actualNumber,
637 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Exp_RecordCount_approxNumber,
642 if (!odr_sequence_begin(o, p, sizeof(**p)))
643 return opt && odr_ok(o);
645 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
646 odr_implicit(o, z_DatabaseName, &(*p)->name, ODR_CONTEXT, 1, 0) &&
647 odr_implicit(o, odr_null, &(*p)->explainDatabase, ODR_CONTEXT, 2, 1) &&
648 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
649 (odr_sequence_of(o, z_DatabaseName, &(*p)->nicknames,
650 &(*p)->num_nicknames) || odr_ok(o)) &&
651 odr_implicit(o, z_IconObject, &(*p)->icon, ODR_CONTEXT, 4, 1) &&
652 odr_implicit(o, odr_bool, &(*p)->userFee, ODR_CONTEXT, 5, 0) &&
653 odr_implicit(o, odr_bool, &(*p)->available, ODR_CONTEXT, 6, 0) &&
654 odr_implicit(o, z_HumanString, &(*p)->titleString, ODR_CONTEXT, 7, 1) &&
655 odr_implicit_settag(o, ODR_CONTEXT, 8) &&
656 (odr_sequence_of(o, z_HumanString, &(*p)->keywords,
657 &(*p)->num_keywords) || odr_ok(o)) &&
658 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 9, 1) &&
659 odr_implicit(o, z_DatabaseList, &(*p)->associatedDbs, ODR_CONTEXT,
661 odr_implicit(o, z_DatabaseList, &(*p)->subDbs, ODR_CONTEXT, 11, 1) &&
662 odr_implicit(o, z_HumanString, &(*p)->disclaimers, ODR_CONTEXT,
664 odr_implicit(o, z_HumanString, &(*p)->news, ODR_CONTEXT, 13, 1) &&
665 ((odr_constructed_begin(o, &(*p)->recordCount, ODR_CONTEXT, 14) &&
666 odr_choice(o, arm, &(*p)->recordCount, &(*p)->recordCount_which) &&
667 odr_constructed_end(o)) || odr_ok(o)) &&
668 odr_implicit(o, z_HumanString, &(*p)->defaultOrder, ODR_CONTEXT,
670 odr_implicit(o, odr_integer, &(*p)->avRecordSize, ODR_CONTEXT, 16, 1) &&
671 odr_implicit(o, odr_integer, &(*p)->maxRecordSize, ODR_CONTEXT,
673 odr_implicit(o, z_HumanString, &(*p)->hours, ODR_CONTEXT, 18, 1) &&
674 odr_implicit(o, z_HumanString, &(*p)->bestTime, ODR_CONTEXT, 19, 1) &&
675 odr_implicit(o, odr_generalizedtime, &(*p)->lastUpdate, ODR_CONTEXT,
677 odr_implicit(o, z_IntUnit, &(*p)->updateInterval, ODR_CONTEXT, 21, 1) &&
678 odr_implicit(o, z_HumanString, &(*p)->coverage, ODR_CONTEXT, 22, 1) &&
679 odr_implicit(o, odr_bool, &(*p)->proprietary, ODR_CONTEXT, 23, 1) &&
680 odr_implicit(o, z_HumanString, &(*p)->copyrightText, ODR_CONTEXT,
682 odr_implicit(o, z_HumanString, &(*p)->copyrightNotice, ODR_CONTEXT,
684 odr_implicit(o, z_ContactInfo, &(*p)->producerContactInfo, ODR_CONTEXT,
686 odr_implicit(o, z_ContactInfo, &(*p)->supplierContactInfo, ODR_CONTEXT,
688 odr_implicit(o, z_ContactInfo, &(*p)->submissionContactInfo,
689 ODR_CONTEXT, 28, 1) &&
690 odr_implicit(o, z_AccessInfo, &(*p)->accessInfo, ODR_CONTEXT, 29, 1) &&
694 int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt)
696 if (!odr_sequence_begin(o, p, sizeof(**p)))
699 odr_implicit(o, odr_integer, &(*p)->tagType, ODR_CONTEXT, 0, 0) &&
700 odr_implicit(o, odr_oid, &(*p)->tagSet, ODR_CONTEXT, 1, 1) &&
701 odr_implicit(o, odr_null, &(*p)->defaultTagType, ODR_CONTEXT, 2, 1) &&
705 int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt)
707 if (!odr_sequence_begin(o, p, sizeof(**p)))
708 return opt && odr_ok(o);
710 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
711 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 1, 0) &&
712 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
714 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 3, 1) &&
715 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
716 (odr_sequence_of(o, z_TagTypeMapping, &(*p)->tagTypeMapping,
717 &(*p)->num_tagTypeMapping) || odr_ok(o)) &&
718 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
719 (odr_sequence_of(o, z_ElementInfo, &(*p)->recordStructure,
720 &(*p)->num_recordStructure) || odr_ok(o)) &&
724 int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt)
726 if (!odr_sequence_begin(o, p, sizeof(**p)))
727 return opt && odr_ok(o);
729 odr_implicit(o, z_InternationalString, &(*p)->elementName, ODR_CONTEXT, 1, 0) &&
730 odr_implicit(o, z_Path, &(*p)->elementTagPath, ODR_CONTEXT, 2, 0) &&
731 odr_explicit(o, z_ElementDataType, &(*p)->dataType, ODR_CONTEXT, 3, 1) &&
732 odr_implicit(o, odr_bool, &(*p)->required, ODR_CONTEXT, 4, 0) &&
733 odr_implicit(o, odr_bool, &(*p)->repeatable, ODR_CONTEXT, 5, 0) &&
734 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 6, 1) &&
738 int z_PathUnit(ODR o, Z_PathUnit **p, int opt)
740 if (!odr_sequence_begin(o, p, sizeof(**p)))
743 odr_implicit(o, odr_integer, &(*p)->tagType, ODR_CONTEXT, 1, 0) &&
744 odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue, ODR_CONTEXT,
749 int z_Path(ODR o, Z_Path **p, int opt)
751 if (o->direction == ODR_DECODE)
752 *p = odr_malloc(o, sizeof(**p));
755 odr_implicit_settag(o, ODR_CONTEXT, 201);
756 if (odr_sequence_of(o, z_OtherInformationUnit, &(*p)->list,
760 return opt && odr_ok(o);
763 int z_ElementInfoList(ODR o, Z_Path **p, int opt)
765 if (o->direction == ODR_DECODE)
766 *p = odr_malloc(o, sizeof(**p));
769 odr_implicit_settag(o, ODR_CONTEXT, 201);
770 if (odr_sequence_of(o, z_OtherInformationUnit, &(*p)->list,
774 return opt && odr_ok(o);
777 int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt)
779 static Odr_arm arm[] =
781 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ElementDataType_primitive,
783 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ElementDataType_structured,
788 if (o->direction == ODR_DECODE)
789 *p = odr_malloc(o, sizeof(**p));
793 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
796 return opt && odr_ok(o);
799 int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt)
801 if (!odr_sequence_begin(o, p, sizeof(**p)))
804 odr_implicit(o, z_InternationalString, &(*p)->elementName,
805 ODR_CONTEXT, 1, 0) &&
806 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
807 (odr_sequence_of(o, z_InternationalString, &(*p)->nicknames,
808 &(*p)->num_nicknames) || odr_ok(o)) &&
809 odr_explicit(o, z_StringOrNumeric, &(*p)->elementTag, ODR_CONTEXT,
811 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
813 odr_implicit(o, odr_integer, &(*p)->dataType, ODR_CONTEXT, 5, 1) &&
814 z_OtherInformation(o, &(*p)->otherTagInfo, 1) &&
818 int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt)
820 if (!odr_sequence_begin(o, p, sizeof(**p)))
821 return opt && odr_ok(o);
823 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
824 odr_implicit(o, odr_oid, &(*p)->tagSet, ODR_CONTEXT, 1, 0) &&
825 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
827 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
829 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
830 (odr_sequence_of(o, z_TagSetInfoElements, &(*p)->elements,
831 &(*p)->num_elements) || odr_ok(o)) &&
835 int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt)
837 if (!odr_sequence_begin(o, p, sizeof(**p)))
838 return opt && odr_ok(o);
840 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
841 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 1, 0) &&
842 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
844 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
845 (odr_sequence_of(o, odr_oid, &(*p)->transferSyntaxes,
846 &(*p)->num_transferSyntaxes) || odr_ok(o)) &&
847 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
848 odr_implicit(o, z_InternationalString, &(*p)->asn1Module, ODR_CONTEXT,
850 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
851 (odr_sequence_of(o, z_ElementInfo, &(*p)->abstractStructure,
852 &(*p)->num_abstractStructure) || odr_ok(o)) &&
856 int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt)
858 if (!odr_sequence_begin(o, p, sizeof(**p)))
859 return opt && odr_ok(o);
861 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
862 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 1, 0) &&
863 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 2, 0) &&
864 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
865 (odr_sequence_of(o, z_AttributeType, &(*p)->attributes,
866 &(*p)->num_attributes) || odr_ok(o)) &&
867 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
871 int z_AttributeType(ODR o, Z_AttributeType **p, int opt)
873 if (!odr_sequence_begin(o, p, sizeof(**p)))
874 return opt && odr_ok(o);
876 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
877 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
878 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 2, 0) &&
879 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
880 odr_sequence_of(o, z_AttributeDescription, &(*p)->attributeValues,
881 &(*p)->num_attributeValues) &&
885 int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt)
887 if (!odr_sequence_begin(o, p, sizeof(**p)))
888 return opt && odr_ok(o);
890 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
891 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
892 odr_explicit(o, z_StringOrNumeric, &(*p)->attributeValue, ODR_CONTEXT, 2, 0) &&
893 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
894 (odr_sequence_of(o, z_StringOrNumeric, &(*p)->equivalentAttributes,
895 &(*p)->num_equivalentAttributes) || odr_ok(o)) &&
899 int z_TermListElement(ODR o, Z_TermListElement **p, int opt)
901 if (!odr_sequence_begin(o, p, sizeof(**p)))
902 return opt && odr_ok(o);
904 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 1, 0) &&
905 odr_implicit(o, z_HumanString, &(*p)->title, ODR_CONTEXT, 2, 1) &&
906 odr_implicit(o, odr_integer, &(*p)->searchCost, ODR_CONTEXT, 3, 1) &&
907 odr_implicit(o, odr_bool, &(*p)->scanable, ODR_CONTEXT, 4, 0) &&
908 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
909 (odr_sequence_of(o, z_InternationalString, &(*p)->broader,
910 &(*p)->num_broader) || odr_ok(o)) &&
911 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
912 (odr_sequence_of(o, z_InternationalString, &(*p)->narrower,
913 &(*p)->num_narrower) || odr_ok(o)) &&
917 int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt)
919 if (!odr_sequence_begin(o, p, sizeof(**p)))
920 return opt && odr_ok(o);
922 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
923 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
925 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
926 (odr_sequence_of(o, z_TermListElement, &(*p)->termLists,
927 &(*p)->num_termLists) || odr_ok(o)) &&
931 int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt)
933 if (!odr_sequence_begin(o, p, sizeof(**p)))
934 return opt && odr_ok(o);
936 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
937 odr_implicit(o, odr_oid, &(*p)->type, ODR_CONTEXT, 1, 0) &&
938 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 2, 1) &&
939 odr_implicit(o, odr_bool, &(*p)->privateType, ODR_CONTEXT, 3, 0) &&
940 odr_implicit(o, odr_bool, &(*p)->restrictionsApply, ODR_CONTEXT, 5, 0) &&
941 odr_implicit(o, odr_bool, &(*p)->feeApply, ODR_CONTEXT, 6, 0) &&
942 odr_implicit(o, odr_bool, &(*p)->available, ODR_CONTEXT, 7, 0) &&
943 odr_implicit(o, odr_bool, &(*p)->retentionSupported, ODR_CONTEXT, 8, 0) &&
944 odr_implicit(o, odr_integer, &(*p)->waitAction, ODR_CONTEXT, 9, 0) &&
945 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 10, 1) &&
946 odr_implicit(o, z_External, &(*p)->specificExplain, ODR_CONTEXT, 11, 1) &&
947 odr_implicit(o, z_InternationalString, &(*p)->esASN, ODR_CONTEXT, 12, 1) &&
951 int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt)
953 if (!odr_sequence_begin(o, p, sizeof(**p)))
954 return opt && odr_ok(o);
956 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
957 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) &&
958 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
959 (odr_sequence_of(o, z_AttributeSetDetails, &(*p)->attributesBySet,
960 &(*p)->num_attributesBySet) && odr_ok(o)) &&
961 odr_implicit(o, z_AttributeCombinations, &(*p)->attributeCombinations, ODR_CONTEXT, 3, 1) &&
965 int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt)
967 if (!odr_sequence_begin(o, p, sizeof(**p)))
968 return opt && odr_ok(o);
970 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT,
972 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
973 odr_sequence_of(o, z_AttributeTypeDetails, &(*p)->attributesByType,
974 &(*p)->num_attributesByType) &&
978 int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt)
980 if (!odr_sequence_begin(o, p, sizeof(**p)))
981 return opt && odr_ok(o);
983 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 0, 0) &&
984 odr_implicit(o, z_OmittedAttributeInterpretation, &(*p)->optionalType, ODR_CONTEXT, 1, 1) &&
985 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
986 (odr_sequence_of(o, z_AttributeValue, &(*p)->attributeValues,
987 &(*p)->num_attributeValues) || odr_ok(o)) &&
991 int z_OmittedAttributeInterpretation(ODR o, Z_OmittedAttributeInterpretation **p, int opt)
993 if (!odr_sequence_begin(o, p, sizeof(**p)))
994 return opt && odr_ok(o);
996 odr_explicit(o, z_StringOrNumeric, &(*p)->defaultValue, ODR_CONTEXT, 0, 1) &&
997 odr_implicit(o, z_HumanString, &(*p)->defaultDescription, ODR_CONTEXT, 1, 1) &&
1001 int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt)
1003 if (!odr_sequence_begin(o, p, sizeof(**p)))
1004 return opt && odr_ok(o);
1006 odr_implicit(o, odr_integer, &(*p)->maxStepSize, ODR_CONTEXT, 0, 1) &&
1007 odr_implicit(o, z_HumanString, &(*p)->collatingSequence, ODR_CONTEXT, 1, 1) &&
1008 odr_implicit(o, odr_bool, &(*p)->increasing, ODR_CONTEXT, 2, 1) &&
1009 odr_sequence_end(o);
1012 int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt)
1014 if (!odr_sequence_begin(o, p, sizeof(**p)))
1015 return opt && odr_ok(o);
1017 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1018 odr_implicit(o, z_InternationalString, &(*p)->termListName, ODR_CONTEXT, 1, 0) &&
1019 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 2, 1) &&
1020 odr_implicit(o, z_AttributeCombinations, &(*p)->attributes, ODR_CONTEXT, 3, 1) &&
1021 odr_implicit(o, z_EScanInfo, &(*p)->scanInfo, ODR_CONTEXT, 4, 1) &&
1022 odr_implicit(o, odr_integer, &(*p)->estNumberTerms, ODR_CONTEXT, 5, 1) &&
1023 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
1024 (odr_sequence_of(o, z_Term, &(*p)->sampleTerms,
1025 &(*p)->num_sampleTerms) || odr_ok(o)) &&
1026 odr_sequence_end(o);
1029 int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt)
1031 if (!odr_sequence_begin(o, p, sizeof(**p)))
1032 return opt && odr_ok(o);
1034 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1035 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) &&
1036 odr_implicit(o, z_ElementSetName, &(*p)->elementSetName, ODR_CONTEXT, 2, 0) &&
1037 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 3, 0) &&
1038 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 4, 0) &&
1039 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 5, 1) &&
1040 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
1041 (odr_sequence_of(o, z_PerElementDetails, &(*p)->detailsPerElement, &(*p)->num_detailsPerElement) || odr_ok(o)) &&
1042 odr_sequence_end(o);
1045 int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt)
1047 if (!odr_sequence_begin(o, p, sizeof(**p)))
1048 return opt && odr_ok(o);
1050 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1051 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) &&
1052 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 2, 0) &&
1053 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 3, 0) &&
1054 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
1055 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
1056 (odr_sequence_of(o, z_PerElementDetails, &(*p)->detailsPerElement,
1057 &(*p)->num_detailsPerElement) || odr_ok(o)) &&
1058 odr_sequence_end(o);
1061 int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt)
1063 if (!odr_sequence_begin(o, p, sizeof(**p)))
1064 return opt && odr_ok(o);
1066 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
1067 odr_implicit(o, z_RecordTag, &(*p)->recordTag, ODR_CONTEXT, 1, 1) &&
1068 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1069 (odr_sequence_of(o, z_Path, &(*p)->schemaTags, &(*p)->num_schemaTags) ||
1071 odr_implicit(o, odr_integer, &(*p)->maxSize, ODR_CONTEXT, 3, 1) &&
1072 odr_implicit(o, odr_integer, &(*p)->minSize, ODR_CONTEXT, 4, 1) &&
1073 odr_implicit(o, odr_integer, &(*p)->avgSize, ODR_CONTEXT, 5, 1) &&
1074 odr_implicit(o, odr_integer, &(*p)->fixedSize, ODR_CONTEXT, 6, 1) &&
1075 odr_implicit(o, odr_bool, &(*p)->repeatable, ODR_CONTEXT, 8, 0) &&
1076 odr_implicit(o, odr_bool, &(*p)->required, ODR_CONTEXT, 9, 0) &&
1077 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 12, 1) &&
1078 odr_implicit(o, z_HumanString, &(*p)->contents, ODR_CONTEXT, 13, 1) &&
1079 odr_implicit(o, z_HumanString, &(*p)->billingInfo, ODR_CONTEXT, 14, 1) &&
1080 odr_implicit(o, z_HumanString, &(*p)->restrictions, ODR_CONTEXT, 15, 1) &&
1081 odr_implicit_settag(o, ODR_CONTEXT, 16) &&
1082 (odr_sequence_of(o, z_InternationalString, &(*p)->alternateNames,
1083 &(*p)->num_alternateNames) || odr_ok(o)) &&
1084 odr_implicit_settag(o, ODR_CONTEXT, 17) &&
1085 (odr_sequence_of(o, z_InternationalString, &(*p)->genericNames,
1086 &(*p)->num_genericNames) || odr_ok(o)) &&
1087 odr_implicit(o, z_AttributeCombinations, &(*p)->searchAccess,
1088 ODR_CONTEXT, 18, 1) &&
1089 odr_sequence_end(o);
1092 int z_RecordTag(ODR o, Z_RecordTag **p, int opt)
1094 if (!odr_sequence_begin(o, p, sizeof(**p)))
1095 return opt && odr_ok(o);
1097 odr_explicit(o, z_StringOrNumeric, &(*p)->qualifier, ODR_CONTEXT,
1099 odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue, ODR_CONTEXT,
1101 odr_sequence_end(o);
1104 int z_SortDetails(ODR o, Z_SortDetails **p, int opt)
1106 if (!odr_sequence_begin(o, p, sizeof(**p)))
1107 return opt && odr_ok(o);
1109 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1110 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
1112 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1113 (odr_sequence_of(o, z_SortKeyDetails, &(*p)->sortKeys,
1114 &(*p)->num_sortKeys) || odr_ok(o)) &&
1115 odr_sequence_end(o);
1118 int z_SortKeyDetailsSortType(ODR o, Z_SortKeyDetailsSortType **p, int opt)
1120 static Odr_arm arm[] =
1122 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_character,
1124 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_numeric,
1126 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_structured,
1131 if (o->direction == ODR_DECODE)
1132 *p = odr_malloc(o, sizeof(**p));
1135 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1138 return opt && odr_ok(o);
1141 int z_SortKeyDetails(ODR o, Z_SortKeyDetails **p, int opt)
1143 if (!odr_sequence_begin(o, p, sizeof(**p)))
1144 return opt && odr_ok(o);
1146 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 0, 1) &&
1147 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
1148 (odr_sequence_of(o, z_Specification, &(*p)->elementSpecifications,
1149 &(*p)->num_elementSpecifications) || odr_ok(o)) &&
1150 odr_implicit(o, z_AttributeCombinations, &(*p)->attributeSpecifications,
1151 ODR_CONTEXT, 2, 1) &&
1152 odr_explicit(o, z_SortKeyDetailsSortType, &(*p)->sortType, ODR_CONTEXT,
1154 odr_implicit(o, odr_integer, &(*p)->caseSensitivity, ODR_CONTEXT,
1156 odr_sequence_end(o);
1159 int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt)
1161 if (!odr_sequence_begin(o, p, sizeof(**p)))
1162 return opt && odr_ok(o);
1164 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1165 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
1167 odr_implicit(o, odr_integer, &(*p)->processingContext, ODR_CONTEXT,
1169 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1171 odr_implicit(o, odr_oid, &(*p)->oid, ODR_CONTEXT, 4, 0) &&
1172 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 5, 1) &&
1173 odr_implicit(o, z_External, &(*p)->instructions, ODR_CONTEXT, 6, 1) &&
1174 odr_sequence_end(o);
1177 int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt)
1179 if (!odr_sequence_begin(o, p, sizeof(**p)))
1180 return opt && odr_ok(o);
1182 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1183 odr_implicit(o, odr_oid, &(*p)->variantSet, ODR_CONTEXT, 1, 0) &&
1184 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1186 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1187 (odr_sequence_of(o, z_VariantClass, &(*p)->variants,
1188 &(*p)->num_variants) || odr_ok(o)) &&
1189 odr_sequence_end(o);
1192 int z_VariantClass(ODR o, Z_VariantClass **p, int opt)
1194 if (!odr_sequence_begin(o, p, sizeof(**p)))
1195 return opt && odr_ok(o);
1197 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1199 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1200 odr_implicit(o, odr_integer, &(*p)->variantClass, ODR_CONTEXT, 2, 0) &&
1201 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1202 odr_sequence_of(o, z_VariantType, &(*p)->variantTypes,
1203 &(*p)->num_variantTypes) &&
1204 odr_sequence_end(o);
1207 int z_VariantType(ODR o, Z_VariantType **p, int opt)
1209 if (!odr_sequence_begin(o, p, sizeof(**p)))
1210 return opt && odr_ok(o);
1212 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
1213 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1214 odr_implicit(o, odr_integer, &(*p)->variantType, ODR_CONTEXT, 2, 0) &&
1215 odr_implicit(o, z_VariantValue, &(*p)->variantValue, ODR_CONTEXT, 3, 1) &&
1216 odr_sequence_end(o);
1219 int z_VariantValue(ODR o, Z_VariantValue **p, int opt)
1221 if (!odr_sequence_begin(o, p, sizeof(**p)))
1222 return opt && odr_ok(o);
1224 odr_explicit(o, odr_integer, &(*p)->dataType, ODR_CONTEXT, 0, 0) &&
1225 odr_explicit(o, z_ValueSet, &(*p)->values, ODR_CONTEXT, 1, 1) &&
1226 odr_sequence_end(o);
1229 int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt)
1231 if (o->direction == ODR_DECODE)
1232 *p = odr_malloc(o, sizeof(**p));
1235 if (odr_sequence_of(o, z_ValueDescription, &(*p)->enumerated,
1236 &(*p)->num_enumerated))
1239 return opt && odr_ok(o);
1242 int z_ValueSet(ODR o, Z_ValueSet **p, int opt)
1244 static Odr_arm arm[] =
1246 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ValueSet_range, z_ValueRange},
1247 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueSet_enumerated,
1248 z_ValueSetEnumerated},
1252 if (o->direction == ODR_DECODE)
1253 *p = odr_malloc(o, sizeof(**p));
1256 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1259 return opt && odr_ok(o);
1262 int z_ValueRange(ODR o, Z_ValueRange **p, int opt)
1264 if (!odr_sequence_begin(o, p, sizeof(**p)))
1265 return opt && odr_ok(o);
1267 odr_explicit(o, z_ValueDescription, &(*p)->lower, ODR_CONTEXT, 0, 1) &&
1268 odr_explicit(o, z_ValueDescription, &(*p)->upper, ODR_CONTEXT, 1, 1) &&
1269 odr_sequence_end(o);
1272 int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt)
1274 static Odr_arm arm[] =
1276 {ODR_NONE, -1, -1, Z_ValueDescription_integer, odr_integer},
1277 {ODR_NONE, -1, -1, Z_ValueDescription_string, z_InternationalString},
1278 {ODR_NONE, -1, -1, Z_ValueDescription_octets, odr_octetstring},
1279 {ODR_NONE, -1, -1, Z_ValueDescription_oid, odr_oid},
1280 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueDescription_unit, z_Unit},
1281 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ValueDescription_valueAndUnit, z_IntUnit},
1285 if (o->direction == ODR_DECODE)
1286 *p = odr_malloc(o, sizeof(**p));
1288 return opt && odr_ok(o);
1289 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1292 return opt && odr_ok(o);
1295 int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt)
1297 if (!odr_sequence_begin(o, p, sizeof(**p)))
1298 return opt && odr_ok(o);
1300 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1301 odr_implicit(o, z_InternationalString, &(*p)->unitSystem, ODR_CONTEXT,
1303 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 2, 1) &&
1304 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1305 (odr_sequence_of(o, z_UnitType, &(*p)->units, &(*p)->num_units) ||
1307 odr_sequence_end(o);
1310 int z_UnitType(ODR o, Z_UnitType **p, int opt)
1312 if (!odr_sequence_begin(o, p, sizeof(**p)))
1313 return opt && odr_ok(o);
1315 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1317 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1318 odr_explicit(o, z_StringOrNumeric, &(*p)->unitType, ODR_CONTEXT,
1320 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1321 odr_sequence_of(o, z_Units, &(*p)->units, &(*p)->num_units) &&
1322 odr_sequence_end(o);
1325 int z_Units(ODR o, Z_Units **p, int opt)
1327 if (!odr_sequence_begin(o, p, sizeof(**p)))
1328 return opt && odr_ok(o);
1330 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
1331 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1332 odr_explicit(o, z_StringOrNumeric, &(*p)->unit, ODR_CONTEXT, 2, 0) &&
1333 odr_sequence_end(o);
1336 int z_CategoryList(ODR o, Z_CategoryList **p, int opt)
1338 if (!odr_sequence_begin(o, p, sizeof(**p)))
1339 return opt && odr_ok(o);
1341 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1342 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
1343 odr_sequence_of(o, z_CategoryInfo, &(*p)->categories,
1344 &(*p)->num_categories) &&
1345 odr_sequence_end(o);
1348 int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt)
1350 if (!odr_sequence_begin(o, p, sizeof(**p)))
1351 return opt && odr_ok(o);
1353 odr_implicit(o, z_InternationalString, &(*p)->category, ODR_CONTEXT,
1355 odr_implicit(o, z_InternationalString, &(*p)->originalCategory,
1356 ODR_CONTEXT, 2, 1) &&
1357 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 3, 1) &&
1358 odr_implicit(o, z_InternationalString, &(*p)->asn1Module, ODR_CONTEXT,
1360 odr_sequence_end(o);
1363 int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt)
1365 static Odr_arm arm[] =
1367 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Explain_targetInfo, z_TargetInfo},
1368 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Explain_databaseInfo, z_DatabaseInfo},
1369 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_Explain_schemaInfo, z_SchemaInfo},
1370 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_Explain_tagSetInfo, z_TagSetInfo},
1371 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_Explain_recordSyntaxInfo,
1372 z_RecordSyntaxInfo},
1373 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_Explain_attributeSetInfo,
1374 z_AttributeSetInfo},
1375 {ODR_IMPLICIT, ODR_CONTEXT, 6, Z_Explain_termListInfo,
1377 {ODR_IMPLICIT, ODR_CONTEXT, 7, Z_Explain_extendedServicesInfo,
1378 z_ExtendedServicesInfo},
1379 {ODR_IMPLICIT, ODR_CONTEXT, 8, Z_Explain_attributeDetails,
1380 z_AttributeDetails},
1381 {ODR_IMPLICIT, ODR_CONTEXT, 9, Z_Explain_termListDetails,
1383 {ODR_IMPLICIT, ODR_CONTEXT, 10, Z_Explain_elementSetDetails,
1384 z_ElementSetDetails},
1385 {ODR_IMPLICIT, ODR_CONTEXT, 11, Z_Explain_retrievalRecordDetails,
1386 z_RetrievalRecordDetails},
1387 {ODR_IMPLICIT, ODR_CONTEXT, 12, Z_Explain_sortDetails,
1389 {ODR_IMPLICIT, ODR_CONTEXT, 13, Z_Explain_processing,
1390 z_ProcessingInformation},
1391 {ODR_IMPLICIT, ODR_CONTEXT, 14, Z_Explain_variants,
1393 {ODR_IMPLICIT, ODR_CONTEXT, 15, Z_Explain_units, z_UnitInfo},
1394 {ODR_IMPLICIT, ODR_CONTEXT, 100, Z_Explain_categoryList,
1399 if (o->direction == ODR_DECODE)
1400 *p = odr_malloc(o, sizeof(**p));
1403 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1406 return opt && odr_ok(o);