2 * Copyright (c) 1995, Index Data.
3 * See the file LICENSE for details.
4 * Sebastian Hammer, Adam Dickmeiss
7 * Revision 1.1 1995-08-10 08:54:02 quinn
16 int z_LanguageCode(ODR o, char **p, int opt);
17 int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt);
18 int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt);
19 int z_HumanString(ODR o, Z_HumanString **p, int opt);
20 int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt);
21 int z_IconObject(ODR o, Z_IconObject **p, int opt);
22 int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt);
23 int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt);
24 int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt);
25 int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt);
26 int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt);
27 int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt);
28 int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt);
29 int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt);
30 int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt);
31 int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt);
32 int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt);
33 int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt);
34 int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt);
35 int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt);
36 int z_SearchKey(ODR o, Z_SearchKey **p, int opt);
37 int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt);
38 int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt);
39 int z_CostsOtherCharge(ODR o, Z_CostsOtherCharge **p, int opt);
40 int z_Costs(ODR o, Z_Costs **p, int opt);
41 int z_Charge(ODR o, Z_Charge **p, int opt);
42 int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt);
43 int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt);
44 int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt);
45 int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt);
46 int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt);
47 int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt);
48 int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt);
49 int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt);
50 int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt);
51 int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt);
52 int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt);
53 int z_PathUnit(ODR o, Z_PathUnit **p, int opt);
54 int z_Path(ODR o, Z_Path **p, int opt);
55 int z_ElementInfoList(ODR o, Z_Path **p, int opt);
56 int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt);
57 int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt);
58 int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt);
59 int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt);
60 int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt);
61 int z_AttributeType(ODR o, Z_AttributeType **p, int opt);
62 int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt);
63 int z_TermListElement(ODR o, Z_TermListElement **p, int opt);
64 int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt);
65 int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt);
66 int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt);
67 int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt);
68 int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt);
69 int z_OmittedAttributeInterpretation(ODR o, Z_OmittedAttributeInterpretation **p, int opt);
70 int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt);
71 int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt);
72 int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt);
73 int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt);
74 int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt);
75 int z_RecordTag(ODR o, Z_RecordTag **p, int opt);
76 int z_SortDetails(ODR o, Z_SortDetails **p, int opt);
77 int z_SortKeyDetailsSortType(ODR o, Z_SortKeyDetailsSortType **p, int opt);
78 int z_SortKeyDetails(ODR o, Z_SortKeyDetails **p, int opt);
79 int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt);
80 int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt);
81 int z_VariantClass(ODR o, Z_VariantClass **p, int opt);
82 int z_VariantType(ODR o, Z_VariantType **p, int opt);
83 int z_VariantValue(ODR o, Z_VariantValue **p, int opt);
84 int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt);
85 int z_ValueSet(ODR o, Z_ValueSet **p, int opt);
86 int z_ValueRange(ODR o, Z_ValueRange **p, int opt);
87 int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt);
88 int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt);
89 int z_UnitType(ODR o, Z_UnitType **p, int opt);
90 int z_Units(ODR o, Z_Units **p, int opt);
91 int z_CategoryList(ODR o, Z_CategoryList **p, int opt);
92 int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt);
93 int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt);
95 int z_LanguageCode(ODR o, char **p, int opt)
97 return z_InternationalString(o, p, opt);
100 int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt)
102 if (!odr_sequence_begin(o, p, sizeof(**p)))
103 return opt && odr_ok(o);
105 odr_implicit(o, odr_generalizedtime, &(*p)->dateAdded, ODR_CONTEXT, 0, 1) &&
106 odr_implicit(o, odr_generalizedtime, &(*p)->dateChanged, ODR_CONTEXT, 1, 1) &&
107 odr_implicit(o, odr_generalizedtime, &(*p)->expiry, ODR_CONTEXT, 2, 1) &&
108 odr_implicit(o, z_LanguageCode, &(*p)->humanStringLanguage, ODR_CONTEXT, 3, 1) &&
109 z_OtherInformation(o, &(*p)->otherInfo, 1) &&
113 int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt)
115 if (!odr_sequence_begin(o, p, sizeof(**p)))
116 return opt && odr_ok(o);
118 odr_implicit(o, z_LanguageCode, &(*p)->language, ODR_CONTEXT, 0, 1) &&
119 odr_implicit(o, z_InternationalString, &(*p)->text, ODR_CONTEXT,
124 int z_HumanString(ODR o, Z_HumanString **p, int opt)
126 if (o->direction == ODR_DECODE)
127 *p = odr_malloc(o, sizeof(**p));
129 return opt && odr_ok(o);
130 if (odr_sequence_of(o, z_HumanStringUnit, &(*p)->strings,
134 return opt && odr_ok(o);
137 int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt)
139 static Odr_arm arm[] =
141 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IconObject_ianaType,
142 z_InternationalString},
143 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IconObject_z3950type,
144 z_InternationalString},
145 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IconObject_otherType,
146 z_InternationalString},
150 if (!odr_sequence_begin(o, p, sizeof(**p)))
151 return opt && odr_ok(o);
153 odr_constructed_begin(o, &(*p)->bodyType, ODR_CONTEXT, 1) &&
154 odr_choice(o, arm, &(*p)->bodyType, &(*p)->which) &&
155 odr_constructed_end(o) &&
156 odr_implicit(o, odr_octetstring, &(*p)->content, ODR_CONTEXT, 2, 0) &&
160 int z_IconObject(ODR o, Z_IconObject **p, int opt)
162 if (o->direction == ODR_DECODE)
163 *p = odr_malloc(o, sizeof(**p));
166 if (odr_sequence_of(o, z_IconObjectUnit, &(*p)->iconUnits,
167 &(*p)->num_iconUnits))
170 return opt && odr_ok(o);
173 int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt)
175 if (!odr_sequence_begin(o, p, sizeof(**p)))
176 return opt && odr_ok(o);
178 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
179 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
180 odr_implicit(o, z_HumanString, &(*p)->address, ODR_CONTEXT, 2, 1) &&
181 odr_implicit(o, z_InternationalString, &(*p)->email, ODR_CONTEXT, 3, 1) &&
182 odr_implicit(o, z_InternationalString, &(*p)->phone, ODR_CONTEXT, 4, 1) &&
186 int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt)
188 if (!odr_sequence_begin(o, p, sizeof(**p)))
191 odr_implicit(o, z_InternationalString, &(*p)->hostAddress, ODR_CONTEXT, 0, 0) &&
192 odr_implicit(o, odr_integer, &(*p)->port, ODR_CONTEXT, 1, 0) &&
196 int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt)
198 if (!odr_sequence_begin(o, p, sizeof(**p)))
201 odr_implicit(o, z_InternationalString, &(*p)->pSel, ODR_CONTEXT, 0, 0) &&
202 odr_implicit(o, z_InternationalString, &(*p)->sSel, ODR_CONTEXT, 1, 1) &&
203 odr_implicit(o, z_InternationalString, &(*p)->tSel, ODR_CONTEXT, 2, 1) &&
204 odr_implicit(o, z_InternationalString, &(*p)->nSap, ODR_CONTEXT, 3, 0) &&
208 int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt)
210 if (!odr_sequence_begin(o, p, sizeof(**p)))
213 odr_implicit(o, z_InternationalString, &(*p)->type, ODR_CONTEXT, 0, 0) &&
214 odr_implicit(o, z_InternationalString, &(*p)->address, ODR_CONTEXT, 1, 0) &&
218 int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt)
220 static Odr_arm arm[] =
222 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_NetworkAddress_iA,
224 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_NetworkAddress_oPA,
225 z_NetworkAddressOPA},
226 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_NetworkAddress_other,
227 z_NetworkAddressOther},
231 if (o->direction == ODR_DECODE)
232 *p = odr_malloc(o, sizeof(**p));
235 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
238 return opt && odr_ok(o);
241 int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt)
243 if (!odr_sequence_begin(o, p, sizeof(**p)))
244 return opt && odr_ok(o);
246 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
247 (odr_sequence_of(o, z_QueryTypeDetails, &(*p)->queryTypesSupported,
248 &(*p)->num_queryTypesSupported) || odr_ok(o)) &&
249 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
250 (odr_sequence_of(o, odr_oid, &(*p)->diagnosticsSets,
251 &(*p)->num_diagnosticsSets) || odr_ok(o)) &&
252 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
253 (odr_sequence_of(o, odr_oid, &(*p)->attributeSetIds,
254 &(*p)->num_attributeSetIds) || odr_ok(o)) &&
255 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
256 (odr_sequence_of(o, odr_oid, &(*p)->schemas, &(*p)->num_schemas) ||
258 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
259 (odr_sequence_of(o, odr_oid, &(*p)->recordSyntaxes,
260 &(*p)->num_recordSyntaxes) || odr_ok(o)) &&
261 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
262 (odr_sequence_of(o, odr_oid, &(*p)->resourceChallenges,
263 &(*p)->num_resourceChallenges) || odr_ok(o)) &&
264 odr_implicit(o, z_AccessRestrictions, &(*p)->restrictedAccess,
265 ODR_CONTEXT, 6, 1) &&
266 odr_implicit(o, z_Costs, &(*p)->costInfo, ODR_CONTEXT, 8, 1) &&
267 odr_implicit_settag(o, ODR_CONTEXT, 9) &&
268 (odr_sequence_of(o, odr_oid, &(*p)->variantSets,
269 &(*p)->num_variantSets) || odr_ok(o)) &&
270 odr_implicit_settag(o, ODR_CONTEXT, 10) &&
271 (odr_sequence_of(o, z_ElementSetName, &(*p)->elementSetNames,
272 &(*p)->num_elementSetNames) || odr_ok(o)) &&
273 odr_implicit_settag(o, ODR_CONTEXT, 11) &&
274 (odr_sequence_of(o, z_InternationalString, &(*p)->unitSystems,
275 &(*p)->num_unitSystems) || odr_ok(o)) &&
279 int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt)
281 static Odr_arm arm[] =
283 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_QueryTypeDetails_private,
284 z_PrivateCapabilities},
285 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_QueryTypeDetails_rpn,
287 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_QueryTypeDetails_iso8777,
288 z_Iso8777Capabilities},
289 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_QueryTypeDetails_z3958,
291 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_QueryTypeDetails_erpn,
293 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_QueryTypeDetails_rankedList,
298 if (o->direction == ODR_DECODE)
299 *p = odr_malloc(o, sizeof(**p));
302 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
305 return opt && odr_ok(o);
308 int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt)
310 if (!odr_sequence_begin(o, p, sizeof(**p)))
311 return opt && odr_ok(o);
313 odr_implicit(o, z_InternationalString, &(*p)->operator, ODR_CONTEXT, 0, 0) &&
314 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
318 int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt)
320 if (!odr_sequence_begin(o, p, sizeof(**p)))
321 return opt && odr_ok(o);
323 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
324 (odr_sequence_of(o, z_PrivateCapOperator, &(*p)->operators,
325 &(*p)->num_operators) || odr_ok(o)) &&
326 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
327 (odr_sequence_of(o, z_SearchKey, &(*p)->searchKeys,
328 &(*p)->num_searchKeys) || odr_ok(o)) &&
329 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
330 (odr_sequence_of(o, z_HumanString, &(*p)->description,
331 &(*p)->num_description) || odr_ok(o)) &&
335 int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt)
337 if (!odr_sequence_begin(o, p, sizeof(**p)))
338 return opt && odr_ok(o);
340 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
341 (odr_sequence_of(o, odr_integer, &(*p)->operators, &(*p)->num_operators) || odr_ok(o)) &&
342 odr_implicit(o, odr_bool, &(*p)->resultSetAsOperandSupported,
343 ODR_CONTEXT, 1, 0) &&
344 odr_implicit(o, odr_bool, &(*p)->restrictionOperandSupported,
345 ODR_CONTEXT, 2, 0) &&
346 odr_implicit(o, z_ProximitySupport, &(*p)->proximity, ODR_CONTEXT,
351 int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt)
353 if (!odr_sequence_begin(o, p, sizeof(**p)))
354 return opt && odr_ok(o);
356 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
357 odr_sequence_of(o, z_SearchKey, &(*p)->searchKeys,
358 &(*p)->num_searchKeys) &&
359 odr_implicit(o, z_HumanString, &(*p)->restrictions, ODR_CONTEXT,
364 int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt)
366 if (!odr_sequence_begin(o, p, sizeof(**p)))
367 return opt && odr_ok(o);
369 odr_implicit(o, odr_integer, &(*p)->unit, ODR_CONTEXT, 0, 0) &&
370 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
374 int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt)
376 static Odr_arm arm[] =
378 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ProxSupportUnit_known,
380 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ProxSupportUnit_private,
381 z_ProxSupportPrivate},
385 if (o->direction == ODR_DECODE)
386 *p = odr_malloc(o, sizeof(**p));
389 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
392 return opt && odr_ok(o);
395 int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt)
397 if (!odr_sequence_begin(o, p, sizeof(**p)))
398 return opt && odr_ok(o);
400 odr_implicit(o, odr_bool, &(*p)->anySupport, ODR_CONTEXT, 0, 0) &&
401 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
402 (odr_sequence_of(o, z_ProxSupportUnit, &(*p)->unitsSupported,
403 &(*p)->num_unitsSupported) || odr_ok(o)) &&
407 int z_SearchKey(ODR o, Z_SearchKey **p, int opt)
409 if (!odr_sequence_begin(o, p, sizeof(**p)))
410 return opt && odr_ok(o);
412 odr_implicit(o, z_InternationalString, &(*p)->searchKey, ODR_CONTEXT, 0, 0) &&
413 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
417 int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt)
419 if (!odr_sequence_begin(o, p, sizeof(**p)))
420 return opt && odr_ok(o);
422 odr_explicit(o, odr_integer, &(*p)->accessType, ODR_CONTEXT, 0, 0) &&
423 odr_implicit(o, z_HumanString, &(*p)->accessText, ODR_CONTEXT, 1, 1) &&
424 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
425 (odr_sequence_of(o, odr_oid, &(*p)->accessChallenges,
426 &(*p)->num_accessChallenges) || odr_ok(o)) &&
430 int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt)
432 if (o->direction == ODR_DECODE)
433 *p = odr_malloc(o, sizeof(**p));
436 if (odr_sequence_of(o, z_AccessRestrictionsUnit, &(*p)->restrictions,
437 &(*p)->num_restrictions))
440 return opt && odr_ok(o);
443 int z_CostsOtherCharge(ODR o, Z_CostsOtherCharge **p, int opt)
445 if (!odr_sequence_begin(o, p, sizeof(**p)))
446 return opt && odr_ok(o);
448 odr_implicit(o, z_HumanString, &(*p)->forWhat, ODR_CONTEXT, 1, 0) &&
449 odr_implicit(o, z_Charge, &(*p)->charge, ODR_CONTEXT, 2, 1) &&
453 int z_Costs(ODR o, Z_Costs **p, int opt)
455 if (!odr_sequence_begin(o, p, sizeof(**p)))
456 return opt && odr_ok(o);
458 odr_implicit(o, z_Charge, &(*p)->connectCharge, ODR_CONTEXT, 0, 1) &&
459 odr_implicit(o, z_Charge, &(*p)->connectTime, ODR_CONTEXT, 1, 1) &&
460 odr_implicit(o, z_Charge, &(*p)->displayCharge, ODR_CONTEXT, 2, 1) &&
461 odr_implicit(o, z_Charge, &(*p)->searchCharge, ODR_CONTEXT, 3, 1) &&
462 odr_implicit(o, z_Charge, &(*p)->subscriptCharge, ODR_CONTEXT, 4, 1) &&
463 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
464 (odr_sequence_of(o, z_CostsOtherCharge, &(*p)->otherCharges,
465 &(*p)->num_otherCharges) || odr_ok(o)) &&
469 int z_Charge(ODR o, Z_Charge **p, int opt)
471 if (!odr_sequence_begin(o, p, sizeof(**p)))
472 return opt && odr_ok(o);
474 odr_implicit(o, z_IntUnit, &(*p)->cost, ODR_CONTEXT, 1, 0) &&
475 odr_implicit(o, z_Unit, &(*p)->perWhat, ODR_CONTEXT, 2, 1) &&
476 odr_implicit(o, z_HumanString, &(*p)->text, ODR_CONTEXT, 3, 1) &&
480 int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt)
482 if (o->direction == ODR_DECODE)
483 *p = odr_malloc(o, sizeof(**p));
486 if (odr_sequence_of(o, z_DatabaseName, &(*p)->databases,
487 &(*p)->num_databases))
490 return opt && odr_ok(o);
493 int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt)
495 if (!odr_sequence_begin(o, p, sizeof(**p)))
496 return opt && odr_ok(o);
498 odr_implicit(o, odr_oid, &(*p)->defaultAttributeSet,
499 ODR_CONTEXT, 0, 0) &&
500 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
501 odr_sequence_of(o, z_AttributeCombination, &(*p)->legalCombinations,
502 &(*p)->num_legalCombinations) &&
506 int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt)
508 if (o->direction == ODR_DECODE)
509 *p = odr_malloc(o, sizeof(**p));
512 if (odr_sequence_of(o, z_AttributeOccurrence, &(*p)->occurrences,
513 &(*p)->num_occurrences))
516 return opt && odr_ok(o);
519 int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt)
521 if (o->direction == ODR_DECODE)
522 *p = odr_malloc(o, sizeof(**p));
525 if (odr_sequence_of(o, z_StringOrNumeric, &(*p)->attributes,
526 &(*p)->num_attributes))
529 return opt && odr_ok(o);
532 int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt)
534 static Odr_arm arm[] =
536 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_AttributeOcc_anyOrNone, odr_null},
537 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_AttributeOcc_specific,
538 z_AttributeValueList},
542 if (!odr_sequence_begin(o, p, sizeof(**p)))
543 return opt && odr_ok(o);
545 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 0, 1) &&
546 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 1, 0) &&
547 odr_implicit(o, odr_null, &(*p)->mustBeSupplied, ODR_CONTEXT, 2, 1) &&
548 odr_choice(o, arm, &(*p)->attributeValues, &(*p)->which) &&
552 int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt)
554 if (!odr_sequence_begin(o, p, sizeof(**p)))
555 return opt && odr_ok(o);
557 odr_explicit(o, z_StringOrNumeric, &(*p)->value, ODR_CONTEXT, 0, 0) &&
558 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
559 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
560 (odr_sequence_of(o, z_StringOrNumeric, &(*p)->subAttributes,
561 &(*p)->num_subAttributes) || odr_ok(o)) &&
562 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
563 (odr_sequence_of(o, z_StringOrNumeric, &(*p)->superAttributes,
564 &(*p)->num_superAttributes) || odr_ok(o)) &&
565 odr_implicit(o, odr_null, &(*p)->partialSupport, ODR_CONTEXT, 4, 1) &&
571 int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt)
573 if (!odr_sequence_begin(o, p, sizeof(**p)))
574 return opt && odr_ok(o);
576 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
577 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
579 odr_implicit(o, z_HumanString, &(*p)->recentNews, ODR_CONTEXT, 2, 1) &&
580 odr_implicit(o, z_IconObject, &(*p)->icon, ODR_CONTEXT, 3, 1) &&
581 odr_implicit(o, odr_bool, &(*p)->namedResultSets, ODR_CONTEXT, 4, 0) &&
582 odr_implicit(o, odr_bool, &(*p)->multipleDBsearch, ODR_CONTEXT, 5, 0) &&
583 odr_implicit(o, odr_integer, &(*p)->maxResultSets, ODR_CONTEXT, 6, 1) &&
584 odr_implicit(o, odr_integer, &(*p)->maxResultSize, ODR_CONTEXT, 7, 1) &&
585 odr_implicit(o, odr_integer, &(*p)->maxTerms, ODR_CONTEXT, 8, 1) &&
586 odr_implicit(o, z_IntUnit, &(*p)->timeoutInterval, ODR_CONTEXT, 9, 1) &&
587 odr_implicit(o, z_HumanString, &(*p)->welcomeMessage, ODR_CONTEXT,
589 odr_implicit(o, z_ContactInfo, &(*p)->contactInfo, ODR_CONTEXT,
591 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
593 odr_implicit_settag(o, ODR_CONTEXT, 13) &&
594 (odr_sequence_of(o, z_InternationalString, &(*p)->nicknames,
595 &(*p)->num_nicknames) || odr_ok(o)) &&
596 odr_implicit(o, z_HumanString, &(*p)->usageRest, ODR_CONTEXT, 14, 1) &&
597 odr_implicit(o, z_HumanString, &(*p)->paymentAddr, ODR_CONTEXT,
599 odr_implicit(o, z_HumanString, &(*p)->hours, ODR_CONTEXT, 16, 1) &&
600 odr_implicit_settag(o, ODR_CONTEXT, 17) &&
601 (odr_sequence_of(o, z_DatabaseList, &(*p)->dbCombinations,
602 &(*p)->num_dbCombinations) || odr_ok(o)) &&
603 odr_implicit_settag(o, ODR_CONTEXT, 18) &&
604 (odr_sequence_of(o, z_NetworkAddress, &(*p)->addresses,
605 &(*p)->num_addresses) || odr_ok(o)) &&
606 odr_implicit(o, z_AccessInfo, &(*p)->commonAccessInfo, ODR_CONTEXT,
611 int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt)
613 static Odr_arm arm[] =
615 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Exp_RecordCount_actualNumber,
617 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Exp_RecordCount_approxNumber,
622 if (!odr_sequence_begin(o, p, sizeof(**p)))
623 return opt && odr_ok(o);
625 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
626 odr_implicit(o, z_DatabaseName, &(*p)->name, ODR_CONTEXT, 1, 0) &&
627 odr_implicit(o, odr_null, &(*p)->explainDatabase, ODR_CONTEXT, 2, 1) &&
628 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
629 (odr_sequence_of(o, z_DatabaseName, &(*p)->nicknames,
630 &(*p)->num_nicknames) || odr_ok(o)) &&
631 odr_implicit(o, z_IconObject, &(*p)->icon, ODR_CONTEXT, 4, 1) &&
632 odr_implicit(o, odr_bool, &(*p)->userFee, ODR_CONTEXT, 5, 0) &&
633 odr_implicit(o, odr_bool, &(*p)->available, ODR_CONTEXT, 6, 0) &&
634 odr_implicit(o, z_HumanString, &(*p)->titleString, ODR_CONTEXT, 7, 1) &&
635 odr_implicit_settag(o, ODR_CONTEXT, 8) &&
636 (odr_sequence_of(o, z_HumanString, &(*p)->keywords,
637 &(*p)->num_keywords) || odr_ok(o)) &&
638 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 9, 1) &&
639 odr_implicit(o, z_DatabaseList, &(*p)->associatedDbs, ODR_CONTEXT,
641 odr_implicit(o, z_DatabaseList, &(*p)->subDbs, ODR_CONTEXT, 11, 1) &&
642 odr_implicit(o, z_HumanString, &(*p)->disclaimers, ODR_CONTEXT,
644 odr_implicit(o, z_HumanString, &(*p)->news, ODR_CONTEXT, 13, 1) &&
645 ((odr_constructed_begin(o, p, ODR_CONTEXT, 14) &&
646 odr_choice(o, arm, &(*p)->recordCount, &(*p)->recordCount_which) &&
647 odr_constructed_end(o)) || odr_ok(o)) &&
648 odr_implicit(o, z_HumanString, &(*p)->defaultOrder, ODR_CONTEXT,
650 odr_implicit(o, odr_integer, &(*p)->avRecordSize, ODR_CONTEXT, 16, 1) &&
651 odr_implicit(o, odr_integer, &(*p)->maxRecordSize, ODR_CONTEXT,
653 odr_implicit(o, z_HumanString, &(*p)->hours, ODR_CONTEXT, 18, 1) &&
654 odr_implicit(o, z_HumanString, &(*p)->bestTime, ODR_CONTEXT, 19, 1) &&
655 odr_implicit(o, odr_generalizedtime, &(*p)->lastUpdate, ODR_CONTEXT,
657 odr_implicit(o, z_IntUnit, &(*p)->updateInterval, ODR_CONTEXT, 21, 1) &&
658 odr_implicit(o, z_HumanString, &(*p)->coverage, ODR_CONTEXT, 22, 1) &&
659 odr_implicit(o, odr_bool, &(*p)->proprietary, ODR_CONTEXT, 23, 1) &&
660 odr_implicit(o, z_HumanString, &(*p)->copyrightText, ODR_CONTEXT,
662 odr_implicit(o, z_HumanString, &(*p)->copyrightNotice, ODR_CONTEXT,
664 odr_implicit(o, z_ContactInfo, &(*p)->producerContactInfo, ODR_CONTEXT,
666 odr_implicit(o, z_ContactInfo, &(*p)->supplierContactInfo, ODR_CONTEXT,
668 odr_implicit(o, z_ContactInfo, &(*p)->submissionContactInfo,
669 ODR_CONTEXT, 28, 1) &&
670 odr_implicit(o, z_AccessInfo, &(*p)->accessInfo, ODR_CONTEXT, 29, 1) &&
674 int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt)
676 if (!odr_sequence_begin(o, p, sizeof(**p)))
679 odr_implicit(o, odr_integer, &(*p)->tagType, ODR_CONTEXT, 0, 0) &&
680 odr_implicit(o, odr_oid, &(*p)->tagSet, ODR_CONTEXT, 1, 1) &&
681 odr_implicit(o, odr_null, &(*p)->defaultTagType, ODR_CONTEXT, 2, 1) &&
685 int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt)
687 if (!odr_sequence_begin(o, p, sizeof(**p)))
688 return opt && odr_ok(o);
690 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
691 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 1, 0) &&
692 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
694 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 3, 1) &&
695 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
696 (odr_sequence_of(o, z_TagTypeMapping, &(*p)->tagTypeMapping,
697 &(*p)->num_tagTypeMapping) || odr_ok(o)) &&
698 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
699 (odr_sequence_of(o, z_ElementInfo, &(*p)->recordStructure,
700 &(*p)->num_recordStructure) || odr_ok(o)) &&
704 int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt)
706 if (!odr_sequence_begin(o, p, sizeof(**p)))
707 return opt && odr_ok(o);
709 odr_implicit(o, z_InternationalString, &(*p)->elementName, ODR_CONTEXT, 1, 0) &&
710 odr_implicit(o, z_Path, &(*p)->elementTagPath, ODR_CONTEXT, 2, 0) &&
711 odr_explicit(o, z_ElementDataType, &(*p)->dataType, ODR_CONTEXT, 3, 1) &&
712 odr_implicit(o, odr_bool, &(*p)->required, ODR_CONTEXT, 4, 0) &&
713 odr_implicit(o, odr_bool, &(*p)->repeatable, ODR_CONTEXT, 5, 0) &&
714 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 6, 1) &&
718 int z_PathUnit(ODR o, Z_PathUnit **p, int opt)
720 if (!odr_sequence_begin(o, p, sizeof(**p)))
723 odr_implicit(o, odr_integer, &(*p)->tagType, ODR_CONTEXT, 1, 0) &&
724 odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue, ODR_CONTEXT,
729 int z_Path(ODR o, Z_Path **p, int opt)
731 if (o->direction == ODR_DECODE)
732 *p = odr_malloc(o, sizeof(**p));
735 odr_implicit_settag(o, ODR_CONTEXT, 201);
736 if (odr_sequence_of(o, z_OtherInformationUnit, &(*p)->list,
740 return opt && odr_ok(o);
743 int z_ElementInfoList(ODR o, Z_Path **p, int opt)
745 if (o->direction == ODR_DECODE)
746 *p = odr_malloc(o, sizeof(**p));
749 odr_implicit_settag(o, ODR_CONTEXT, 201);
750 if (odr_sequence_of(o, z_OtherInformationUnit, &(*p)->list,
754 return opt && odr_ok(o);
757 int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt)
759 static Odr_arm arm[] =
761 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ElementDataType_primitive,
763 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ElementDataType_structured,
768 if (o->direction == ODR_DECODE)
769 *p = odr_malloc(o, sizeof(**p));
773 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
776 return opt && odr_ok(o);
779 int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt)
781 if (!odr_sequence_begin(o, p, sizeof(**p)))
784 odr_implicit(o, z_InternationalString, &(*p)->elementName,
785 ODR_CONTEXT, 1, 0) &&
786 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
787 (odr_sequence_of(o, z_InternationalString, &(*p)->nicknames,
788 &(*p)->num_nicknames) || odr_ok(o)) &&
789 odr_explicit(o, z_StringOrNumeric, &(*p)->elementTag, ODR_CONTEXT,
791 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
793 odr_implicit(o, odr_integer, &(*p)->dataType, ODR_CONTEXT, 5, 1) &&
794 z_OtherInformation(o, &(*p)->otherTagInfo, 1) &&
798 int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt)
800 if (!odr_sequence_begin(o, p, sizeof(**p)))
801 return opt && odr_ok(o);
803 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
804 odr_implicit(o, odr_oid, &(*p)->tagSet, ODR_CONTEXT, 1, 0) &&
805 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
807 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
809 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
810 (odr_sequence_of(o, z_TagSetInfoElements, &(*p)->elements,
811 &(*p)->num_elements) || odr_ok(o)) &&
815 int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt)
817 if (!odr_sequence_begin(o, p, sizeof(**p)))
818 return opt && odr_ok(o);
820 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
821 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 1, 0) &&
822 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
824 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
825 (odr_sequence_of(o, odr_oid, &(*p)->transferSyntaxes,
826 &(*p)->num_transferSyntaxes) || odr_ok(o)) &&
827 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
828 odr_implicit(o, z_InternationalString, &(*p)->asn1Module, ODR_CONTEXT,
830 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
831 (odr_sequence_of(o, z_ElementInfo, &(*p)->abstractStructure,
832 &(*p)->num_abstractStructure) || odr_ok(o)) &&
836 int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt)
838 if (!odr_sequence_begin(o, p, sizeof(**p)))
839 return opt && odr_ok(o);
841 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
842 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 1, 0) &&
843 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 2, 0) &&
844 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
845 (odr_sequence_of(o, z_AttributeType, &(*p)->attributes,
846 &(*p)->num_attributes) || odr_ok(o)) &&
847 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
851 int z_AttributeType(ODR o, Z_AttributeType **p, int opt)
853 if (!odr_sequence_begin(o, p, sizeof(**p)))
854 return opt && odr_ok(o);
856 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
857 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
858 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 2, 0) &&
859 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
860 odr_sequence_of(o, z_AttributeDescription, &(*p)->attributeValues,
861 &(*p)->num_attributeValues) &&
865 int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt)
867 if (!odr_sequence_begin(o, p, sizeof(**p)))
868 return opt && odr_ok(o);
870 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
871 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
872 odr_explicit(o, z_StringOrNumeric, &(*p)->attributeValue, ODR_CONTEXT, 2, 0) &&
873 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
874 (odr_sequence_of(o, z_StringOrNumeric, &(*p)->equivalentAttributes,
875 &(*p)->num_equivalentAttributes) || odr_ok(o)) &&
879 int z_TermListElement(ODR o, Z_TermListElement **p, int opt)
881 if (!odr_sequence_begin(o, p, sizeof(**p)))
882 return opt && odr_ok(o);
884 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 1, 0) &&
885 odr_implicit(o, z_HumanString, &(*p)->title, ODR_CONTEXT, 2, 1) &&
886 odr_implicit(o, odr_integer, &(*p)->searchCost, ODR_CONTEXT, 3, 1) &&
887 odr_implicit(o, odr_bool, &(*p)->scanable, ODR_CONTEXT, 4, 0) &&
888 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
889 (odr_sequence_of(o, z_InternationalString, &(*p)->broader,
890 &(*p)->num_broader) || odr_ok(o)) &&
891 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
892 (odr_sequence_of(o, z_InternationalString, &(*p)->narrower,
893 &(*p)->num_narrower) || odr_ok(o)) &&
897 int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt)
899 if (!odr_sequence_begin(o, p, sizeof(**p)))
900 return opt && odr_ok(o);
902 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
903 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
905 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
906 (odr_sequence_of(o, z_TermListElement, &(*p)->termLists,
907 &(*p)->num_termLists) || odr_ok(o)) &&
911 int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt)
913 if (!odr_sequence_begin(o, p, sizeof(**p)))
914 return opt && odr_ok(o);
916 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
917 odr_implicit(o, odr_oid, &(*p)->type, ODR_CONTEXT, 1, 0) &&
918 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 2, 1) &&
919 odr_implicit(o, odr_bool, &(*p)->privateType, ODR_CONTEXT, 3, 0) &&
920 odr_implicit(o, odr_bool, &(*p)->restrictionsApply, ODR_CONTEXT, 5, 0) &&
921 odr_implicit(o, odr_bool, &(*p)->feeApply, ODR_CONTEXT, 6, 0) &&
922 odr_implicit(o, odr_bool, &(*p)->available, ODR_CONTEXT, 7, 0) &&
923 odr_implicit(o, odr_bool, &(*p)->retentionSupported, ODR_CONTEXT, 8, 0) &&
924 odr_implicit(o, odr_integer, &(*p)->waitAction, ODR_CONTEXT, 9, 0) &&
925 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 10, 1) &&
926 odr_implicit(o, odr_external, &(*p)->specificExplain, ODR_CONTEXT, 11, 1) &&
927 odr_implicit(o, z_InternationalString, &(*p)->esASN, ODR_CONTEXT, 12, 1) &&
931 int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt)
933 if (!odr_sequence_begin(o, p, sizeof(**p)))
934 return opt && odr_ok(o);
936 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
937 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) &&
938 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
939 (odr_sequence_of(o, z_AttributeSetDetails, &(*p)->attributesBySet,
940 &(*p)->num_attributesBySet) && odr_ok(o)) &&
941 odr_implicit(o, z_AttributeCombinations, &(*p)->attributeCombinations, ODR_CONTEXT, 3, 1) &&
945 int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt)
947 if (!odr_sequence_begin(o, p, sizeof(**p)))
948 return opt && odr_ok(o);
950 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT,
952 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
953 odr_sequence_of(o, z_AttributeTypeDetails, &(*p)->attributesByType,
954 &(*p)->num_attributesByType) &&
958 int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt)
960 if (!odr_sequence_begin(o, p, sizeof(**p)))
961 return opt && odr_ok(o);
963 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 0, 0) &&
964 odr_implicit(o, z_OmittedAttributeInterpretation, &(*p)->optionalType, ODR_CONTEXT, 1, 1) &&
965 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
966 (odr_sequence_of(o, z_AttributeValue, &(*p)->attributeValues,
967 &(*p)->num_attributeValues) || odr_ok(o)) &&
971 int z_OmittedAttributeInterpretation(ODR o, Z_OmittedAttributeInterpretation **p, int opt)
973 if (!odr_sequence_begin(o, p, sizeof(**p)))
974 return opt && odr_ok(o);
976 odr_explicit(o, z_StringOrNumeric, &(*p)->defaultValue, ODR_CONTEXT, 0, 1) &&
977 odr_implicit(o, z_HumanString, &(*p)->defaultDescription, ODR_CONTEXT, 1, 1) &&
981 int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt)
983 if (!odr_sequence_begin(o, p, sizeof(**p)))
984 return opt && odr_ok(o);
986 odr_implicit(o, odr_integer, &(*p)->maxStepSize, ODR_CONTEXT, 0, 1) &&
987 odr_implicit(o, z_HumanString, &(*p)->collatingSequence, ODR_CONTEXT, 1, 1) &&
988 odr_implicit(o, odr_bool, &(*p)->increasing, ODR_CONTEXT, 2, 1) &&
992 int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt)
994 if (!odr_sequence_begin(o, p, sizeof(**p)))
995 return opt && odr_ok(o);
997 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
998 odr_implicit(o, z_InternationalString, &(*p)->termListName, ODR_CONTEXT, 1, 0) &&
999 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 2, 1) &&
1000 odr_implicit(o, z_AttributeCombinations, &(*p)->attributes, ODR_CONTEXT, 3, 1) &&
1001 odr_implicit(o, z_EScanInfo, &(*p)->scanInfo, ODR_CONTEXT, 4, 1) &&
1002 odr_implicit(o, odr_integer, &(*p)->estNumberTerms, ODR_CONTEXT, 5, 1) &&
1003 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
1004 (odr_sequence_of(o, z_Term, &(*p)->sampleTerms,
1005 &(*p)->num_sampleTerms) || odr_ok(o)) &&
1006 odr_sequence_end(o);
1009 int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt)
1011 if (!odr_sequence_begin(o, p, sizeof(**p)))
1012 return opt && odr_ok(o);
1014 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1015 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) &&
1016 odr_implicit(o, z_ElementSetName, &(*p)->elementSetName, ODR_CONTEXT, 2, 0) &&
1017 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 3, 0) &&
1018 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 4, 0) &&
1019 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 5, 1) &&
1020 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
1021 (odr_sequence_of(o, z_PerElementDetails, &(*p)->detailsPerElement, &(*p)->num_detailsPerElement) || odr_ok(o)) &&
1022 odr_sequence_end(o);
1025 int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt)
1027 if (!odr_sequence_begin(o, p, sizeof(**p)))
1028 return opt && odr_ok(o);
1030 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1031 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) &&
1032 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 2, 0) &&
1033 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 3, 0) &&
1034 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
1035 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
1036 (odr_sequence_of(o, z_PerElementDetails, &(*p)->detailsPerElement,
1037 &(*p)->num_detailsPerElement) || odr_ok(o)) &&
1038 odr_sequence_end(o);
1041 int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt)
1043 if (!odr_sequence_begin(o, p, sizeof(**p)))
1044 return opt && odr_ok(o);
1046 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
1047 odr_implicit(o, z_RecordTag, &(*p)->recordTag, ODR_CONTEXT, 1, 1) &&
1048 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1049 (odr_sequence_of(o, z_Path, &(*p)->schemaTags, &(*p)->num_schemaTags) ||
1051 odr_implicit(o, odr_integer, &(*p)->maxSize, ODR_CONTEXT, 3, 1) &&
1052 odr_implicit(o, odr_integer, &(*p)->minSize, ODR_CONTEXT, 4, 1) &&
1053 odr_implicit(o, odr_integer, &(*p)->avgSize, ODR_CONTEXT, 5, 1) &&
1054 odr_implicit(o, odr_integer, &(*p)->fixedSize, ODR_CONTEXT, 6, 1) &&
1055 odr_implicit(o, odr_bool, &(*p)->repeatable, ODR_CONTEXT, 8, 0) &&
1056 odr_implicit(o, odr_bool, &(*p)->required, ODR_CONTEXT, 9, 0) &&
1057 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 12, 1) &&
1058 odr_implicit(o, z_HumanString, &(*p)->contents, ODR_CONTEXT, 13, 1) &&
1059 odr_implicit(o, z_HumanString, &(*p)->billingInfo, ODR_CONTEXT, 14, 1) &&
1060 odr_implicit(o, z_HumanString, &(*p)->restrictions, ODR_CONTEXT, 15, 1) &&
1061 odr_implicit_settag(o, ODR_CONTEXT, 16) &&
1062 (odr_sequence_of(o, z_InternationalString, &(*p)->alternateNames,
1063 &(*p)->num_alternateNames) || odr_ok(o)) &&
1064 odr_implicit_settag(o, ODR_CONTEXT, 17) &&
1065 (odr_sequence_of(o, z_InternationalString, &(*p)->genericNames,
1066 &(*p)->num_genericNames) || odr_ok(o)) &&
1067 odr_implicit(o, z_AttributeCombinations, &(*p)->searchAccess,
1068 ODR_CONTEXT, 18, 1) &&
1069 odr_sequence_end(o);
1072 int z_RecordTag(ODR o, Z_RecordTag **p, int opt)
1074 if (!odr_sequence_begin(o, p, sizeof(**p)))
1075 return opt && odr_ok(o);
1077 odr_explicit(o, z_StringOrNumeric, &(*p)->qualifier, ODR_CONTEXT,
1079 odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue, ODR_CONTEXT,
1081 odr_sequence_end(o);
1084 int z_SortDetails(ODR o, Z_SortDetails **p, int opt)
1086 if (!odr_sequence_begin(o, p, sizeof(**p)))
1087 return opt && odr_ok(o);
1089 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1090 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
1092 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1093 (odr_sequence_of(o, z_SortKeyDetails, &(*p)->sortKeys,
1094 &(*p)->num_sortKeys) || odr_ok(o)) &&
1095 odr_sequence_end(o);
1098 int z_SortKeyDetailsSortType(ODR o, Z_SortKeyDetailsSortType **p, int opt)
1100 static Odr_arm arm[] =
1102 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_character,
1104 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_numeric,
1106 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_structured,
1111 if (o->direction == ODR_DECODE)
1112 *p = odr_malloc(o, sizeof(**p));
1115 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1118 return opt && odr_ok(o);
1121 int z_SortKeyDetails(ODR o, Z_SortKeyDetails **p, int opt)
1123 if (!odr_sequence_begin(o, p, sizeof(**p)))
1124 return opt && odr_ok(o);
1126 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 0, 1) &&
1127 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
1128 (odr_sequence_of(o, z_Specification, &(*p)->elementSpecifications,
1129 &(*p)->num_elementSpecifications) || odr_ok(o)) &&
1130 odr_implicit(o, z_AttributeCombinations, &(*p)->attributeSpecifications,
1131 ODR_CONTEXT, 2, 1) &&
1132 odr_explicit(o, z_SortKeyDetailsSortType, &(*p)->sortType, ODR_CONTEXT,
1134 odr_implicit(o, odr_integer, &(*p)->caseSensitivity, ODR_CONTEXT,
1136 odr_sequence_end(o);
1139 int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt)
1141 if (!odr_sequence_begin(o, p, sizeof(**p)))
1142 return opt && odr_ok(o);
1144 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1145 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
1147 odr_implicit(o, odr_integer, &(*p)->processingContext, ODR_CONTEXT,
1149 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1151 odr_implicit(o, odr_oid, &(*p)->oid, ODR_CONTEXT, 4, 0) &&
1152 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 5, 1) &&
1153 odr_implicit(o, odr_external, &(*p)->instructions, ODR_CONTEXT, 6, 1) &&
1154 odr_sequence_end(o);
1157 int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt)
1159 if (!odr_sequence_begin(o, p, sizeof(**p)))
1160 return opt && odr_ok(o);
1162 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1163 odr_implicit(o, odr_oid, &(*p)->variantSet, ODR_CONTEXT, 1, 0) &&
1164 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1166 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1167 (odr_sequence_of(o, z_VariantClass, &(*p)->variants,
1168 &(*p)->num_variants) || odr_ok(o)) &&
1169 odr_sequence_end(o);
1172 int z_VariantClass(ODR o, Z_VariantClass **p, int opt)
1174 if (!odr_sequence_begin(o, p, sizeof(**p)))
1175 return opt && odr_ok(o);
1177 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1179 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1180 odr_implicit(o, odr_integer, &(*p)->variantClass, ODR_CONTEXT, 2, 0) &&
1181 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1182 odr_sequence_of(o, z_VariantType, &(*p)->variantTypes,
1183 &(*p)->num_variantTypes) &&
1184 odr_sequence_end(o);
1187 int z_VariantType(ODR o, Z_VariantType **p, int opt)
1189 if (!odr_sequence_begin(o, p, sizeof(**p)))
1190 return opt && odr_ok(o);
1192 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
1193 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1194 odr_implicit(o, odr_integer, &(*p)->variantType, ODR_CONTEXT, 2, 0) &&
1195 odr_implicit(o, z_VariantValue, &(*p)->variantValue, ODR_CONTEXT, 3, 1) &&
1196 odr_sequence_end(o);
1199 int z_VariantValue(ODR o, Z_VariantValue **p, int opt)
1201 if (!odr_sequence_begin(o, p, sizeof(**p)))
1202 return opt && odr_ok(o);
1204 odr_explicit(o, odr_integer, &(*p)->dataType, ODR_CONTEXT, 0, 0) &&
1205 odr_explicit(o, z_ValueSet, &(*p)->values, ODR_CONTEXT, 1, 1) &&
1206 odr_sequence_end(o);
1209 int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt)
1211 if (o->direction == ODR_DECODE)
1212 *p = odr_malloc(o, sizeof(**p));
1215 if (odr_sequence_of(o, z_ValueDescription, &(*p)->enumerated,
1216 &(*p)->num_enumerated))
1219 return opt && odr_ok(o);
1222 int z_ValueSet(ODR o, Z_ValueSet **p, int opt)
1224 static Odr_arm arm[] =
1226 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ValueSet_range, z_ValueRange},
1227 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueSet_enumerated,
1228 z_ValueSetEnumerated},
1232 if (o->direction == ODR_DECODE)
1233 *p = odr_malloc(o, sizeof(**p));
1236 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1239 return opt && odr_ok(o);
1242 int z_ValueRange(ODR o, Z_ValueRange **p, int opt)
1244 if (!odr_sequence_begin(o, p, sizeof(**p)))
1245 return opt && odr_ok(o);
1247 odr_explicit(o, z_ValueDescription, &(*p)->lower, ODR_CONTEXT, 0, 1) &&
1248 odr_explicit(o, z_ValueDescription, &(*p)->upper, ODR_CONTEXT, 1, 1) &&
1249 odr_sequence_end(o);
1252 int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt)
1254 static Odr_arm arm[] =
1256 {ODR_NONE, -1, -1, Z_ValueDescription_integer, odr_integer},
1257 {ODR_NONE, -1, -1, Z_ValueDescription_string, z_InternationalString},
1258 {ODR_NONE, -1, -1, Z_ValueDescription_octets, odr_octetstring},
1259 {ODR_NONE, -1, -1, Z_ValueDescription_oid, odr_oid},
1260 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueDescription_unit, z_Unit},
1261 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ValueDescription_valueAndUnit, z_IntUnit},
1265 if (o->direction == ODR_DECODE)
1266 *p = odr_malloc(o, sizeof(**p));
1268 return opt && odr_ok(o);
1269 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1272 return opt && odr_ok(o);
1275 int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt)
1277 if (!odr_sequence_begin(o, p, sizeof(**p)))
1278 return opt && odr_ok(o);
1280 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1281 odr_implicit(o, z_InternationalString, &(*p)->unitSystem, ODR_CONTEXT,
1283 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 2, 1) &&
1284 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1285 (odr_sequence_of(o, z_UnitType, &(*p)->units, &(*p)->num_units) ||
1287 odr_sequence_end(o);
1290 int z_UnitType(ODR o, Z_UnitType **p, int opt)
1292 if (!odr_sequence_begin(o, p, sizeof(**p)))
1293 return opt && odr_ok(o);
1295 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1297 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1298 odr_explicit(o, z_StringOrNumeric, &(*p)->unitType, ODR_CONTEXT,
1300 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1301 odr_sequence_of(o, z_Units, &(*p)->units, &(*p)->num_units) &&
1302 odr_sequence_end(o);
1305 int z_Units(ODR o, Z_Units **p, int opt)
1307 if (!odr_sequence_begin(o, p, sizeof(**p)))
1308 return opt && odr_ok(o);
1310 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
1311 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1312 odr_explicit(o, z_StringOrNumeric, &(*p)->unit, ODR_CONTEXT, 2, 0) &&
1313 odr_sequence_end(o);
1316 int z_CategoryList(ODR o, Z_CategoryList **p, int opt)
1318 if (!odr_sequence_begin(o, p, sizeof(**p)))
1319 return opt && odr_ok(o);
1321 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1322 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
1323 odr_sequence_of(o, z_CategoryInfo, &(*p)->categories,
1324 &(*p)->num_categories) &&
1325 odr_sequence_end(o);
1328 int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt)
1330 if (!odr_sequence_begin(o, p, sizeof(**p)))
1331 return opt && odr_ok(o);
1333 odr_implicit(o, z_InternationalString, &(*p)->category, ODR_CONTEXT,
1335 odr_implicit(o, z_InternationalString, &(*p)->originalCategory,
1336 ODR_CONTEXT, 2, 1) &&
1337 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 3, 1) &&
1338 odr_implicit(o, z_InternationalString, &(*p)->asn1Module, ODR_CONTEXT,
1340 odr_sequence_end(o);
1343 int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt)
1345 static Odr_arm arm[] =
1347 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Explain_targetInfo, z_TargetInfo},
1348 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Explain_databaseInfo, z_DatabaseInfo},
1349 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_Explain_schemaInfo, z_SchemaInfo},
1350 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_Explain_tagSetInfo, z_TagSetInfo},
1351 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_Explain_recordSyntaxInfo,
1352 z_RecordSyntaxInfo},
1353 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_Explain_attributeSetInfo,
1354 z_AttributeSetInfo},
1355 {ODR_IMPLICIT, ODR_CONTEXT, 6, Z_Explain_termListInfo,
1357 {ODR_IMPLICIT, ODR_CONTEXT, 7, Z_Explain_extendedServicesInfo,
1358 z_ExtendedServicesInfo},
1359 {ODR_IMPLICIT, ODR_CONTEXT, 8, Z_Explain_attributeDetails,
1360 z_AttributeDetails},
1361 {ODR_IMPLICIT, ODR_CONTEXT, 9, Z_Explain_termListDetails,
1363 {ODR_IMPLICIT, ODR_CONTEXT, 10, Z_Explain_elementSetDetails,
1364 z_ElementSetDetails},
1365 {ODR_IMPLICIT, ODR_CONTEXT, 11, Z_Explain_retrievalRecordDetails,
1366 z_RetrievalRecordDetails},
1367 {ODR_IMPLICIT, ODR_CONTEXT, 12, Z_Explain_sortDetails,
1369 {ODR_IMPLICIT, ODR_CONTEXT, 13, Z_Explain_processing,
1370 z_ProcessingInformation},
1371 {ODR_IMPLICIT, ODR_CONTEXT, 14, Z_Explain_variants,
1373 {ODR_IMPLICIT, ODR_CONTEXT, 15, Z_Explain_units, z_UnitInfo},
1374 {ODR_IMPLICIT, ODR_CONTEXT, 100, Z_Explain_categoryList,
1379 if (o->direction == ODR_DECODE)
1380 *p = odr_malloc(o, sizeof(**p));
1383 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1386 return opt && odr_ok(o);