2 * Copyright (c) 1995, Index Data.
3 * See the file LICENSE for details.
4 * Sebastian Hammer, Adam Dickmeiss
7 * Revision 1.3 1995-09-27 15:02:42 quinn
8 * Modified function heads & prototypes.
10 * Revision 1.2 1995/08/15 11:59:43 quinn
13 * Revision 1.1 1995/08/10 08:54:02 quinn
21 int z_LanguageCode(ODR o, char **p, int opt);
22 int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt);
23 int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt);
24 int z_HumanString(ODR o, Z_HumanString **p, int opt);
25 int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt);
26 int z_IconObject(ODR o, Z_IconObject **p, int opt);
27 int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt);
28 int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt);
29 int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt);
30 int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt);
31 int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt);
32 int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt);
33 int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt);
34 int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt);
35 int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt);
36 int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt);
37 int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt);
38 int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt);
39 int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt);
40 int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt);
41 int z_SearchKey(ODR o, Z_SearchKey **p, int opt);
42 int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt);
43 int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt);
44 int z_CostsOtherCharge(ODR o, Z_CostsOtherCharge **p, int opt);
45 int z_Costs(ODR o, Z_Costs **p, int opt);
46 int z_Charge(ODR o, Z_Charge **p, int opt);
47 int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt);
48 int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt);
49 int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt);
50 int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt);
51 int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt);
52 int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt);
53 int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt);
54 int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt);
55 int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt);
56 int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt);
57 int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt);
58 int z_PathUnit(ODR o, Z_PathUnit **p, int opt);
59 int z_Path(ODR o, Z_Path **p, int opt);
60 int z_ElementInfoList(ODR o, Z_Path **p, int opt);
61 int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt);
62 int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt);
63 int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt);
64 int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt);
65 int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt);
66 int z_AttributeType(ODR o, Z_AttributeType **p, int opt);
67 int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt);
68 int z_TermListElement(ODR o, Z_TermListElement **p, int opt);
69 int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt);
70 int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt);
71 int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt);
72 int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt);
73 int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt);
74 int z_OmittedAttributeInterpretation(ODR o, Z_OmittedAttributeInterpretation **p, int opt);
75 int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt);
76 int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt);
77 int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt);
78 int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt);
79 int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt);
80 int z_RecordTag(ODR o, Z_RecordTag **p, int opt);
81 int z_SortDetails(ODR o, Z_SortDetails **p, int opt);
82 int z_SortKeyDetailsSortType(ODR o, Z_SortKeyDetailsSortType **p, int opt);
83 int z_SortKeyDetails(ODR o, Z_SortKeyDetails **p, int opt);
84 int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt);
85 int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt);
86 int z_VariantClass(ODR o, Z_VariantClass **p, int opt);
87 int z_VariantType(ODR o, Z_VariantType **p, int opt);
88 int z_VariantValue(ODR o, Z_VariantValue **p, int opt);
89 int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt);
90 int z_ValueSet(ODR o, Z_ValueSet **p, int opt);
91 int z_ValueRange(ODR o, Z_ValueRange **p, int opt);
92 int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt);
93 int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt);
94 int z_UnitType(ODR o, Z_UnitType **p, int opt);
95 int z_Units(ODR o, Z_Units **p, int opt);
96 int z_CategoryList(ODR o, Z_CategoryList **p, int opt);
97 int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt);
98 int MDF z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt);
100 int z_LanguageCode(ODR o, char **p, int opt)
102 return z_InternationalString(o, p, opt);
105 int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt)
107 if (!odr_sequence_begin(o, p, sizeof(**p)))
108 return opt && odr_ok(o);
110 odr_implicit(o, odr_generalizedtime, &(*p)->dateAdded, ODR_CONTEXT, 0, 1) &&
111 odr_implicit(o, odr_generalizedtime, &(*p)->dateChanged, ODR_CONTEXT, 1, 1) &&
112 odr_implicit(o, odr_generalizedtime, &(*p)->expiry, ODR_CONTEXT, 2, 1) &&
113 odr_implicit(o, z_LanguageCode, &(*p)->humanStringLanguage, ODR_CONTEXT, 3, 1) &&
114 z_OtherInformation(o, &(*p)->otherInfo, 1) &&
118 int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt)
120 if (!odr_sequence_begin(o, p, sizeof(**p)))
121 return opt && odr_ok(o);
123 odr_implicit(o, z_LanguageCode, &(*p)->language, ODR_CONTEXT, 0, 1) &&
124 odr_implicit(o, z_InternationalString, &(*p)->text, ODR_CONTEXT,
129 int z_HumanString(ODR o, Z_HumanString **p, int opt)
131 if (o->direction == ODR_DECODE)
132 *p = odr_malloc(o, sizeof(**p));
134 return opt && odr_ok(o);
135 if (odr_sequence_of(o, z_HumanStringUnit, &(*p)->strings,
139 return opt && odr_ok(o);
142 int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt)
144 static Odr_arm arm[] =
146 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IconObject_ianaType,
147 z_InternationalString},
148 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IconObject_z3950type,
149 z_InternationalString},
150 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IconObject_otherType,
151 z_InternationalString},
155 if (!odr_sequence_begin(o, p, sizeof(**p)))
156 return opt && odr_ok(o);
158 odr_constructed_begin(o, &(*p)->bodyType, ODR_CONTEXT, 1) &&
159 odr_choice(o, arm, &(*p)->bodyType, &(*p)->which) &&
160 odr_constructed_end(o) &&
161 odr_implicit(o, odr_octetstring, &(*p)->content, ODR_CONTEXT, 2, 0) &&
165 int z_IconObject(ODR o, Z_IconObject **p, int opt)
167 if (o->direction == ODR_DECODE)
168 *p = odr_malloc(o, sizeof(**p));
171 if (odr_sequence_of(o, z_IconObjectUnit, &(*p)->iconUnits,
172 &(*p)->num_iconUnits))
175 return opt && odr_ok(o);
178 int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt)
180 if (!odr_sequence_begin(o, p, sizeof(**p)))
181 return opt && odr_ok(o);
183 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
184 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
185 odr_implicit(o, z_HumanString, &(*p)->address, ODR_CONTEXT, 2, 1) &&
186 odr_implicit(o, z_InternationalString, &(*p)->email, ODR_CONTEXT, 3, 1) &&
187 odr_implicit(o, z_InternationalString, &(*p)->phone, ODR_CONTEXT, 4, 1) &&
191 int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt)
193 if (!odr_sequence_begin(o, p, sizeof(**p)))
196 odr_implicit(o, z_InternationalString, &(*p)->hostAddress, ODR_CONTEXT, 0, 0) &&
197 odr_implicit(o, odr_integer, &(*p)->port, ODR_CONTEXT, 1, 0) &&
201 int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt)
203 if (!odr_sequence_begin(o, p, sizeof(**p)))
206 odr_implicit(o, z_InternationalString, &(*p)->pSel, ODR_CONTEXT, 0, 0) &&
207 odr_implicit(o, z_InternationalString, &(*p)->sSel, ODR_CONTEXT, 1, 1) &&
208 odr_implicit(o, z_InternationalString, &(*p)->tSel, ODR_CONTEXT, 2, 1) &&
209 odr_implicit(o, z_InternationalString, &(*p)->nSap, ODR_CONTEXT, 3, 0) &&
213 int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt)
215 if (!odr_sequence_begin(o, p, sizeof(**p)))
218 odr_implicit(o, z_InternationalString, &(*p)->type, ODR_CONTEXT, 0, 0) &&
219 odr_implicit(o, z_InternationalString, &(*p)->address, ODR_CONTEXT, 1, 0) &&
223 int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt)
225 static Odr_arm arm[] =
227 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_NetworkAddress_iA,
229 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_NetworkAddress_oPA,
230 z_NetworkAddressOPA},
231 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_NetworkAddress_other,
232 z_NetworkAddressOther},
236 if (o->direction == ODR_DECODE)
237 *p = odr_malloc(o, sizeof(**p));
240 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
243 return opt && odr_ok(o);
246 int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt)
248 if (!odr_sequence_begin(o, p, sizeof(**p)))
249 return opt && odr_ok(o);
251 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
252 (odr_sequence_of(o, z_QueryTypeDetails, &(*p)->queryTypesSupported,
253 &(*p)->num_queryTypesSupported) || odr_ok(o)) &&
254 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
255 (odr_sequence_of(o, odr_oid, &(*p)->diagnosticsSets,
256 &(*p)->num_diagnosticsSets) || odr_ok(o)) &&
257 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
258 (odr_sequence_of(o, odr_oid, &(*p)->attributeSetIds,
259 &(*p)->num_attributeSetIds) || odr_ok(o)) &&
260 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
261 (odr_sequence_of(o, odr_oid, &(*p)->schemas, &(*p)->num_schemas) ||
263 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
264 (odr_sequence_of(o, odr_oid, &(*p)->recordSyntaxes,
265 &(*p)->num_recordSyntaxes) || odr_ok(o)) &&
266 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
267 (odr_sequence_of(o, odr_oid, &(*p)->resourceChallenges,
268 &(*p)->num_resourceChallenges) || odr_ok(o)) &&
269 odr_implicit(o, z_AccessRestrictions, &(*p)->restrictedAccess,
270 ODR_CONTEXT, 6, 1) &&
271 odr_implicit(o, z_Costs, &(*p)->costInfo, ODR_CONTEXT, 8, 1) &&
272 odr_implicit_settag(o, ODR_CONTEXT, 9) &&
273 (odr_sequence_of(o, odr_oid, &(*p)->variantSets,
274 &(*p)->num_variantSets) || odr_ok(o)) &&
275 odr_implicit_settag(o, ODR_CONTEXT, 10) &&
276 (odr_sequence_of(o, z_ElementSetName, &(*p)->elementSetNames,
277 &(*p)->num_elementSetNames) || odr_ok(o)) &&
278 odr_implicit_settag(o, ODR_CONTEXT, 11) &&
279 (odr_sequence_of(o, z_InternationalString, &(*p)->unitSystems,
280 &(*p)->num_unitSystems) || odr_ok(o)) &&
284 int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt)
286 static Odr_arm arm[] =
288 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_QueryTypeDetails_private,
289 z_PrivateCapabilities},
290 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_QueryTypeDetails_rpn,
292 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_QueryTypeDetails_iso8777,
293 z_Iso8777Capabilities},
294 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_QueryTypeDetails_z3958,
296 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_QueryTypeDetails_erpn,
298 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_QueryTypeDetails_rankedList,
303 if (o->direction == ODR_DECODE)
304 *p = odr_malloc(o, sizeof(**p));
307 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
310 return opt && odr_ok(o);
313 int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt)
315 if (!odr_sequence_begin(o, p, sizeof(**p)))
316 return opt && odr_ok(o);
318 odr_implicit(o, z_InternationalString, &(*p)->operator, ODR_CONTEXT, 0, 0) &&
319 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
323 int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt)
325 if (!odr_sequence_begin(o, p, sizeof(**p)))
326 return opt && odr_ok(o);
328 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
329 (odr_sequence_of(o, z_PrivateCapOperator, &(*p)->operators,
330 &(*p)->num_operators) || odr_ok(o)) &&
331 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
332 (odr_sequence_of(o, z_SearchKey, &(*p)->searchKeys,
333 &(*p)->num_searchKeys) || odr_ok(o)) &&
334 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
335 (odr_sequence_of(o, z_HumanString, &(*p)->description,
336 &(*p)->num_description) || odr_ok(o)) &&
340 int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt)
342 if (!odr_sequence_begin(o, p, sizeof(**p)))
343 return opt && odr_ok(o);
345 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
346 (odr_sequence_of(o, odr_integer, &(*p)->operators, &(*p)->num_operators) || odr_ok(o)) &&
347 odr_implicit(o, odr_bool, &(*p)->resultSetAsOperandSupported,
348 ODR_CONTEXT, 1, 0) &&
349 odr_implicit(o, odr_bool, &(*p)->restrictionOperandSupported,
350 ODR_CONTEXT, 2, 0) &&
351 odr_implicit(o, z_ProximitySupport, &(*p)->proximity, ODR_CONTEXT,
356 int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt)
358 if (!odr_sequence_begin(o, p, sizeof(**p)))
359 return opt && odr_ok(o);
361 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
362 odr_sequence_of(o, z_SearchKey, &(*p)->searchKeys,
363 &(*p)->num_searchKeys) &&
364 odr_implicit(o, z_HumanString, &(*p)->restrictions, ODR_CONTEXT,
369 int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt)
371 if (!odr_sequence_begin(o, p, sizeof(**p)))
372 return opt && odr_ok(o);
374 odr_implicit(o, odr_integer, &(*p)->unit, ODR_CONTEXT, 0, 0) &&
375 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
379 int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt)
381 static Odr_arm arm[] =
383 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ProxSupportUnit_known,
385 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ProxSupportUnit_private,
386 z_ProxSupportPrivate},
390 if (o->direction == ODR_DECODE)
391 *p = odr_malloc(o, sizeof(**p));
394 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
397 return opt && odr_ok(o);
400 int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt)
402 if (!odr_sequence_begin(o, p, sizeof(**p)))
403 return opt && odr_ok(o);
405 odr_implicit(o, odr_bool, &(*p)->anySupport, ODR_CONTEXT, 0, 0) &&
406 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
407 (odr_sequence_of(o, z_ProxSupportUnit, &(*p)->unitsSupported,
408 &(*p)->num_unitsSupported) || odr_ok(o)) &&
412 int z_SearchKey(ODR o, Z_SearchKey **p, int opt)
414 if (!odr_sequence_begin(o, p, sizeof(**p)))
415 return opt && odr_ok(o);
417 odr_implicit(o, z_InternationalString, &(*p)->searchKey, ODR_CONTEXT, 0, 0) &&
418 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
422 int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt)
424 if (!odr_sequence_begin(o, p, sizeof(**p)))
425 return opt && odr_ok(o);
427 odr_explicit(o, odr_integer, &(*p)->accessType, ODR_CONTEXT, 0, 0) &&
428 odr_implicit(o, z_HumanString, &(*p)->accessText, ODR_CONTEXT, 1, 1) &&
429 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
430 (odr_sequence_of(o, odr_oid, &(*p)->accessChallenges,
431 &(*p)->num_accessChallenges) || odr_ok(o)) &&
435 int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt)
437 if (o->direction == ODR_DECODE)
438 *p = odr_malloc(o, sizeof(**p));
441 if (odr_sequence_of(o, z_AccessRestrictionsUnit, &(*p)->restrictions,
442 &(*p)->num_restrictions))
445 return opt && odr_ok(o);
448 int z_CostsOtherCharge(ODR o, Z_CostsOtherCharge **p, int opt)
450 if (!odr_sequence_begin(o, p, sizeof(**p)))
451 return opt && odr_ok(o);
453 odr_implicit(o, z_HumanString, &(*p)->forWhat, ODR_CONTEXT, 1, 0) &&
454 odr_implicit(o, z_Charge, &(*p)->charge, ODR_CONTEXT, 2, 1) &&
458 int z_Costs(ODR o, Z_Costs **p, int opt)
460 if (!odr_sequence_begin(o, p, sizeof(**p)))
461 return opt && odr_ok(o);
463 odr_implicit(o, z_Charge, &(*p)->connectCharge, ODR_CONTEXT, 0, 1) &&
464 odr_implicit(o, z_Charge, &(*p)->connectTime, ODR_CONTEXT, 1, 1) &&
465 odr_implicit(o, z_Charge, &(*p)->displayCharge, ODR_CONTEXT, 2, 1) &&
466 odr_implicit(o, z_Charge, &(*p)->searchCharge, ODR_CONTEXT, 3, 1) &&
467 odr_implicit(o, z_Charge, &(*p)->subscriptCharge, ODR_CONTEXT, 4, 1) &&
468 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
469 (odr_sequence_of(o, z_CostsOtherCharge, &(*p)->otherCharges,
470 &(*p)->num_otherCharges) || odr_ok(o)) &&
474 int z_Charge(ODR o, Z_Charge **p, int opt)
476 if (!odr_sequence_begin(o, p, sizeof(**p)))
477 return opt && odr_ok(o);
479 odr_implicit(o, z_IntUnit, &(*p)->cost, ODR_CONTEXT, 1, 0) &&
480 odr_implicit(o, z_Unit, &(*p)->perWhat, ODR_CONTEXT, 2, 1) &&
481 odr_implicit(o, z_HumanString, &(*p)->text, ODR_CONTEXT, 3, 1) &&
485 int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt)
487 if (o->direction == ODR_DECODE)
488 *p = odr_malloc(o, sizeof(**p));
491 if (odr_sequence_of(o, z_DatabaseName, &(*p)->databases,
492 &(*p)->num_databases))
495 return opt && odr_ok(o);
498 int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt)
500 if (!odr_sequence_begin(o, p, sizeof(**p)))
501 return opt && odr_ok(o);
503 odr_implicit(o, odr_oid, &(*p)->defaultAttributeSet,
504 ODR_CONTEXT, 0, 0) &&
505 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
506 odr_sequence_of(o, z_AttributeCombination, &(*p)->legalCombinations,
507 &(*p)->num_legalCombinations) &&
511 int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt)
513 if (o->direction == ODR_DECODE)
514 *p = odr_malloc(o, sizeof(**p));
517 if (odr_sequence_of(o, z_AttributeOccurrence, &(*p)->occurrences,
518 &(*p)->num_occurrences))
521 return opt && odr_ok(o);
524 int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt)
526 if (o->direction == ODR_DECODE)
527 *p = odr_malloc(o, sizeof(**p));
530 if (odr_sequence_of(o, z_StringOrNumeric, &(*p)->attributes,
531 &(*p)->num_attributes))
534 return opt && odr_ok(o);
537 int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt)
539 static Odr_arm arm[] =
541 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_AttributeOcc_anyOrNone, odr_null},
542 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_AttributeOcc_specific,
543 z_AttributeValueList},
547 if (!odr_sequence_begin(o, p, sizeof(**p)))
548 return opt && odr_ok(o);
550 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 0, 1) &&
551 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 1, 0) &&
552 odr_implicit(o, odr_null, &(*p)->mustBeSupplied, ODR_CONTEXT, 2, 1) &&
553 odr_choice(o, arm, &(*p)->attributeValues, &(*p)->which) &&
557 int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt)
559 if (!odr_sequence_begin(o, p, sizeof(**p)))
560 return opt && odr_ok(o);
562 odr_explicit(o, z_StringOrNumeric, &(*p)->value, ODR_CONTEXT, 0, 0) &&
563 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
564 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
565 (odr_sequence_of(o, z_StringOrNumeric, &(*p)->subAttributes,
566 &(*p)->num_subAttributes) || odr_ok(o)) &&
567 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
568 (odr_sequence_of(o, z_StringOrNumeric, &(*p)->superAttributes,
569 &(*p)->num_superAttributes) || odr_ok(o)) &&
570 odr_implicit(o, odr_null, &(*p)->partialSupport, ODR_CONTEXT, 4, 1) &&
576 int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt)
578 if (!odr_sequence_begin(o, p, sizeof(**p)))
579 return opt && odr_ok(o);
581 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
582 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
584 odr_implicit(o, z_HumanString, &(*p)->recentNews, ODR_CONTEXT, 2, 1) &&
585 odr_implicit(o, z_IconObject, &(*p)->icon, ODR_CONTEXT, 3, 1) &&
586 odr_implicit(o, odr_bool, &(*p)->namedResultSets, ODR_CONTEXT, 4, 0) &&
587 odr_implicit(o, odr_bool, &(*p)->multipleDBsearch, ODR_CONTEXT, 5, 0) &&
588 odr_implicit(o, odr_integer, &(*p)->maxResultSets, ODR_CONTEXT, 6, 1) &&
589 odr_implicit(o, odr_integer, &(*p)->maxResultSize, ODR_CONTEXT, 7, 1) &&
590 odr_implicit(o, odr_integer, &(*p)->maxTerms, ODR_CONTEXT, 8, 1) &&
591 odr_implicit(o, z_IntUnit, &(*p)->timeoutInterval, ODR_CONTEXT, 9, 1) &&
592 odr_implicit(o, z_HumanString, &(*p)->welcomeMessage, ODR_CONTEXT,
594 odr_implicit(o, z_ContactInfo, &(*p)->contactInfo, ODR_CONTEXT,
596 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
598 odr_implicit_settag(o, ODR_CONTEXT, 13) &&
599 (odr_sequence_of(o, z_InternationalString, &(*p)->nicknames,
600 &(*p)->num_nicknames) || odr_ok(o)) &&
601 odr_implicit(o, z_HumanString, &(*p)->usageRest, ODR_CONTEXT, 14, 1) &&
602 odr_implicit(o, z_HumanString, &(*p)->paymentAddr, ODR_CONTEXT,
604 odr_implicit(o, z_HumanString, &(*p)->hours, ODR_CONTEXT, 16, 1) &&
605 odr_implicit_settag(o, ODR_CONTEXT, 17) &&
606 (odr_sequence_of(o, z_DatabaseList, &(*p)->dbCombinations,
607 &(*p)->num_dbCombinations) || odr_ok(o)) &&
608 odr_implicit_settag(o, ODR_CONTEXT, 18) &&
609 (odr_sequence_of(o, z_NetworkAddress, &(*p)->addresses,
610 &(*p)->num_addresses) || odr_ok(o)) &&
611 odr_implicit(o, z_AccessInfo, &(*p)->commonAccessInfo, ODR_CONTEXT,
616 int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt)
618 static Odr_arm arm[] =
620 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Exp_RecordCount_actualNumber,
622 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Exp_RecordCount_approxNumber,
627 if (!odr_sequence_begin(o, p, sizeof(**p)))
628 return opt && odr_ok(o);
630 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
631 odr_implicit(o, z_DatabaseName, &(*p)->name, ODR_CONTEXT, 1, 0) &&
632 odr_implicit(o, odr_null, &(*p)->explainDatabase, ODR_CONTEXT, 2, 1) &&
633 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
634 (odr_sequence_of(o, z_DatabaseName, &(*p)->nicknames,
635 &(*p)->num_nicknames) || odr_ok(o)) &&
636 odr_implicit(o, z_IconObject, &(*p)->icon, ODR_CONTEXT, 4, 1) &&
637 odr_implicit(o, odr_bool, &(*p)->userFee, ODR_CONTEXT, 5, 0) &&
638 odr_implicit(o, odr_bool, &(*p)->available, ODR_CONTEXT, 6, 0) &&
639 odr_implicit(o, z_HumanString, &(*p)->titleString, ODR_CONTEXT, 7, 1) &&
640 odr_implicit_settag(o, ODR_CONTEXT, 8) &&
641 (odr_sequence_of(o, z_HumanString, &(*p)->keywords,
642 &(*p)->num_keywords) || odr_ok(o)) &&
643 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 9, 1) &&
644 odr_implicit(o, z_DatabaseList, &(*p)->associatedDbs, ODR_CONTEXT,
646 odr_implicit(o, z_DatabaseList, &(*p)->subDbs, ODR_CONTEXT, 11, 1) &&
647 odr_implicit(o, z_HumanString, &(*p)->disclaimers, ODR_CONTEXT,
649 odr_implicit(o, z_HumanString, &(*p)->news, ODR_CONTEXT, 13, 1) &&
650 ((odr_constructed_begin(o, p, ODR_CONTEXT, 14) &&
651 odr_choice(o, arm, &(*p)->recordCount, &(*p)->recordCount_which) &&
652 odr_constructed_end(o)) || odr_ok(o)) &&
653 odr_implicit(o, z_HumanString, &(*p)->defaultOrder, ODR_CONTEXT,
655 odr_implicit(o, odr_integer, &(*p)->avRecordSize, ODR_CONTEXT, 16, 1) &&
656 odr_implicit(o, odr_integer, &(*p)->maxRecordSize, ODR_CONTEXT,
658 odr_implicit(o, z_HumanString, &(*p)->hours, ODR_CONTEXT, 18, 1) &&
659 odr_implicit(o, z_HumanString, &(*p)->bestTime, ODR_CONTEXT, 19, 1) &&
660 odr_implicit(o, odr_generalizedtime, &(*p)->lastUpdate, ODR_CONTEXT,
662 odr_implicit(o, z_IntUnit, &(*p)->updateInterval, ODR_CONTEXT, 21, 1) &&
663 odr_implicit(o, z_HumanString, &(*p)->coverage, ODR_CONTEXT, 22, 1) &&
664 odr_implicit(o, odr_bool, &(*p)->proprietary, ODR_CONTEXT, 23, 1) &&
665 odr_implicit(o, z_HumanString, &(*p)->copyrightText, ODR_CONTEXT,
667 odr_implicit(o, z_HumanString, &(*p)->copyrightNotice, ODR_CONTEXT,
669 odr_implicit(o, z_ContactInfo, &(*p)->producerContactInfo, ODR_CONTEXT,
671 odr_implicit(o, z_ContactInfo, &(*p)->supplierContactInfo, ODR_CONTEXT,
673 odr_implicit(o, z_ContactInfo, &(*p)->submissionContactInfo,
674 ODR_CONTEXT, 28, 1) &&
675 odr_implicit(o, z_AccessInfo, &(*p)->accessInfo, ODR_CONTEXT, 29, 1) &&
679 int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt)
681 if (!odr_sequence_begin(o, p, sizeof(**p)))
684 odr_implicit(o, odr_integer, &(*p)->tagType, ODR_CONTEXT, 0, 0) &&
685 odr_implicit(o, odr_oid, &(*p)->tagSet, ODR_CONTEXT, 1, 1) &&
686 odr_implicit(o, odr_null, &(*p)->defaultTagType, ODR_CONTEXT, 2, 1) &&
690 int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt)
692 if (!odr_sequence_begin(o, p, sizeof(**p)))
693 return opt && odr_ok(o);
695 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
696 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 1, 0) &&
697 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
699 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 3, 1) &&
700 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
701 (odr_sequence_of(o, z_TagTypeMapping, &(*p)->tagTypeMapping,
702 &(*p)->num_tagTypeMapping) || odr_ok(o)) &&
703 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
704 (odr_sequence_of(o, z_ElementInfo, &(*p)->recordStructure,
705 &(*p)->num_recordStructure) || odr_ok(o)) &&
709 int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt)
711 if (!odr_sequence_begin(o, p, sizeof(**p)))
712 return opt && odr_ok(o);
714 odr_implicit(o, z_InternationalString, &(*p)->elementName, ODR_CONTEXT, 1, 0) &&
715 odr_implicit(o, z_Path, &(*p)->elementTagPath, ODR_CONTEXT, 2, 0) &&
716 odr_explicit(o, z_ElementDataType, &(*p)->dataType, ODR_CONTEXT, 3, 1) &&
717 odr_implicit(o, odr_bool, &(*p)->required, ODR_CONTEXT, 4, 0) &&
718 odr_implicit(o, odr_bool, &(*p)->repeatable, ODR_CONTEXT, 5, 0) &&
719 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 6, 1) &&
723 int z_PathUnit(ODR o, Z_PathUnit **p, int opt)
725 if (!odr_sequence_begin(o, p, sizeof(**p)))
728 odr_implicit(o, odr_integer, &(*p)->tagType, ODR_CONTEXT, 1, 0) &&
729 odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue, ODR_CONTEXT,
734 int z_Path(ODR o, Z_Path **p, int opt)
736 if (o->direction == ODR_DECODE)
737 *p = odr_malloc(o, sizeof(**p));
740 odr_implicit_settag(o, ODR_CONTEXT, 201);
741 if (odr_sequence_of(o, z_OtherInformationUnit, &(*p)->list,
745 return opt && odr_ok(o);
748 int z_ElementInfoList(ODR o, Z_Path **p, int opt)
750 if (o->direction == ODR_DECODE)
751 *p = odr_malloc(o, sizeof(**p));
754 odr_implicit_settag(o, ODR_CONTEXT, 201);
755 if (odr_sequence_of(o, z_OtherInformationUnit, &(*p)->list,
759 return opt && odr_ok(o);
762 int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt)
764 static Odr_arm arm[] =
766 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ElementDataType_primitive,
768 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ElementDataType_structured,
773 if (o->direction == ODR_DECODE)
774 *p = odr_malloc(o, sizeof(**p));
778 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
781 return opt && odr_ok(o);
784 int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt)
786 if (!odr_sequence_begin(o, p, sizeof(**p)))
789 odr_implicit(o, z_InternationalString, &(*p)->elementName,
790 ODR_CONTEXT, 1, 0) &&
791 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
792 (odr_sequence_of(o, z_InternationalString, &(*p)->nicknames,
793 &(*p)->num_nicknames) || odr_ok(o)) &&
794 odr_explicit(o, z_StringOrNumeric, &(*p)->elementTag, ODR_CONTEXT,
796 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
798 odr_implicit(o, odr_integer, &(*p)->dataType, ODR_CONTEXT, 5, 1) &&
799 z_OtherInformation(o, &(*p)->otherTagInfo, 1) &&
803 int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt)
805 if (!odr_sequence_begin(o, p, sizeof(**p)))
806 return opt && odr_ok(o);
808 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
809 odr_implicit(o, odr_oid, &(*p)->tagSet, ODR_CONTEXT, 1, 0) &&
810 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
812 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
814 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
815 (odr_sequence_of(o, z_TagSetInfoElements, &(*p)->elements,
816 &(*p)->num_elements) || odr_ok(o)) &&
820 int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt)
822 if (!odr_sequence_begin(o, p, sizeof(**p)))
823 return opt && odr_ok(o);
825 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
826 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 1, 0) &&
827 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
829 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
830 (odr_sequence_of(o, odr_oid, &(*p)->transferSyntaxes,
831 &(*p)->num_transferSyntaxes) || odr_ok(o)) &&
832 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
833 odr_implicit(o, z_InternationalString, &(*p)->asn1Module, ODR_CONTEXT,
835 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
836 (odr_sequence_of(o, z_ElementInfo, &(*p)->abstractStructure,
837 &(*p)->num_abstractStructure) || odr_ok(o)) &&
841 int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt)
843 if (!odr_sequence_begin(o, p, sizeof(**p)))
844 return opt && odr_ok(o);
846 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
847 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 1, 0) &&
848 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 2, 0) &&
849 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
850 (odr_sequence_of(o, z_AttributeType, &(*p)->attributes,
851 &(*p)->num_attributes) || odr_ok(o)) &&
852 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
856 int z_AttributeType(ODR o, Z_AttributeType **p, int opt)
858 if (!odr_sequence_begin(o, p, sizeof(**p)))
859 return opt && odr_ok(o);
861 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
862 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
863 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 2, 0) &&
864 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
865 odr_sequence_of(o, z_AttributeDescription, &(*p)->attributeValues,
866 &(*p)->num_attributeValues) &&
870 int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt)
872 if (!odr_sequence_begin(o, p, sizeof(**p)))
873 return opt && odr_ok(o);
875 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
876 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
877 odr_explicit(o, z_StringOrNumeric, &(*p)->attributeValue, ODR_CONTEXT, 2, 0) &&
878 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
879 (odr_sequence_of(o, z_StringOrNumeric, &(*p)->equivalentAttributes,
880 &(*p)->num_equivalentAttributes) || odr_ok(o)) &&
884 int z_TermListElement(ODR o, Z_TermListElement **p, int opt)
886 if (!odr_sequence_begin(o, p, sizeof(**p)))
887 return opt && odr_ok(o);
889 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 1, 0) &&
890 odr_implicit(o, z_HumanString, &(*p)->title, ODR_CONTEXT, 2, 1) &&
891 odr_implicit(o, odr_integer, &(*p)->searchCost, ODR_CONTEXT, 3, 1) &&
892 odr_implicit(o, odr_bool, &(*p)->scanable, ODR_CONTEXT, 4, 0) &&
893 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
894 (odr_sequence_of(o, z_InternationalString, &(*p)->broader,
895 &(*p)->num_broader) || odr_ok(o)) &&
896 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
897 (odr_sequence_of(o, z_InternationalString, &(*p)->narrower,
898 &(*p)->num_narrower) || odr_ok(o)) &&
902 int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt)
904 if (!odr_sequence_begin(o, p, sizeof(**p)))
905 return opt && odr_ok(o);
907 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
908 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
910 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
911 (odr_sequence_of(o, z_TermListElement, &(*p)->termLists,
912 &(*p)->num_termLists) || odr_ok(o)) &&
916 int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt)
918 if (!odr_sequence_begin(o, p, sizeof(**p)))
919 return opt && odr_ok(o);
921 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
922 odr_implicit(o, odr_oid, &(*p)->type, ODR_CONTEXT, 1, 0) &&
923 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 2, 1) &&
924 odr_implicit(o, odr_bool, &(*p)->privateType, ODR_CONTEXT, 3, 0) &&
925 odr_implicit(o, odr_bool, &(*p)->restrictionsApply, ODR_CONTEXT, 5, 0) &&
926 odr_implicit(o, odr_bool, &(*p)->feeApply, ODR_CONTEXT, 6, 0) &&
927 odr_implicit(o, odr_bool, &(*p)->available, ODR_CONTEXT, 7, 0) &&
928 odr_implicit(o, odr_bool, &(*p)->retentionSupported, ODR_CONTEXT, 8, 0) &&
929 odr_implicit(o, odr_integer, &(*p)->waitAction, ODR_CONTEXT, 9, 0) &&
930 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 10, 1) &&
931 odr_implicit(o, z_External, &(*p)->specificExplain, ODR_CONTEXT, 11, 1) &&
932 odr_implicit(o, z_InternationalString, &(*p)->esASN, ODR_CONTEXT, 12, 1) &&
936 int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt)
938 if (!odr_sequence_begin(o, p, sizeof(**p)))
939 return opt && odr_ok(o);
941 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
942 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) &&
943 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
944 (odr_sequence_of(o, z_AttributeSetDetails, &(*p)->attributesBySet,
945 &(*p)->num_attributesBySet) && odr_ok(o)) &&
946 odr_implicit(o, z_AttributeCombinations, &(*p)->attributeCombinations, ODR_CONTEXT, 3, 1) &&
950 int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt)
952 if (!odr_sequence_begin(o, p, sizeof(**p)))
953 return opt && odr_ok(o);
955 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT,
957 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
958 odr_sequence_of(o, z_AttributeTypeDetails, &(*p)->attributesByType,
959 &(*p)->num_attributesByType) &&
963 int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt)
965 if (!odr_sequence_begin(o, p, sizeof(**p)))
966 return opt && odr_ok(o);
968 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 0, 0) &&
969 odr_implicit(o, z_OmittedAttributeInterpretation, &(*p)->optionalType, ODR_CONTEXT, 1, 1) &&
970 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
971 (odr_sequence_of(o, z_AttributeValue, &(*p)->attributeValues,
972 &(*p)->num_attributeValues) || odr_ok(o)) &&
976 int z_OmittedAttributeInterpretation(ODR o, Z_OmittedAttributeInterpretation **p, int opt)
978 if (!odr_sequence_begin(o, p, sizeof(**p)))
979 return opt && odr_ok(o);
981 odr_explicit(o, z_StringOrNumeric, &(*p)->defaultValue, ODR_CONTEXT, 0, 1) &&
982 odr_implicit(o, z_HumanString, &(*p)->defaultDescription, ODR_CONTEXT, 1, 1) &&
986 int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt)
988 if (!odr_sequence_begin(o, p, sizeof(**p)))
989 return opt && odr_ok(o);
991 odr_implicit(o, odr_integer, &(*p)->maxStepSize, ODR_CONTEXT, 0, 1) &&
992 odr_implicit(o, z_HumanString, &(*p)->collatingSequence, ODR_CONTEXT, 1, 1) &&
993 odr_implicit(o, odr_bool, &(*p)->increasing, ODR_CONTEXT, 2, 1) &&
997 int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt)
999 if (!odr_sequence_begin(o, p, sizeof(**p)))
1000 return opt && odr_ok(o);
1002 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1003 odr_implicit(o, z_InternationalString, &(*p)->termListName, ODR_CONTEXT, 1, 0) &&
1004 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 2, 1) &&
1005 odr_implicit(o, z_AttributeCombinations, &(*p)->attributes, ODR_CONTEXT, 3, 1) &&
1006 odr_implicit(o, z_EScanInfo, &(*p)->scanInfo, ODR_CONTEXT, 4, 1) &&
1007 odr_implicit(o, odr_integer, &(*p)->estNumberTerms, ODR_CONTEXT, 5, 1) &&
1008 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
1009 (odr_sequence_of(o, z_Term, &(*p)->sampleTerms,
1010 &(*p)->num_sampleTerms) || odr_ok(o)) &&
1011 odr_sequence_end(o);
1014 int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt)
1016 if (!odr_sequence_begin(o, p, sizeof(**p)))
1017 return opt && odr_ok(o);
1019 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1020 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) &&
1021 odr_implicit(o, z_ElementSetName, &(*p)->elementSetName, ODR_CONTEXT, 2, 0) &&
1022 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 3, 0) &&
1023 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 4, 0) &&
1024 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 5, 1) &&
1025 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
1026 (odr_sequence_of(o, z_PerElementDetails, &(*p)->detailsPerElement, &(*p)->num_detailsPerElement) || odr_ok(o)) &&
1027 odr_sequence_end(o);
1030 int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt)
1032 if (!odr_sequence_begin(o, p, sizeof(**p)))
1033 return opt && odr_ok(o);
1035 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1036 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) &&
1037 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 2, 0) &&
1038 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 3, 0) &&
1039 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
1040 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
1041 (odr_sequence_of(o, z_PerElementDetails, &(*p)->detailsPerElement,
1042 &(*p)->num_detailsPerElement) || odr_ok(o)) &&
1043 odr_sequence_end(o);
1046 int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt)
1048 if (!odr_sequence_begin(o, p, sizeof(**p)))
1049 return opt && odr_ok(o);
1051 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
1052 odr_implicit(o, z_RecordTag, &(*p)->recordTag, ODR_CONTEXT, 1, 1) &&
1053 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1054 (odr_sequence_of(o, z_Path, &(*p)->schemaTags, &(*p)->num_schemaTags) ||
1056 odr_implicit(o, odr_integer, &(*p)->maxSize, ODR_CONTEXT, 3, 1) &&
1057 odr_implicit(o, odr_integer, &(*p)->minSize, ODR_CONTEXT, 4, 1) &&
1058 odr_implicit(o, odr_integer, &(*p)->avgSize, ODR_CONTEXT, 5, 1) &&
1059 odr_implicit(o, odr_integer, &(*p)->fixedSize, ODR_CONTEXT, 6, 1) &&
1060 odr_implicit(o, odr_bool, &(*p)->repeatable, ODR_CONTEXT, 8, 0) &&
1061 odr_implicit(o, odr_bool, &(*p)->required, ODR_CONTEXT, 9, 0) &&
1062 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 12, 1) &&
1063 odr_implicit(o, z_HumanString, &(*p)->contents, ODR_CONTEXT, 13, 1) &&
1064 odr_implicit(o, z_HumanString, &(*p)->billingInfo, ODR_CONTEXT, 14, 1) &&
1065 odr_implicit(o, z_HumanString, &(*p)->restrictions, ODR_CONTEXT, 15, 1) &&
1066 odr_implicit_settag(o, ODR_CONTEXT, 16) &&
1067 (odr_sequence_of(o, z_InternationalString, &(*p)->alternateNames,
1068 &(*p)->num_alternateNames) || odr_ok(o)) &&
1069 odr_implicit_settag(o, ODR_CONTEXT, 17) &&
1070 (odr_sequence_of(o, z_InternationalString, &(*p)->genericNames,
1071 &(*p)->num_genericNames) || odr_ok(o)) &&
1072 odr_implicit(o, z_AttributeCombinations, &(*p)->searchAccess,
1073 ODR_CONTEXT, 18, 1) &&
1074 odr_sequence_end(o);
1077 int z_RecordTag(ODR o, Z_RecordTag **p, int opt)
1079 if (!odr_sequence_begin(o, p, sizeof(**p)))
1080 return opt && odr_ok(o);
1082 odr_explicit(o, z_StringOrNumeric, &(*p)->qualifier, ODR_CONTEXT,
1084 odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue, ODR_CONTEXT,
1086 odr_sequence_end(o);
1089 int z_SortDetails(ODR o, Z_SortDetails **p, int opt)
1091 if (!odr_sequence_begin(o, p, sizeof(**p)))
1092 return opt && odr_ok(o);
1094 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1095 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
1097 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1098 (odr_sequence_of(o, z_SortKeyDetails, &(*p)->sortKeys,
1099 &(*p)->num_sortKeys) || odr_ok(o)) &&
1100 odr_sequence_end(o);
1103 int z_SortKeyDetailsSortType(ODR o, Z_SortKeyDetailsSortType **p, int opt)
1105 static Odr_arm arm[] =
1107 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_character,
1109 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_numeric,
1111 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_structured,
1116 if (o->direction == ODR_DECODE)
1117 *p = odr_malloc(o, sizeof(**p));
1120 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1123 return opt && odr_ok(o);
1126 int z_SortKeyDetails(ODR o, Z_SortKeyDetails **p, int opt)
1128 if (!odr_sequence_begin(o, p, sizeof(**p)))
1129 return opt && odr_ok(o);
1131 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 0, 1) &&
1132 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
1133 (odr_sequence_of(o, z_Specification, &(*p)->elementSpecifications,
1134 &(*p)->num_elementSpecifications) || odr_ok(o)) &&
1135 odr_implicit(o, z_AttributeCombinations, &(*p)->attributeSpecifications,
1136 ODR_CONTEXT, 2, 1) &&
1137 odr_explicit(o, z_SortKeyDetailsSortType, &(*p)->sortType, ODR_CONTEXT,
1139 odr_implicit(o, odr_integer, &(*p)->caseSensitivity, ODR_CONTEXT,
1141 odr_sequence_end(o);
1144 int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt)
1146 if (!odr_sequence_begin(o, p, sizeof(**p)))
1147 return opt && odr_ok(o);
1149 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1150 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
1152 odr_implicit(o, odr_integer, &(*p)->processingContext, ODR_CONTEXT,
1154 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1156 odr_implicit(o, odr_oid, &(*p)->oid, ODR_CONTEXT, 4, 0) &&
1157 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 5, 1) &&
1158 odr_implicit(o, z_External, &(*p)->instructions, ODR_CONTEXT, 6, 1) &&
1159 odr_sequence_end(o);
1162 int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt)
1164 if (!odr_sequence_begin(o, p, sizeof(**p)))
1165 return opt && odr_ok(o);
1167 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1168 odr_implicit(o, odr_oid, &(*p)->variantSet, ODR_CONTEXT, 1, 0) &&
1169 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1171 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1172 (odr_sequence_of(o, z_VariantClass, &(*p)->variants,
1173 &(*p)->num_variants) || odr_ok(o)) &&
1174 odr_sequence_end(o);
1177 int z_VariantClass(ODR o, Z_VariantClass **p, int opt)
1179 if (!odr_sequence_begin(o, p, sizeof(**p)))
1180 return opt && odr_ok(o);
1182 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1184 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1185 odr_implicit(o, odr_integer, &(*p)->variantClass, ODR_CONTEXT, 2, 0) &&
1186 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1187 odr_sequence_of(o, z_VariantType, &(*p)->variantTypes,
1188 &(*p)->num_variantTypes) &&
1189 odr_sequence_end(o);
1192 int z_VariantType(ODR o, Z_VariantType **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, 0, 1) &&
1198 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1199 odr_implicit(o, odr_integer, &(*p)->variantType, ODR_CONTEXT, 2, 0) &&
1200 odr_implicit(o, z_VariantValue, &(*p)->variantValue, ODR_CONTEXT, 3, 1) &&
1201 odr_sequence_end(o);
1204 int z_VariantValue(ODR o, Z_VariantValue **p, int opt)
1206 if (!odr_sequence_begin(o, p, sizeof(**p)))
1207 return opt && odr_ok(o);
1209 odr_explicit(o, odr_integer, &(*p)->dataType, ODR_CONTEXT, 0, 0) &&
1210 odr_explicit(o, z_ValueSet, &(*p)->values, ODR_CONTEXT, 1, 1) &&
1211 odr_sequence_end(o);
1214 int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt)
1216 if (o->direction == ODR_DECODE)
1217 *p = odr_malloc(o, sizeof(**p));
1220 if (odr_sequence_of(o, z_ValueDescription, &(*p)->enumerated,
1221 &(*p)->num_enumerated))
1224 return opt && odr_ok(o);
1227 int z_ValueSet(ODR o, Z_ValueSet **p, int opt)
1229 static Odr_arm arm[] =
1231 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ValueSet_range, z_ValueRange},
1232 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueSet_enumerated,
1233 z_ValueSetEnumerated},
1237 if (o->direction == ODR_DECODE)
1238 *p = odr_malloc(o, sizeof(**p));
1241 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1244 return opt && odr_ok(o);
1247 int z_ValueRange(ODR o, Z_ValueRange **p, int opt)
1249 if (!odr_sequence_begin(o, p, sizeof(**p)))
1250 return opt && odr_ok(o);
1252 odr_explicit(o, z_ValueDescription, &(*p)->lower, ODR_CONTEXT, 0, 1) &&
1253 odr_explicit(o, z_ValueDescription, &(*p)->upper, ODR_CONTEXT, 1, 1) &&
1254 odr_sequence_end(o);
1257 int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt)
1259 static Odr_arm arm[] =
1261 {ODR_NONE, -1, -1, Z_ValueDescription_integer, odr_integer},
1262 {ODR_NONE, -1, -1, Z_ValueDescription_string, z_InternationalString},
1263 {ODR_NONE, -1, -1, Z_ValueDescription_octets, odr_octetstring},
1264 {ODR_NONE, -1, -1, Z_ValueDescription_oid, odr_oid},
1265 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueDescription_unit, z_Unit},
1266 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ValueDescription_valueAndUnit, z_IntUnit},
1270 if (o->direction == ODR_DECODE)
1271 *p = odr_malloc(o, sizeof(**p));
1273 return opt && odr_ok(o);
1274 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1277 return opt && odr_ok(o);
1280 int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt)
1282 if (!odr_sequence_begin(o, p, sizeof(**p)))
1283 return opt && odr_ok(o);
1285 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1286 odr_implicit(o, z_InternationalString, &(*p)->unitSystem, ODR_CONTEXT,
1288 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 2, 1) &&
1289 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1290 (odr_sequence_of(o, z_UnitType, &(*p)->units, &(*p)->num_units) ||
1292 odr_sequence_end(o);
1295 int z_UnitType(ODR o, Z_UnitType **p, int opt)
1297 if (!odr_sequence_begin(o, p, sizeof(**p)))
1298 return opt && odr_ok(o);
1300 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1302 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1303 odr_explicit(o, z_StringOrNumeric, &(*p)->unitType, ODR_CONTEXT,
1305 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1306 odr_sequence_of(o, z_Units, &(*p)->units, &(*p)->num_units) &&
1307 odr_sequence_end(o);
1310 int z_Units(ODR o, Z_Units **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, 0, 1) &&
1316 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1317 odr_explicit(o, z_StringOrNumeric, &(*p)->unit, ODR_CONTEXT, 2, 0) &&
1318 odr_sequence_end(o);
1321 int z_CategoryList(ODR o, Z_CategoryList **p, int opt)
1323 if (!odr_sequence_begin(o, p, sizeof(**p)))
1324 return opt && odr_ok(o);
1326 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1327 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
1328 odr_sequence_of(o, z_CategoryInfo, &(*p)->categories,
1329 &(*p)->num_categories) &&
1330 odr_sequence_end(o);
1333 int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt)
1335 if (!odr_sequence_begin(o, p, sizeof(**p)))
1336 return opt && odr_ok(o);
1338 odr_implicit(o, z_InternationalString, &(*p)->category, ODR_CONTEXT,
1340 odr_implicit(o, z_InternationalString, &(*p)->originalCategory,
1341 ODR_CONTEXT, 2, 1) &&
1342 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 3, 1) &&
1343 odr_implicit(o, z_InternationalString, &(*p)->asn1Module, ODR_CONTEXT,
1345 odr_sequence_end(o);
1348 int MDF z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt)
1350 static Odr_arm arm[] =
1352 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Explain_targetInfo, z_TargetInfo},
1353 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Explain_databaseInfo, z_DatabaseInfo},
1354 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_Explain_schemaInfo, z_SchemaInfo},
1355 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_Explain_tagSetInfo, z_TagSetInfo},
1356 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_Explain_recordSyntaxInfo,
1357 z_RecordSyntaxInfo},
1358 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_Explain_attributeSetInfo,
1359 z_AttributeSetInfo},
1360 {ODR_IMPLICIT, ODR_CONTEXT, 6, Z_Explain_termListInfo,
1362 {ODR_IMPLICIT, ODR_CONTEXT, 7, Z_Explain_extendedServicesInfo,
1363 z_ExtendedServicesInfo},
1364 {ODR_IMPLICIT, ODR_CONTEXT, 8, Z_Explain_attributeDetails,
1365 z_AttributeDetails},
1366 {ODR_IMPLICIT, ODR_CONTEXT, 9, Z_Explain_termListDetails,
1368 {ODR_IMPLICIT, ODR_CONTEXT, 10, Z_Explain_elementSetDetails,
1369 z_ElementSetDetails},
1370 {ODR_IMPLICIT, ODR_CONTEXT, 11, Z_Explain_retrievalRecordDetails,
1371 z_RetrievalRecordDetails},
1372 {ODR_IMPLICIT, ODR_CONTEXT, 12, Z_Explain_sortDetails,
1374 {ODR_IMPLICIT, ODR_CONTEXT, 13, Z_Explain_processing,
1375 z_ProcessingInformation},
1376 {ODR_IMPLICIT, ODR_CONTEXT, 14, Z_Explain_variants,
1378 {ODR_IMPLICIT, ODR_CONTEXT, 15, Z_Explain_units, z_UnitInfo},
1379 {ODR_IMPLICIT, ODR_CONTEXT, 100, Z_Explain_categoryList,
1384 if (o->direction == ODR_DECODE)
1385 *p = odr_malloc(o, sizeof(**p));
1388 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1391 return opt && odr_ok(o);