2 * Copyright (c) 1995, Index Data.
3 * See the file LICENSE for details.
4 * Sebastian Hammer, Adam Dickmeiss
7 * Revision 1.5 1995-12-05 11:15:50 quinn
10 * Revision 1.4 1995/09/29 17:11:54 quinn
13 * Revision 1.3 1995/09/27 15:02:42 quinn
14 * Modified function heads & prototypes.
16 * Revision 1.2 1995/08/15 11:59:43 quinn
19 * Revision 1.1 1995/08/10 08:54:02 quinn
27 int z_LanguageCode(ODR o, char **p, int opt);
28 int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt);
29 int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt);
30 int z_HumanString(ODR o, Z_HumanString **p, int opt);
31 int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt);
32 int z_IconObject(ODR o, Z_IconObject **p, int opt);
33 int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt);
34 int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt);
35 int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt);
36 int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt);
37 int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt);
38 int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt);
39 int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt);
40 int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt);
41 int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt);
42 int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt);
43 int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt);
44 int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt);
45 int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt);
46 int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt);
47 int z_SearchKey(ODR o, Z_SearchKey **p, int opt);
48 int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt);
49 int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt);
50 int z_CostsOtherCharge(ODR o, Z_CostsOtherCharge **p, int opt);
51 int z_Costs(ODR o, Z_Costs **p, int opt);
52 int z_Charge(ODR o, Z_Charge **p, int opt);
53 int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt);
54 int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt);
55 int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt);
56 int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt);
57 int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt);
58 int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt);
59 int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt);
60 int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt);
61 int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt);
62 int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt);
63 int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt);
64 int z_PathUnit(ODR o, Z_PathUnit **p, int opt);
65 int z_Path(ODR o, Z_Path **p, int opt);
66 int z_ElementInfoList(ODR o, Z_Path **p, int opt);
67 int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt);
68 int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt);
69 int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt);
70 int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt);
71 int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt);
72 int z_AttributeType(ODR o, Z_AttributeType **p, int opt);
73 int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt);
74 int z_TermListElement(ODR o, Z_TermListElement **p, int opt);
75 int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt);
76 int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt);
77 int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt);
78 int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt);
79 int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt);
80 int z_OmittedAttributeInterpretation(ODR o, Z_OmittedAttributeInterpretation **p, int opt);
81 int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt);
82 int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt);
83 int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt);
84 int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt);
85 int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt);
86 int z_RecordTag(ODR o, Z_RecordTag **p, int opt);
87 int z_SortDetails(ODR o, Z_SortDetails **p, int opt);
88 int z_SortKeyDetailsSortType(ODR o, Z_SortKeyDetailsSortType **p, int opt);
89 int z_SortKeyDetails(ODR o, Z_SortKeyDetails **p, int opt);
90 int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt);
91 int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt);
92 int z_VariantClass(ODR o, Z_VariantClass **p, int opt);
93 int z_VariantType(ODR o, Z_VariantType **p, int opt);
94 int z_VariantValue(ODR o, Z_VariantValue **p, int opt);
95 int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt);
96 int z_ValueSet(ODR o, Z_ValueSet **p, int opt);
97 int z_ValueRange(ODR o, Z_ValueRange **p, int opt);
98 int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt);
99 int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt);
100 int z_UnitType(ODR o, Z_UnitType **p, int opt);
101 int z_Units(ODR o, Z_Units **p, int opt);
102 int z_CategoryList(ODR o, Z_CategoryList **p, int opt);
103 int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt);
104 int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt);
106 int z_LanguageCode(ODR o, char **p, int opt)
108 return z_InternationalString(o, p, opt);
111 int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt)
113 if (!odr_sequence_begin(o, p, sizeof(**p)))
114 return opt && odr_ok(o);
116 odr_implicit(o, odr_generalizedtime, &(*p)->dateAdded, ODR_CONTEXT, 0, 1) &&
117 odr_implicit(o, odr_generalizedtime, &(*p)->dateChanged, ODR_CONTEXT, 1, 1) &&
118 odr_implicit(o, odr_generalizedtime, &(*p)->expiry, ODR_CONTEXT, 2, 1) &&
119 odr_implicit(o, z_LanguageCode, &(*p)->humanStringLanguage, ODR_CONTEXT, 3, 1) &&
120 z_OtherInformation(o, &(*p)->otherInfo, 1) &&
124 int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt)
126 if (!odr_sequence_begin(o, p, sizeof(**p)))
127 return opt && odr_ok(o);
129 odr_implicit(o, z_LanguageCode, &(*p)->language, ODR_CONTEXT, 0, 1) &&
130 odr_implicit(o, z_InternationalString, &(*p)->text, ODR_CONTEXT,
135 int z_HumanString(ODR o, Z_HumanString **p, int opt)
137 if (o->direction == ODR_DECODE)
138 *p = odr_malloc(o, sizeof(**p));
140 return opt && odr_ok(o);
141 if (odr_sequence_of(o, z_HumanStringUnit, &(*p)->strings,
145 return opt && odr_ok(o);
148 int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt)
150 static Odr_arm arm[] =
152 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IconObject_ianaType,
153 z_InternationalString},
154 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IconObject_z3950type,
155 z_InternationalString},
156 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IconObject_otherType,
157 z_InternationalString},
161 if (!odr_sequence_begin(o, p, sizeof(**p)))
162 return opt && odr_ok(o);
164 odr_constructed_begin(o, &(*p)->bodyType, ODR_CONTEXT, 1) &&
165 odr_choice(o, arm, &(*p)->bodyType, &(*p)->which) &&
166 odr_constructed_end(o) &&
167 odr_implicit(o, odr_octetstring, &(*p)->content, ODR_CONTEXT, 2, 0) &&
171 int z_IconObject(ODR o, Z_IconObject **p, int opt)
173 if (o->direction == ODR_DECODE)
174 *p = odr_malloc(o, sizeof(**p));
177 if (odr_sequence_of(o, z_IconObjectUnit, &(*p)->iconUnits,
178 &(*p)->num_iconUnits))
181 return opt && odr_ok(o);
184 int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt)
186 if (!odr_sequence_begin(o, p, sizeof(**p)))
187 return opt && odr_ok(o);
189 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
190 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
191 odr_implicit(o, z_HumanString, &(*p)->address, ODR_CONTEXT, 2, 1) &&
192 odr_implicit(o, z_InternationalString, &(*p)->email, ODR_CONTEXT, 3, 1) &&
193 odr_implicit(o, z_InternationalString, &(*p)->phone, ODR_CONTEXT, 4, 1) &&
197 int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt)
199 if (!odr_sequence_begin(o, p, sizeof(**p)))
202 odr_implicit(o, z_InternationalString, &(*p)->hostAddress, ODR_CONTEXT, 0, 0) &&
203 odr_implicit(o, odr_integer, &(*p)->port, ODR_CONTEXT, 1, 0) &&
207 int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt)
209 if (!odr_sequence_begin(o, p, sizeof(**p)))
212 odr_implicit(o, z_InternationalString, &(*p)->pSel, ODR_CONTEXT, 0, 0) &&
213 odr_implicit(o, z_InternationalString, &(*p)->sSel, ODR_CONTEXT, 1, 1) &&
214 odr_implicit(o, z_InternationalString, &(*p)->tSel, ODR_CONTEXT, 2, 1) &&
215 odr_implicit(o, z_InternationalString, &(*p)->nSap, ODR_CONTEXT, 3, 0) &&
219 int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt)
221 if (!odr_sequence_begin(o, p, sizeof(**p)))
224 odr_implicit(o, z_InternationalString, &(*p)->type, ODR_CONTEXT, 0, 0) &&
225 odr_implicit(o, z_InternationalString, &(*p)->address, ODR_CONTEXT, 1, 0) &&
229 int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt)
231 static Odr_arm arm[] =
233 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_NetworkAddress_iA,
235 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_NetworkAddress_oPA,
236 z_NetworkAddressOPA},
237 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_NetworkAddress_other,
238 z_NetworkAddressOther},
242 if (o->direction == ODR_DECODE)
243 *p = odr_malloc(o, sizeof(**p));
246 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
249 return opt && odr_ok(o);
252 int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt)
254 if (!odr_sequence_begin(o, p, sizeof(**p)))
255 return opt && odr_ok(o);
257 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
258 (odr_sequence_of(o, z_QueryTypeDetails, &(*p)->queryTypesSupported,
259 &(*p)->num_queryTypesSupported) || odr_ok(o)) &&
260 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
261 (odr_sequence_of(o, odr_oid, &(*p)->diagnosticsSets,
262 &(*p)->num_diagnosticsSets) || odr_ok(o)) &&
263 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
264 (odr_sequence_of(o, odr_oid, &(*p)->attributeSetIds,
265 &(*p)->num_attributeSetIds) || odr_ok(o)) &&
266 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
267 (odr_sequence_of(o, odr_oid, &(*p)->schemas, &(*p)->num_schemas) ||
269 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
270 (odr_sequence_of(o, odr_oid, &(*p)->recordSyntaxes,
271 &(*p)->num_recordSyntaxes) || odr_ok(o)) &&
272 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
273 (odr_sequence_of(o, odr_oid, &(*p)->resourceChallenges,
274 &(*p)->num_resourceChallenges) || odr_ok(o)) &&
275 odr_implicit(o, z_AccessRestrictions, &(*p)->restrictedAccess,
276 ODR_CONTEXT, 6, 1) &&
277 odr_implicit(o, z_Costs, &(*p)->costInfo, ODR_CONTEXT, 8, 1) &&
278 odr_implicit_settag(o, ODR_CONTEXT, 9) &&
279 (odr_sequence_of(o, odr_oid, &(*p)->variantSets,
280 &(*p)->num_variantSets) || odr_ok(o)) &&
281 odr_implicit_settag(o, ODR_CONTEXT, 10) &&
282 (odr_sequence_of(o, z_ElementSetName, &(*p)->elementSetNames,
283 &(*p)->num_elementSetNames) || odr_ok(o)) &&
284 odr_implicit_settag(o, ODR_CONTEXT, 11) &&
285 (odr_sequence_of(o, z_InternationalString, &(*p)->unitSystems,
286 &(*p)->num_unitSystems) || odr_ok(o)) &&
290 int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt)
292 static Odr_arm arm[] =
294 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_QueryTypeDetails_private,
295 z_PrivateCapabilities},
296 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_QueryTypeDetails_rpn,
298 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_QueryTypeDetails_iso8777,
299 z_Iso8777Capabilities},
300 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_QueryTypeDetails_z3958,
302 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_QueryTypeDetails_erpn,
304 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_QueryTypeDetails_rankedList,
309 if (o->direction == ODR_DECODE)
310 *p = odr_malloc(o, sizeof(**p));
313 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
316 return opt && odr_ok(o);
319 int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt)
321 if (!odr_sequence_begin(o, p, sizeof(**p)))
322 return opt && odr_ok(o);
324 odr_implicit(o, z_InternationalString, &(*p)->operator, ODR_CONTEXT, 0, 0) &&
325 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
329 int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt)
331 if (!odr_sequence_begin(o, p, sizeof(**p)))
332 return opt && odr_ok(o);
334 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
335 (odr_sequence_of(o, z_PrivateCapOperator, &(*p)->operators,
336 &(*p)->num_operators) || odr_ok(o)) &&
337 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
338 (odr_sequence_of(o, z_SearchKey, &(*p)->searchKeys,
339 &(*p)->num_searchKeys) || odr_ok(o)) &&
340 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
341 (odr_sequence_of(o, z_HumanString, &(*p)->description,
342 &(*p)->num_description) || odr_ok(o)) &&
346 int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt)
348 if (!odr_sequence_begin(o, p, sizeof(**p)))
349 return opt && odr_ok(o);
351 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
352 (odr_sequence_of(o, odr_integer, &(*p)->operators, &(*p)->num_operators) || odr_ok(o)) &&
353 odr_implicit(o, odr_bool, &(*p)->resultSetAsOperandSupported,
354 ODR_CONTEXT, 1, 0) &&
355 odr_implicit(o, odr_bool, &(*p)->restrictionOperandSupported,
356 ODR_CONTEXT, 2, 0) &&
357 odr_implicit(o, z_ProximitySupport, &(*p)->proximity, ODR_CONTEXT,
362 int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt)
364 if (!odr_sequence_begin(o, p, sizeof(**p)))
365 return opt && odr_ok(o);
367 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
368 odr_sequence_of(o, z_SearchKey, &(*p)->searchKeys,
369 &(*p)->num_searchKeys) &&
370 odr_implicit(o, z_HumanString, &(*p)->restrictions, ODR_CONTEXT,
375 int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt)
377 if (!odr_sequence_begin(o, p, sizeof(**p)))
378 return opt && odr_ok(o);
380 odr_implicit(o, odr_integer, &(*p)->unit, ODR_CONTEXT, 0, 0) &&
381 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
385 int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt)
387 static Odr_arm arm[] =
389 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ProxSupportUnit_known,
391 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ProxSupportUnit_private,
392 z_ProxSupportPrivate},
396 if (o->direction == ODR_DECODE)
397 *p = odr_malloc(o, sizeof(**p));
400 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
403 return opt && odr_ok(o);
406 int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt)
408 if (!odr_sequence_begin(o, p, sizeof(**p)))
409 return opt && odr_ok(o);
411 odr_implicit(o, odr_bool, &(*p)->anySupport, ODR_CONTEXT, 0, 0) &&
412 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
413 (odr_sequence_of(o, z_ProxSupportUnit, &(*p)->unitsSupported,
414 &(*p)->num_unitsSupported) || odr_ok(o)) &&
418 int z_SearchKey(ODR o, Z_SearchKey **p, int opt)
420 if (!odr_sequence_begin(o, p, sizeof(**p)))
421 return opt && odr_ok(o);
423 odr_implicit(o, z_InternationalString, &(*p)->searchKey, ODR_CONTEXT, 0, 0) &&
424 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
428 int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt)
430 if (!odr_sequence_begin(o, p, sizeof(**p)))
431 return opt && odr_ok(o);
433 odr_explicit(o, odr_integer, &(*p)->accessType, ODR_CONTEXT, 0, 0) &&
434 odr_implicit(o, z_HumanString, &(*p)->accessText, ODR_CONTEXT, 1, 1) &&
435 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
436 (odr_sequence_of(o, odr_oid, &(*p)->accessChallenges,
437 &(*p)->num_accessChallenges) || odr_ok(o)) &&
441 int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt)
443 if (o->direction == ODR_DECODE)
444 *p = odr_malloc(o, sizeof(**p));
447 if (odr_sequence_of(o, z_AccessRestrictionsUnit, &(*p)->restrictions,
448 &(*p)->num_restrictions))
451 return opt && odr_ok(o);
454 int z_CostsOtherCharge(ODR o, Z_CostsOtherCharge **p, int opt)
456 if (!odr_sequence_begin(o, p, sizeof(**p)))
457 return opt && odr_ok(o);
459 odr_implicit(o, z_HumanString, &(*p)->forWhat, ODR_CONTEXT, 1, 0) &&
460 odr_implicit(o, z_Charge, &(*p)->charge, ODR_CONTEXT, 2, 1) &&
464 int z_Costs(ODR o, Z_Costs **p, int opt)
466 if (!odr_sequence_begin(o, p, sizeof(**p)))
467 return opt && odr_ok(o);
469 odr_implicit(o, z_Charge, &(*p)->connectCharge, ODR_CONTEXT, 0, 1) &&
470 odr_implicit(o, z_Charge, &(*p)->connectTime, ODR_CONTEXT, 1, 1) &&
471 odr_implicit(o, z_Charge, &(*p)->displayCharge, ODR_CONTEXT, 2, 1) &&
472 odr_implicit(o, z_Charge, &(*p)->searchCharge, ODR_CONTEXT, 3, 1) &&
473 odr_implicit(o, z_Charge, &(*p)->subscriptCharge, ODR_CONTEXT, 4, 1) &&
474 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
475 (odr_sequence_of(o, z_CostsOtherCharge, &(*p)->otherCharges,
476 &(*p)->num_otherCharges) || odr_ok(o)) &&
480 int z_Charge(ODR o, Z_Charge **p, int opt)
482 if (!odr_sequence_begin(o, p, sizeof(**p)))
483 return opt && odr_ok(o);
485 odr_implicit(o, z_IntUnit, &(*p)->cost, ODR_CONTEXT, 1, 0) &&
486 odr_implicit(o, z_Unit, &(*p)->perWhat, ODR_CONTEXT, 2, 1) &&
487 odr_implicit(o, z_HumanString, &(*p)->text, ODR_CONTEXT, 3, 1) &&
491 int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt)
493 if (o->direction == ODR_DECODE)
494 *p = odr_malloc(o, sizeof(**p));
497 if (odr_sequence_of(o, z_DatabaseName, &(*p)->databases,
498 &(*p)->num_databases))
501 return opt && odr_ok(o);
504 int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt)
506 if (!odr_sequence_begin(o, p, sizeof(**p)))
507 return opt && odr_ok(o);
509 odr_implicit(o, odr_oid, &(*p)->defaultAttributeSet,
510 ODR_CONTEXT, 0, 0) &&
511 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
512 odr_sequence_of(o, z_AttributeCombination, &(*p)->legalCombinations,
513 &(*p)->num_legalCombinations) &&
517 int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt)
519 if (o->direction == ODR_DECODE)
520 *p = odr_malloc(o, sizeof(**p));
523 if (odr_sequence_of(o, z_AttributeOccurrence, &(*p)->occurrences,
524 &(*p)->num_occurrences))
527 return opt && odr_ok(o);
530 int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt)
532 if (o->direction == ODR_DECODE)
533 *p = odr_malloc(o, sizeof(**p));
536 if (odr_sequence_of(o, z_StringOrNumeric, &(*p)->attributes,
537 &(*p)->num_attributes))
540 return opt && odr_ok(o);
543 int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt)
545 static Odr_arm arm[] =
547 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_AttributeOcc_anyOrNone, odr_null},
548 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_AttributeOcc_specific,
549 z_AttributeValueList},
553 if (!odr_sequence_begin(o, p, sizeof(**p)))
554 return opt && odr_ok(o);
556 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 0, 1) &&
557 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 1, 0) &&
558 odr_implicit(o, odr_null, &(*p)->mustBeSupplied, ODR_CONTEXT, 2, 1) &&
559 odr_choice(o, arm, &(*p)->attributeValues, &(*p)->which) &&
563 int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt)
565 if (!odr_sequence_begin(o, p, sizeof(**p)))
566 return opt && odr_ok(o);
568 odr_explicit(o, z_StringOrNumeric, &(*p)->value, ODR_CONTEXT, 0, 0) &&
569 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
570 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
571 (odr_sequence_of(o, z_StringOrNumeric, &(*p)->subAttributes,
572 &(*p)->num_subAttributes) || odr_ok(o)) &&
573 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
574 (odr_sequence_of(o, z_StringOrNumeric, &(*p)->superAttributes,
575 &(*p)->num_superAttributes) || odr_ok(o)) &&
576 odr_implicit(o, odr_null, &(*p)->partialSupport, ODR_CONTEXT, 4, 1) &&
582 int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt)
584 if (!odr_sequence_begin(o, p, sizeof(**p)))
585 return opt && odr_ok(o);
587 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
588 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
590 odr_implicit(o, z_HumanString, &(*p)->recentNews, ODR_CONTEXT, 2, 1) &&
591 odr_implicit(o, z_IconObject, &(*p)->icon, ODR_CONTEXT, 3, 1) &&
592 odr_implicit(o, odr_bool, &(*p)->namedResultSets, ODR_CONTEXT, 4, 0) &&
593 odr_implicit(o, odr_bool, &(*p)->multipleDBsearch, ODR_CONTEXT, 5, 0) &&
594 odr_implicit(o, odr_integer, &(*p)->maxResultSets, ODR_CONTEXT, 6, 1) &&
595 odr_implicit(o, odr_integer, &(*p)->maxResultSize, ODR_CONTEXT, 7, 1) &&
596 odr_implicit(o, odr_integer, &(*p)->maxTerms, ODR_CONTEXT, 8, 1) &&
597 odr_implicit(o, z_IntUnit, &(*p)->timeoutInterval, ODR_CONTEXT, 9, 1) &&
598 odr_implicit(o, z_HumanString, &(*p)->welcomeMessage, ODR_CONTEXT,
600 odr_implicit(o, z_ContactInfo, &(*p)->contactInfo, ODR_CONTEXT,
602 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
604 odr_implicit_settag(o, ODR_CONTEXT, 13) &&
605 (odr_sequence_of(o, z_InternationalString, &(*p)->nicknames,
606 &(*p)->num_nicknames) || odr_ok(o)) &&
607 odr_implicit(o, z_HumanString, &(*p)->usageRest, ODR_CONTEXT, 14, 1) &&
608 odr_implicit(o, z_HumanString, &(*p)->paymentAddr, ODR_CONTEXT,
610 odr_implicit(o, z_HumanString, &(*p)->hours, ODR_CONTEXT, 16, 1) &&
611 odr_implicit_settag(o, ODR_CONTEXT, 17) &&
612 (odr_sequence_of(o, z_DatabaseList, &(*p)->dbCombinations,
613 &(*p)->num_dbCombinations) || odr_ok(o)) &&
614 odr_implicit_settag(o, ODR_CONTEXT, 18) &&
615 (odr_sequence_of(o, z_NetworkAddress, &(*p)->addresses,
616 &(*p)->num_addresses) || odr_ok(o)) &&
617 odr_implicit(o, z_AccessInfo, &(*p)->commonAccessInfo, ODR_CONTEXT,
622 int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt)
624 static Odr_arm arm[] =
626 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Exp_RecordCount_actualNumber,
628 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Exp_RecordCount_approxNumber,
633 if (!odr_sequence_begin(o, p, sizeof(**p)))
634 return opt && odr_ok(o);
636 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
637 odr_implicit(o, z_DatabaseName, &(*p)->name, ODR_CONTEXT, 1, 0) &&
638 odr_implicit(o, odr_null, &(*p)->explainDatabase, ODR_CONTEXT, 2, 1) &&
639 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
640 (odr_sequence_of(o, z_DatabaseName, &(*p)->nicknames,
641 &(*p)->num_nicknames) || odr_ok(o)) &&
642 odr_implicit(o, z_IconObject, &(*p)->icon, ODR_CONTEXT, 4, 1) &&
643 odr_implicit(o, odr_bool, &(*p)->userFee, ODR_CONTEXT, 5, 0) &&
644 odr_implicit(o, odr_bool, &(*p)->available, ODR_CONTEXT, 6, 0) &&
645 odr_implicit(o, z_HumanString, &(*p)->titleString, ODR_CONTEXT, 7, 1) &&
646 odr_implicit_settag(o, ODR_CONTEXT, 8) &&
647 (odr_sequence_of(o, z_HumanString, &(*p)->keywords,
648 &(*p)->num_keywords) || odr_ok(o)) &&
649 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 9, 1) &&
650 odr_implicit(o, z_DatabaseList, &(*p)->associatedDbs, ODR_CONTEXT,
652 odr_implicit(o, z_DatabaseList, &(*p)->subDbs, ODR_CONTEXT, 11, 1) &&
653 odr_implicit(o, z_HumanString, &(*p)->disclaimers, ODR_CONTEXT,
655 odr_implicit(o, z_HumanString, &(*p)->news, ODR_CONTEXT, 13, 1) &&
656 ((odr_constructed_begin(o, &(*p)->recordCount, ODR_CONTEXT, 14) &&
657 odr_choice(o, arm, &(*p)->recordCount, &(*p)->recordCount_which) &&
658 odr_constructed_end(o)) || odr_ok(o)) &&
659 odr_implicit(o, z_HumanString, &(*p)->defaultOrder, ODR_CONTEXT,
661 odr_implicit(o, odr_integer, &(*p)->avRecordSize, ODR_CONTEXT, 16, 1) &&
662 odr_implicit(o, odr_integer, &(*p)->maxRecordSize, ODR_CONTEXT,
664 odr_implicit(o, z_HumanString, &(*p)->hours, ODR_CONTEXT, 18, 1) &&
665 odr_implicit(o, z_HumanString, &(*p)->bestTime, ODR_CONTEXT, 19, 1) &&
666 odr_implicit(o, odr_generalizedtime, &(*p)->lastUpdate, ODR_CONTEXT,
668 odr_implicit(o, z_IntUnit, &(*p)->updateInterval, ODR_CONTEXT, 21, 1) &&
669 odr_implicit(o, z_HumanString, &(*p)->coverage, ODR_CONTEXT, 22, 1) &&
670 odr_implicit(o, odr_bool, &(*p)->proprietary, ODR_CONTEXT, 23, 1) &&
671 odr_implicit(o, z_HumanString, &(*p)->copyrightText, ODR_CONTEXT,
673 odr_implicit(o, z_HumanString, &(*p)->copyrightNotice, ODR_CONTEXT,
675 odr_implicit(o, z_ContactInfo, &(*p)->producerContactInfo, ODR_CONTEXT,
677 odr_implicit(o, z_ContactInfo, &(*p)->supplierContactInfo, ODR_CONTEXT,
679 odr_implicit(o, z_ContactInfo, &(*p)->submissionContactInfo,
680 ODR_CONTEXT, 28, 1) &&
681 odr_implicit(o, z_AccessInfo, &(*p)->accessInfo, ODR_CONTEXT, 29, 1) &&
685 int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt)
687 if (!odr_sequence_begin(o, p, sizeof(**p)))
690 odr_implicit(o, odr_integer, &(*p)->tagType, ODR_CONTEXT, 0, 0) &&
691 odr_implicit(o, odr_oid, &(*p)->tagSet, ODR_CONTEXT, 1, 1) &&
692 odr_implicit(o, odr_null, &(*p)->defaultTagType, ODR_CONTEXT, 2, 1) &&
696 int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt)
698 if (!odr_sequence_begin(o, p, sizeof(**p)))
699 return opt && odr_ok(o);
701 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
702 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 1, 0) &&
703 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
705 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 3, 1) &&
706 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
707 (odr_sequence_of(o, z_TagTypeMapping, &(*p)->tagTypeMapping,
708 &(*p)->num_tagTypeMapping) || odr_ok(o)) &&
709 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
710 (odr_sequence_of(o, z_ElementInfo, &(*p)->recordStructure,
711 &(*p)->num_recordStructure) || odr_ok(o)) &&
715 int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt)
717 if (!odr_sequence_begin(o, p, sizeof(**p)))
718 return opt && odr_ok(o);
720 odr_implicit(o, z_InternationalString, &(*p)->elementName, ODR_CONTEXT, 1, 0) &&
721 odr_implicit(o, z_Path, &(*p)->elementTagPath, ODR_CONTEXT, 2, 0) &&
722 odr_explicit(o, z_ElementDataType, &(*p)->dataType, ODR_CONTEXT, 3, 1) &&
723 odr_implicit(o, odr_bool, &(*p)->required, ODR_CONTEXT, 4, 0) &&
724 odr_implicit(o, odr_bool, &(*p)->repeatable, ODR_CONTEXT, 5, 0) &&
725 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 6, 1) &&
729 int z_PathUnit(ODR o, Z_PathUnit **p, int opt)
731 if (!odr_sequence_begin(o, p, sizeof(**p)))
734 odr_implicit(o, odr_integer, &(*p)->tagType, ODR_CONTEXT, 1, 0) &&
735 odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue, ODR_CONTEXT,
740 int z_Path(ODR o, Z_Path **p, int opt)
742 if (o->direction == ODR_DECODE)
743 *p = odr_malloc(o, sizeof(**p));
746 odr_implicit_settag(o, ODR_CONTEXT, 201);
747 if (odr_sequence_of(o, z_OtherInformationUnit, &(*p)->list,
751 return opt && odr_ok(o);
754 int z_ElementInfoList(ODR o, Z_Path **p, int opt)
756 if (o->direction == ODR_DECODE)
757 *p = odr_malloc(o, sizeof(**p));
760 odr_implicit_settag(o, ODR_CONTEXT, 201);
761 if (odr_sequence_of(o, z_OtherInformationUnit, &(*p)->list,
765 return opt && odr_ok(o);
768 int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt)
770 static Odr_arm arm[] =
772 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ElementDataType_primitive,
774 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ElementDataType_structured,
779 if (o->direction == ODR_DECODE)
780 *p = odr_malloc(o, sizeof(**p));
784 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
787 return opt && odr_ok(o);
790 int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt)
792 if (!odr_sequence_begin(o, p, sizeof(**p)))
795 odr_implicit(o, z_InternationalString, &(*p)->elementName,
796 ODR_CONTEXT, 1, 0) &&
797 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
798 (odr_sequence_of(o, z_InternationalString, &(*p)->nicknames,
799 &(*p)->num_nicknames) || odr_ok(o)) &&
800 odr_explicit(o, z_StringOrNumeric, &(*p)->elementTag, ODR_CONTEXT,
802 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
804 odr_implicit(o, odr_integer, &(*p)->dataType, ODR_CONTEXT, 5, 1) &&
805 z_OtherInformation(o, &(*p)->otherTagInfo, 1) &&
809 int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt)
811 if (!odr_sequence_begin(o, p, sizeof(**p)))
812 return opt && odr_ok(o);
814 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
815 odr_implicit(o, odr_oid, &(*p)->tagSet, ODR_CONTEXT, 1, 0) &&
816 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
818 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
820 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
821 (odr_sequence_of(o, z_TagSetInfoElements, &(*p)->elements,
822 &(*p)->num_elements) || odr_ok(o)) &&
826 int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt)
828 if (!odr_sequence_begin(o, p, sizeof(**p)))
829 return opt && odr_ok(o);
831 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
832 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 1, 0) &&
833 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
835 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
836 (odr_sequence_of(o, odr_oid, &(*p)->transferSyntaxes,
837 &(*p)->num_transferSyntaxes) || odr_ok(o)) &&
838 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
839 odr_implicit(o, z_InternationalString, &(*p)->asn1Module, ODR_CONTEXT,
841 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
842 (odr_sequence_of(o, z_ElementInfo, &(*p)->abstractStructure,
843 &(*p)->num_abstractStructure) || odr_ok(o)) &&
847 int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt)
849 if (!odr_sequence_begin(o, p, sizeof(**p)))
850 return opt && odr_ok(o);
852 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
853 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 1, 0) &&
854 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 2, 0) &&
855 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
856 (odr_sequence_of(o, z_AttributeType, &(*p)->attributes,
857 &(*p)->num_attributes) || odr_ok(o)) &&
858 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
862 int z_AttributeType(ODR o, Z_AttributeType **p, int opt)
864 if (!odr_sequence_begin(o, p, sizeof(**p)))
865 return opt && odr_ok(o);
867 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
868 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
869 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 2, 0) &&
870 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
871 odr_sequence_of(o, z_AttributeDescription, &(*p)->attributeValues,
872 &(*p)->num_attributeValues) &&
876 int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt)
878 if (!odr_sequence_begin(o, p, sizeof(**p)))
879 return opt && odr_ok(o);
881 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
882 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
883 odr_explicit(o, z_StringOrNumeric, &(*p)->attributeValue, ODR_CONTEXT, 2, 0) &&
884 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
885 (odr_sequence_of(o, z_StringOrNumeric, &(*p)->equivalentAttributes,
886 &(*p)->num_equivalentAttributes) || odr_ok(o)) &&
890 int z_TermListElement(ODR o, Z_TermListElement **p, int opt)
892 if (!odr_sequence_begin(o, p, sizeof(**p)))
893 return opt && odr_ok(o);
895 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 1, 0) &&
896 odr_implicit(o, z_HumanString, &(*p)->title, ODR_CONTEXT, 2, 1) &&
897 odr_implicit(o, odr_integer, &(*p)->searchCost, ODR_CONTEXT, 3, 1) &&
898 odr_implicit(o, odr_bool, &(*p)->scanable, ODR_CONTEXT, 4, 0) &&
899 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
900 (odr_sequence_of(o, z_InternationalString, &(*p)->broader,
901 &(*p)->num_broader) || odr_ok(o)) &&
902 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
903 (odr_sequence_of(o, z_InternationalString, &(*p)->narrower,
904 &(*p)->num_narrower) || odr_ok(o)) &&
908 int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt)
910 if (!odr_sequence_begin(o, p, sizeof(**p)))
911 return opt && odr_ok(o);
913 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
914 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
916 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
917 (odr_sequence_of(o, z_TermListElement, &(*p)->termLists,
918 &(*p)->num_termLists) || odr_ok(o)) &&
922 int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt)
924 if (!odr_sequence_begin(o, p, sizeof(**p)))
925 return opt && odr_ok(o);
927 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
928 odr_implicit(o, odr_oid, &(*p)->type, ODR_CONTEXT, 1, 0) &&
929 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 2, 1) &&
930 odr_implicit(o, odr_bool, &(*p)->privateType, ODR_CONTEXT, 3, 0) &&
931 odr_implicit(o, odr_bool, &(*p)->restrictionsApply, ODR_CONTEXT, 5, 0) &&
932 odr_implicit(o, odr_bool, &(*p)->feeApply, ODR_CONTEXT, 6, 0) &&
933 odr_implicit(o, odr_bool, &(*p)->available, ODR_CONTEXT, 7, 0) &&
934 odr_implicit(o, odr_bool, &(*p)->retentionSupported, ODR_CONTEXT, 8, 0) &&
935 odr_implicit(o, odr_integer, &(*p)->waitAction, ODR_CONTEXT, 9, 0) &&
936 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 10, 1) &&
937 odr_implicit(o, z_External, &(*p)->specificExplain, ODR_CONTEXT, 11, 1) &&
938 odr_implicit(o, z_InternationalString, &(*p)->esASN, ODR_CONTEXT, 12, 1) &&
942 int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt)
944 if (!odr_sequence_begin(o, p, sizeof(**p)))
945 return opt && odr_ok(o);
947 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
948 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) &&
949 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
950 (odr_sequence_of(o, z_AttributeSetDetails, &(*p)->attributesBySet,
951 &(*p)->num_attributesBySet) && odr_ok(o)) &&
952 odr_implicit(o, z_AttributeCombinations, &(*p)->attributeCombinations, ODR_CONTEXT, 3, 1) &&
956 int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt)
958 if (!odr_sequence_begin(o, p, sizeof(**p)))
959 return opt && odr_ok(o);
961 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT,
963 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
964 odr_sequence_of(o, z_AttributeTypeDetails, &(*p)->attributesByType,
965 &(*p)->num_attributesByType) &&
969 int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt)
971 if (!odr_sequence_begin(o, p, sizeof(**p)))
972 return opt && odr_ok(o);
974 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 0, 0) &&
975 odr_implicit(o, z_OmittedAttributeInterpretation, &(*p)->optionalType, ODR_CONTEXT, 1, 1) &&
976 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
977 (odr_sequence_of(o, z_AttributeValue, &(*p)->attributeValues,
978 &(*p)->num_attributeValues) || odr_ok(o)) &&
982 int z_OmittedAttributeInterpretation(ODR o, Z_OmittedAttributeInterpretation **p, int opt)
984 if (!odr_sequence_begin(o, p, sizeof(**p)))
985 return opt && odr_ok(o);
987 odr_explicit(o, z_StringOrNumeric, &(*p)->defaultValue, ODR_CONTEXT, 0, 1) &&
988 odr_implicit(o, z_HumanString, &(*p)->defaultDescription, ODR_CONTEXT, 1, 1) &&
992 int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt)
994 if (!odr_sequence_begin(o, p, sizeof(**p)))
995 return opt && odr_ok(o);
997 odr_implicit(o, odr_integer, &(*p)->maxStepSize, ODR_CONTEXT, 0, 1) &&
998 odr_implicit(o, z_HumanString, &(*p)->collatingSequence, ODR_CONTEXT, 1, 1) &&
999 odr_implicit(o, odr_bool, &(*p)->increasing, ODR_CONTEXT, 2, 1) &&
1000 odr_sequence_end(o);
1003 int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt)
1005 if (!odr_sequence_begin(o, p, sizeof(**p)))
1006 return opt && odr_ok(o);
1008 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1009 odr_implicit(o, z_InternationalString, &(*p)->termListName, ODR_CONTEXT, 1, 0) &&
1010 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 2, 1) &&
1011 odr_implicit(o, z_AttributeCombinations, &(*p)->attributes, ODR_CONTEXT, 3, 1) &&
1012 odr_implicit(o, z_EScanInfo, &(*p)->scanInfo, ODR_CONTEXT, 4, 1) &&
1013 odr_implicit(o, odr_integer, &(*p)->estNumberTerms, ODR_CONTEXT, 5, 1) &&
1014 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
1015 (odr_sequence_of(o, z_Term, &(*p)->sampleTerms,
1016 &(*p)->num_sampleTerms) || odr_ok(o)) &&
1017 odr_sequence_end(o);
1020 int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt)
1022 if (!odr_sequence_begin(o, p, sizeof(**p)))
1023 return opt && odr_ok(o);
1025 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1026 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) &&
1027 odr_implicit(o, z_ElementSetName, &(*p)->elementSetName, ODR_CONTEXT, 2, 0) &&
1028 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 3, 0) &&
1029 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 4, 0) &&
1030 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 5, 1) &&
1031 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
1032 (odr_sequence_of(o, z_PerElementDetails, &(*p)->detailsPerElement, &(*p)->num_detailsPerElement) || odr_ok(o)) &&
1033 odr_sequence_end(o);
1036 int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt)
1038 if (!odr_sequence_begin(o, p, sizeof(**p)))
1039 return opt && odr_ok(o);
1041 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1042 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) &&
1043 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 2, 0) &&
1044 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 3, 0) &&
1045 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
1046 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
1047 (odr_sequence_of(o, z_PerElementDetails, &(*p)->detailsPerElement,
1048 &(*p)->num_detailsPerElement) || odr_ok(o)) &&
1049 odr_sequence_end(o);
1052 int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt)
1054 if (!odr_sequence_begin(o, p, sizeof(**p)))
1055 return opt && odr_ok(o);
1057 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
1058 odr_implicit(o, z_RecordTag, &(*p)->recordTag, ODR_CONTEXT, 1, 1) &&
1059 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1060 (odr_sequence_of(o, z_Path, &(*p)->schemaTags, &(*p)->num_schemaTags) ||
1062 odr_implicit(o, odr_integer, &(*p)->maxSize, ODR_CONTEXT, 3, 1) &&
1063 odr_implicit(o, odr_integer, &(*p)->minSize, ODR_CONTEXT, 4, 1) &&
1064 odr_implicit(o, odr_integer, &(*p)->avgSize, ODR_CONTEXT, 5, 1) &&
1065 odr_implicit(o, odr_integer, &(*p)->fixedSize, ODR_CONTEXT, 6, 1) &&
1066 odr_implicit(o, odr_bool, &(*p)->repeatable, ODR_CONTEXT, 8, 0) &&
1067 odr_implicit(o, odr_bool, &(*p)->required, ODR_CONTEXT, 9, 0) &&
1068 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 12, 1) &&
1069 odr_implicit(o, z_HumanString, &(*p)->contents, ODR_CONTEXT, 13, 1) &&
1070 odr_implicit(o, z_HumanString, &(*p)->billingInfo, ODR_CONTEXT, 14, 1) &&
1071 odr_implicit(o, z_HumanString, &(*p)->restrictions, ODR_CONTEXT, 15, 1) &&
1072 odr_implicit_settag(o, ODR_CONTEXT, 16) &&
1073 (odr_sequence_of(o, z_InternationalString, &(*p)->alternateNames,
1074 &(*p)->num_alternateNames) || odr_ok(o)) &&
1075 odr_implicit_settag(o, ODR_CONTEXT, 17) &&
1076 (odr_sequence_of(o, z_InternationalString, &(*p)->genericNames,
1077 &(*p)->num_genericNames) || odr_ok(o)) &&
1078 odr_implicit(o, z_AttributeCombinations, &(*p)->searchAccess,
1079 ODR_CONTEXT, 18, 1) &&
1080 odr_sequence_end(o);
1083 int z_RecordTag(ODR o, Z_RecordTag **p, int opt)
1085 if (!odr_sequence_begin(o, p, sizeof(**p)))
1086 return opt && odr_ok(o);
1088 odr_explicit(o, z_StringOrNumeric, &(*p)->qualifier, ODR_CONTEXT,
1090 odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue, ODR_CONTEXT,
1092 odr_sequence_end(o);
1095 int z_SortDetails(ODR o, Z_SortDetails **p, int opt)
1097 if (!odr_sequence_begin(o, p, sizeof(**p)))
1098 return opt && odr_ok(o);
1100 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1101 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
1103 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1104 (odr_sequence_of(o, z_SortKeyDetails, &(*p)->sortKeys,
1105 &(*p)->num_sortKeys) || odr_ok(o)) &&
1106 odr_sequence_end(o);
1109 int z_SortKeyDetailsSortType(ODR o, Z_SortKeyDetailsSortType **p, int opt)
1111 static Odr_arm arm[] =
1113 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_character,
1115 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_numeric,
1117 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_structured,
1122 if (o->direction == ODR_DECODE)
1123 *p = odr_malloc(o, sizeof(**p));
1126 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1129 return opt && odr_ok(o);
1132 int z_SortKeyDetails(ODR o, Z_SortKeyDetails **p, int opt)
1134 if (!odr_sequence_begin(o, p, sizeof(**p)))
1135 return opt && odr_ok(o);
1137 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 0, 1) &&
1138 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
1139 (odr_sequence_of(o, z_Specification, &(*p)->elementSpecifications,
1140 &(*p)->num_elementSpecifications) || odr_ok(o)) &&
1141 odr_implicit(o, z_AttributeCombinations, &(*p)->attributeSpecifications,
1142 ODR_CONTEXT, 2, 1) &&
1143 odr_explicit(o, z_SortKeyDetailsSortType, &(*p)->sortType, ODR_CONTEXT,
1145 odr_implicit(o, odr_integer, &(*p)->caseSensitivity, ODR_CONTEXT,
1147 odr_sequence_end(o);
1150 int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt)
1152 if (!odr_sequence_begin(o, p, sizeof(**p)))
1153 return opt && odr_ok(o);
1155 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1156 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
1158 odr_implicit(o, odr_integer, &(*p)->processingContext, ODR_CONTEXT,
1160 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1162 odr_implicit(o, odr_oid, &(*p)->oid, ODR_CONTEXT, 4, 0) &&
1163 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 5, 1) &&
1164 odr_implicit(o, z_External, &(*p)->instructions, ODR_CONTEXT, 6, 1) &&
1165 odr_sequence_end(o);
1168 int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt)
1170 if (!odr_sequence_begin(o, p, sizeof(**p)))
1171 return opt && odr_ok(o);
1173 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1174 odr_implicit(o, odr_oid, &(*p)->variantSet, ODR_CONTEXT, 1, 0) &&
1175 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1177 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1178 (odr_sequence_of(o, z_VariantClass, &(*p)->variants,
1179 &(*p)->num_variants) || odr_ok(o)) &&
1180 odr_sequence_end(o);
1183 int z_VariantClass(ODR o, Z_VariantClass **p, int opt)
1185 if (!odr_sequence_begin(o, p, sizeof(**p)))
1186 return opt && odr_ok(o);
1188 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1190 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1191 odr_implicit(o, odr_integer, &(*p)->variantClass, ODR_CONTEXT, 2, 0) &&
1192 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1193 odr_sequence_of(o, z_VariantType, &(*p)->variantTypes,
1194 &(*p)->num_variantTypes) &&
1195 odr_sequence_end(o);
1198 int z_VariantType(ODR o, Z_VariantType **p, int opt)
1200 if (!odr_sequence_begin(o, p, sizeof(**p)))
1201 return opt && odr_ok(o);
1203 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
1204 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1205 odr_implicit(o, odr_integer, &(*p)->variantType, ODR_CONTEXT, 2, 0) &&
1206 odr_implicit(o, z_VariantValue, &(*p)->variantValue, ODR_CONTEXT, 3, 1) &&
1207 odr_sequence_end(o);
1210 int z_VariantValue(ODR o, Z_VariantValue **p, int opt)
1212 if (!odr_sequence_begin(o, p, sizeof(**p)))
1213 return opt && odr_ok(o);
1215 odr_explicit(o, odr_integer, &(*p)->dataType, ODR_CONTEXT, 0, 0) &&
1216 odr_explicit(o, z_ValueSet, &(*p)->values, ODR_CONTEXT, 1, 1) &&
1217 odr_sequence_end(o);
1220 int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt)
1222 if (o->direction == ODR_DECODE)
1223 *p = odr_malloc(o, sizeof(**p));
1226 if (odr_sequence_of(o, z_ValueDescription, &(*p)->enumerated,
1227 &(*p)->num_enumerated))
1230 return opt && odr_ok(o);
1233 int z_ValueSet(ODR o, Z_ValueSet **p, int opt)
1235 static Odr_arm arm[] =
1237 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ValueSet_range, z_ValueRange},
1238 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueSet_enumerated,
1239 z_ValueSetEnumerated},
1243 if (o->direction == ODR_DECODE)
1244 *p = odr_malloc(o, sizeof(**p));
1247 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1250 return opt && odr_ok(o);
1253 int z_ValueRange(ODR o, Z_ValueRange **p, int opt)
1255 if (!odr_sequence_begin(o, p, sizeof(**p)))
1256 return opt && odr_ok(o);
1258 odr_explicit(o, z_ValueDescription, &(*p)->lower, ODR_CONTEXT, 0, 1) &&
1259 odr_explicit(o, z_ValueDescription, &(*p)->upper, ODR_CONTEXT, 1, 1) &&
1260 odr_sequence_end(o);
1263 int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt)
1265 static Odr_arm arm[] =
1267 {ODR_NONE, -1, -1, Z_ValueDescription_integer, odr_integer},
1268 {ODR_NONE, -1, -1, Z_ValueDescription_string, z_InternationalString},
1269 {ODR_NONE, -1, -1, Z_ValueDescription_octets, odr_octetstring},
1270 {ODR_NONE, -1, -1, Z_ValueDescription_oid, odr_oid},
1271 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueDescription_unit, z_Unit},
1272 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ValueDescription_valueAndUnit, z_IntUnit},
1276 if (o->direction == ODR_DECODE)
1277 *p = odr_malloc(o, sizeof(**p));
1279 return opt && odr_ok(o);
1280 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1283 return opt && odr_ok(o);
1286 int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt)
1288 if (!odr_sequence_begin(o, p, sizeof(**p)))
1289 return opt && odr_ok(o);
1291 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1292 odr_implicit(o, z_InternationalString, &(*p)->unitSystem, ODR_CONTEXT,
1294 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 2, 1) &&
1295 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1296 (odr_sequence_of(o, z_UnitType, &(*p)->units, &(*p)->num_units) ||
1298 odr_sequence_end(o);
1301 int z_UnitType(ODR o, Z_UnitType **p, int opt)
1303 if (!odr_sequence_begin(o, p, sizeof(**p)))
1304 return opt && odr_ok(o);
1306 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1308 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1309 odr_explicit(o, z_StringOrNumeric, &(*p)->unitType, ODR_CONTEXT,
1311 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1312 odr_sequence_of(o, z_Units, &(*p)->units, &(*p)->num_units) &&
1313 odr_sequence_end(o);
1316 int z_Units(ODR o, Z_Units **p, int opt)
1318 if (!odr_sequence_begin(o, p, sizeof(**p)))
1319 return opt && odr_ok(o);
1321 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
1322 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1323 odr_explicit(o, z_StringOrNumeric, &(*p)->unit, ODR_CONTEXT, 2, 0) &&
1324 odr_sequence_end(o);
1327 int z_CategoryList(ODR o, Z_CategoryList **p, int opt)
1329 if (!odr_sequence_begin(o, p, sizeof(**p)))
1330 return opt && odr_ok(o);
1332 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1333 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
1334 odr_sequence_of(o, z_CategoryInfo, &(*p)->categories,
1335 &(*p)->num_categories) &&
1336 odr_sequence_end(o);
1339 int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt)
1341 if (!odr_sequence_begin(o, p, sizeof(**p)))
1342 return opt && odr_ok(o);
1344 odr_implicit(o, z_InternationalString, &(*p)->category, ODR_CONTEXT,
1346 odr_implicit(o, z_InternationalString, &(*p)->originalCategory,
1347 ODR_CONTEXT, 2, 1) &&
1348 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 3, 1) &&
1349 odr_implicit(o, z_InternationalString, &(*p)->asn1Module, ODR_CONTEXT,
1351 odr_sequence_end(o);
1354 int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt)
1356 static Odr_arm arm[] =
1358 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Explain_targetInfo, z_TargetInfo},
1359 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Explain_databaseInfo, z_DatabaseInfo},
1360 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_Explain_schemaInfo, z_SchemaInfo},
1361 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_Explain_tagSetInfo, z_TagSetInfo},
1362 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_Explain_recordSyntaxInfo,
1363 z_RecordSyntaxInfo},
1364 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_Explain_attributeSetInfo,
1365 z_AttributeSetInfo},
1366 {ODR_IMPLICIT, ODR_CONTEXT, 6, Z_Explain_termListInfo,
1368 {ODR_IMPLICIT, ODR_CONTEXT, 7, Z_Explain_extendedServicesInfo,
1369 z_ExtendedServicesInfo},
1370 {ODR_IMPLICIT, ODR_CONTEXT, 8, Z_Explain_attributeDetails,
1371 z_AttributeDetails},
1372 {ODR_IMPLICIT, ODR_CONTEXT, 9, Z_Explain_termListDetails,
1374 {ODR_IMPLICIT, ODR_CONTEXT, 10, Z_Explain_elementSetDetails,
1375 z_ElementSetDetails},
1376 {ODR_IMPLICIT, ODR_CONTEXT, 11, Z_Explain_retrievalRecordDetails,
1377 z_RetrievalRecordDetails},
1378 {ODR_IMPLICIT, ODR_CONTEXT, 12, Z_Explain_sortDetails,
1380 {ODR_IMPLICIT, ODR_CONTEXT, 13, Z_Explain_processing,
1381 z_ProcessingInformation},
1382 {ODR_IMPLICIT, ODR_CONTEXT, 14, Z_Explain_variants,
1384 {ODR_IMPLICIT, ODR_CONTEXT, 15, Z_Explain_units, z_UnitInfo},
1385 {ODR_IMPLICIT, ODR_CONTEXT, 100, Z_Explain_categoryList,
1390 if (o->direction == ODR_DECODE)
1391 *p = odr_malloc(o, sizeof(**p));
1394 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1397 return opt && odr_ok(o);