2 * Copyright (c) 1995, Index Data.
3 * See the file LICENSE for details.
4 * Sebastian Hammer, Adam Dickmeiss
7 * Revision 1.4 1995-09-29 17:11:54 quinn
10 * Revision 1.3 1995/09/27 15:02:42 quinn
11 * Modified function heads & prototypes.
13 * Revision 1.2 1995/08/15 11:59:43 quinn
16 * Revision 1.1 1995/08/10 08:54:02 quinn
24 int z_LanguageCode(ODR o, char **p, int opt);
25 int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt);
26 int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt);
27 int z_HumanString(ODR o, Z_HumanString **p, int opt);
28 int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt);
29 int z_IconObject(ODR o, Z_IconObject **p, int opt);
30 int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt);
31 int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt);
32 int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt);
33 int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt);
34 int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt);
35 int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt);
36 int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt);
37 int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt);
38 int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt);
39 int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt);
40 int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt);
41 int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt);
42 int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt);
43 int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt);
44 int z_SearchKey(ODR o, Z_SearchKey **p, int opt);
45 int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt);
46 int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt);
47 int z_CostsOtherCharge(ODR o, Z_CostsOtherCharge **p, int opt);
48 int z_Costs(ODR o, Z_Costs **p, int opt);
49 int z_Charge(ODR o, Z_Charge **p, int opt);
50 int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt);
51 int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt);
52 int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt);
53 int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt);
54 int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt);
55 int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt);
56 int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt);
57 int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt);
58 int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt);
59 int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt);
60 int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt);
61 int z_PathUnit(ODR o, Z_PathUnit **p, int opt);
62 int z_Path(ODR o, Z_Path **p, int opt);
63 int z_ElementInfoList(ODR o, Z_Path **p, int opt);
64 int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt);
65 int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt);
66 int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt);
67 int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt);
68 int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt);
69 int z_AttributeType(ODR o, Z_AttributeType **p, int opt);
70 int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt);
71 int z_TermListElement(ODR o, Z_TermListElement **p, int opt);
72 int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt);
73 int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt);
74 int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt);
75 int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt);
76 int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt);
77 int z_OmittedAttributeInterpretation(ODR o, Z_OmittedAttributeInterpretation **p, int opt);
78 int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt);
79 int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt);
80 int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt);
81 int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt);
82 int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt);
83 int z_RecordTag(ODR o, Z_RecordTag **p, int opt);
84 int z_SortDetails(ODR o, Z_SortDetails **p, int opt);
85 int z_SortKeyDetailsSortType(ODR o, Z_SortKeyDetailsSortType **p, int opt);
86 int z_SortKeyDetails(ODR o, Z_SortKeyDetails **p, int opt);
87 int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt);
88 int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt);
89 int z_VariantClass(ODR o, Z_VariantClass **p, int opt);
90 int z_VariantType(ODR o, Z_VariantType **p, int opt);
91 int z_VariantValue(ODR o, Z_VariantValue **p, int opt);
92 int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt);
93 int z_ValueSet(ODR o, Z_ValueSet **p, int opt);
94 int z_ValueRange(ODR o, Z_ValueRange **p, int opt);
95 int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt);
96 int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt);
97 int z_UnitType(ODR o, Z_UnitType **p, int opt);
98 int z_Units(ODR o, Z_Units **p, int opt);
99 int z_CategoryList(ODR o, Z_CategoryList **p, int opt);
100 int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt);
101 int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt);
103 int z_LanguageCode(ODR o, char **p, int opt)
105 return z_InternationalString(o, p, opt);
108 int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt)
110 if (!odr_sequence_begin(o, p, sizeof(**p)))
111 return opt && odr_ok(o);
113 odr_implicit(o, odr_generalizedtime, &(*p)->dateAdded, ODR_CONTEXT, 0, 1) &&
114 odr_implicit(o, odr_generalizedtime, &(*p)->dateChanged, ODR_CONTEXT, 1, 1) &&
115 odr_implicit(o, odr_generalizedtime, &(*p)->expiry, ODR_CONTEXT, 2, 1) &&
116 odr_implicit(o, z_LanguageCode, &(*p)->humanStringLanguage, ODR_CONTEXT, 3, 1) &&
117 z_OtherInformation(o, &(*p)->otherInfo, 1) &&
121 int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt)
123 if (!odr_sequence_begin(o, p, sizeof(**p)))
124 return opt && odr_ok(o);
126 odr_implicit(o, z_LanguageCode, &(*p)->language, ODR_CONTEXT, 0, 1) &&
127 odr_implicit(o, z_InternationalString, &(*p)->text, ODR_CONTEXT,
132 int z_HumanString(ODR o, Z_HumanString **p, int opt)
134 if (o->direction == ODR_DECODE)
135 *p = odr_malloc(o, sizeof(**p));
137 return opt && odr_ok(o);
138 if (odr_sequence_of(o, z_HumanStringUnit, &(*p)->strings,
142 return opt && odr_ok(o);
145 int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt)
147 static Odr_arm arm[] =
149 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IconObject_ianaType,
150 z_InternationalString},
151 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IconObject_z3950type,
152 z_InternationalString},
153 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IconObject_otherType,
154 z_InternationalString},
158 if (!odr_sequence_begin(o, p, sizeof(**p)))
159 return opt && odr_ok(o);
161 odr_constructed_begin(o, &(*p)->bodyType, ODR_CONTEXT, 1) &&
162 odr_choice(o, arm, &(*p)->bodyType, &(*p)->which) &&
163 odr_constructed_end(o) &&
164 odr_implicit(o, odr_octetstring, &(*p)->content, ODR_CONTEXT, 2, 0) &&
168 int z_IconObject(ODR o, Z_IconObject **p, int opt)
170 if (o->direction == ODR_DECODE)
171 *p = odr_malloc(o, sizeof(**p));
174 if (odr_sequence_of(o, z_IconObjectUnit, &(*p)->iconUnits,
175 &(*p)->num_iconUnits))
178 return opt && odr_ok(o);
181 int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt)
183 if (!odr_sequence_begin(o, p, sizeof(**p)))
184 return opt && odr_ok(o);
186 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
187 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
188 odr_implicit(o, z_HumanString, &(*p)->address, ODR_CONTEXT, 2, 1) &&
189 odr_implicit(o, z_InternationalString, &(*p)->email, ODR_CONTEXT, 3, 1) &&
190 odr_implicit(o, z_InternationalString, &(*p)->phone, ODR_CONTEXT, 4, 1) &&
194 int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt)
196 if (!odr_sequence_begin(o, p, sizeof(**p)))
199 odr_implicit(o, z_InternationalString, &(*p)->hostAddress, ODR_CONTEXT, 0, 0) &&
200 odr_implicit(o, odr_integer, &(*p)->port, ODR_CONTEXT, 1, 0) &&
204 int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt)
206 if (!odr_sequence_begin(o, p, sizeof(**p)))
209 odr_implicit(o, z_InternationalString, &(*p)->pSel, ODR_CONTEXT, 0, 0) &&
210 odr_implicit(o, z_InternationalString, &(*p)->sSel, ODR_CONTEXT, 1, 1) &&
211 odr_implicit(o, z_InternationalString, &(*p)->tSel, ODR_CONTEXT, 2, 1) &&
212 odr_implicit(o, z_InternationalString, &(*p)->nSap, ODR_CONTEXT, 3, 0) &&
216 int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt)
218 if (!odr_sequence_begin(o, p, sizeof(**p)))
221 odr_implicit(o, z_InternationalString, &(*p)->type, ODR_CONTEXT, 0, 0) &&
222 odr_implicit(o, z_InternationalString, &(*p)->address, ODR_CONTEXT, 1, 0) &&
226 int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt)
228 static Odr_arm arm[] =
230 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_NetworkAddress_iA,
232 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_NetworkAddress_oPA,
233 z_NetworkAddressOPA},
234 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_NetworkAddress_other,
235 z_NetworkAddressOther},
239 if (o->direction == ODR_DECODE)
240 *p = odr_malloc(o, sizeof(**p));
243 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
246 return opt && odr_ok(o);
249 int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt)
251 if (!odr_sequence_begin(o, p, sizeof(**p)))
252 return opt && odr_ok(o);
254 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
255 (odr_sequence_of(o, z_QueryTypeDetails, &(*p)->queryTypesSupported,
256 &(*p)->num_queryTypesSupported) || odr_ok(o)) &&
257 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
258 (odr_sequence_of(o, odr_oid, &(*p)->diagnosticsSets,
259 &(*p)->num_diagnosticsSets) || odr_ok(o)) &&
260 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
261 (odr_sequence_of(o, odr_oid, &(*p)->attributeSetIds,
262 &(*p)->num_attributeSetIds) || odr_ok(o)) &&
263 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
264 (odr_sequence_of(o, odr_oid, &(*p)->schemas, &(*p)->num_schemas) ||
266 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
267 (odr_sequence_of(o, odr_oid, &(*p)->recordSyntaxes,
268 &(*p)->num_recordSyntaxes) || odr_ok(o)) &&
269 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
270 (odr_sequence_of(o, odr_oid, &(*p)->resourceChallenges,
271 &(*p)->num_resourceChallenges) || odr_ok(o)) &&
272 odr_implicit(o, z_AccessRestrictions, &(*p)->restrictedAccess,
273 ODR_CONTEXT, 6, 1) &&
274 odr_implicit(o, z_Costs, &(*p)->costInfo, ODR_CONTEXT, 8, 1) &&
275 odr_implicit_settag(o, ODR_CONTEXT, 9) &&
276 (odr_sequence_of(o, odr_oid, &(*p)->variantSets,
277 &(*p)->num_variantSets) || odr_ok(o)) &&
278 odr_implicit_settag(o, ODR_CONTEXT, 10) &&
279 (odr_sequence_of(o, z_ElementSetName, &(*p)->elementSetNames,
280 &(*p)->num_elementSetNames) || odr_ok(o)) &&
281 odr_implicit_settag(o, ODR_CONTEXT, 11) &&
282 (odr_sequence_of(o, z_InternationalString, &(*p)->unitSystems,
283 &(*p)->num_unitSystems) || odr_ok(o)) &&
287 int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt)
289 static Odr_arm arm[] =
291 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_QueryTypeDetails_private,
292 z_PrivateCapabilities},
293 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_QueryTypeDetails_rpn,
295 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_QueryTypeDetails_iso8777,
296 z_Iso8777Capabilities},
297 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_QueryTypeDetails_z3958,
299 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_QueryTypeDetails_erpn,
301 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_QueryTypeDetails_rankedList,
306 if (o->direction == ODR_DECODE)
307 *p = odr_malloc(o, sizeof(**p));
310 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
313 return opt && odr_ok(o);
316 int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt)
318 if (!odr_sequence_begin(o, p, sizeof(**p)))
319 return opt && odr_ok(o);
321 odr_implicit(o, z_InternationalString, &(*p)->operator, ODR_CONTEXT, 0, 0) &&
322 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
326 int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt)
328 if (!odr_sequence_begin(o, p, sizeof(**p)))
329 return opt && odr_ok(o);
331 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
332 (odr_sequence_of(o, z_PrivateCapOperator, &(*p)->operators,
333 &(*p)->num_operators) || odr_ok(o)) &&
334 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
335 (odr_sequence_of(o, z_SearchKey, &(*p)->searchKeys,
336 &(*p)->num_searchKeys) || odr_ok(o)) &&
337 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
338 (odr_sequence_of(o, z_HumanString, &(*p)->description,
339 &(*p)->num_description) || odr_ok(o)) &&
343 int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt)
345 if (!odr_sequence_begin(o, p, sizeof(**p)))
346 return opt && odr_ok(o);
348 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
349 (odr_sequence_of(o, odr_integer, &(*p)->operators, &(*p)->num_operators) || odr_ok(o)) &&
350 odr_implicit(o, odr_bool, &(*p)->resultSetAsOperandSupported,
351 ODR_CONTEXT, 1, 0) &&
352 odr_implicit(o, odr_bool, &(*p)->restrictionOperandSupported,
353 ODR_CONTEXT, 2, 0) &&
354 odr_implicit(o, z_ProximitySupport, &(*p)->proximity, ODR_CONTEXT,
359 int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt)
361 if (!odr_sequence_begin(o, p, sizeof(**p)))
362 return opt && odr_ok(o);
364 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
365 odr_sequence_of(o, z_SearchKey, &(*p)->searchKeys,
366 &(*p)->num_searchKeys) &&
367 odr_implicit(o, z_HumanString, &(*p)->restrictions, ODR_CONTEXT,
372 int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt)
374 if (!odr_sequence_begin(o, p, sizeof(**p)))
375 return opt && odr_ok(o);
377 odr_implicit(o, odr_integer, &(*p)->unit, ODR_CONTEXT, 0, 0) &&
378 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
382 int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt)
384 static Odr_arm arm[] =
386 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ProxSupportUnit_known,
388 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ProxSupportUnit_private,
389 z_ProxSupportPrivate},
393 if (o->direction == ODR_DECODE)
394 *p = odr_malloc(o, sizeof(**p));
397 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
400 return opt && odr_ok(o);
403 int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt)
405 if (!odr_sequence_begin(o, p, sizeof(**p)))
406 return opt && odr_ok(o);
408 odr_implicit(o, odr_bool, &(*p)->anySupport, ODR_CONTEXT, 0, 0) &&
409 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
410 (odr_sequence_of(o, z_ProxSupportUnit, &(*p)->unitsSupported,
411 &(*p)->num_unitsSupported) || odr_ok(o)) &&
415 int z_SearchKey(ODR o, Z_SearchKey **p, int opt)
417 if (!odr_sequence_begin(o, p, sizeof(**p)))
418 return opt && odr_ok(o);
420 odr_implicit(o, z_InternationalString, &(*p)->searchKey, ODR_CONTEXT, 0, 0) &&
421 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
425 int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt)
427 if (!odr_sequence_begin(o, p, sizeof(**p)))
428 return opt && odr_ok(o);
430 odr_explicit(o, odr_integer, &(*p)->accessType, ODR_CONTEXT, 0, 0) &&
431 odr_implicit(o, z_HumanString, &(*p)->accessText, ODR_CONTEXT, 1, 1) &&
432 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
433 (odr_sequence_of(o, odr_oid, &(*p)->accessChallenges,
434 &(*p)->num_accessChallenges) || odr_ok(o)) &&
438 int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt)
440 if (o->direction == ODR_DECODE)
441 *p = odr_malloc(o, sizeof(**p));
444 if (odr_sequence_of(o, z_AccessRestrictionsUnit, &(*p)->restrictions,
445 &(*p)->num_restrictions))
448 return opt && odr_ok(o);
451 int z_CostsOtherCharge(ODR o, Z_CostsOtherCharge **p, int opt)
453 if (!odr_sequence_begin(o, p, sizeof(**p)))
454 return opt && odr_ok(o);
456 odr_implicit(o, z_HumanString, &(*p)->forWhat, ODR_CONTEXT, 1, 0) &&
457 odr_implicit(o, z_Charge, &(*p)->charge, ODR_CONTEXT, 2, 1) &&
461 int z_Costs(ODR o, Z_Costs **p, int opt)
463 if (!odr_sequence_begin(o, p, sizeof(**p)))
464 return opt && odr_ok(o);
466 odr_implicit(o, z_Charge, &(*p)->connectCharge, ODR_CONTEXT, 0, 1) &&
467 odr_implicit(o, z_Charge, &(*p)->connectTime, ODR_CONTEXT, 1, 1) &&
468 odr_implicit(o, z_Charge, &(*p)->displayCharge, ODR_CONTEXT, 2, 1) &&
469 odr_implicit(o, z_Charge, &(*p)->searchCharge, ODR_CONTEXT, 3, 1) &&
470 odr_implicit(o, z_Charge, &(*p)->subscriptCharge, ODR_CONTEXT, 4, 1) &&
471 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
472 (odr_sequence_of(o, z_CostsOtherCharge, &(*p)->otherCharges,
473 &(*p)->num_otherCharges) || odr_ok(o)) &&
477 int z_Charge(ODR o, Z_Charge **p, int opt)
479 if (!odr_sequence_begin(o, p, sizeof(**p)))
480 return opt && odr_ok(o);
482 odr_implicit(o, z_IntUnit, &(*p)->cost, ODR_CONTEXT, 1, 0) &&
483 odr_implicit(o, z_Unit, &(*p)->perWhat, ODR_CONTEXT, 2, 1) &&
484 odr_implicit(o, z_HumanString, &(*p)->text, ODR_CONTEXT, 3, 1) &&
488 int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt)
490 if (o->direction == ODR_DECODE)
491 *p = odr_malloc(o, sizeof(**p));
494 if (odr_sequence_of(o, z_DatabaseName, &(*p)->databases,
495 &(*p)->num_databases))
498 return opt && odr_ok(o);
501 int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt)
503 if (!odr_sequence_begin(o, p, sizeof(**p)))
504 return opt && odr_ok(o);
506 odr_implicit(o, odr_oid, &(*p)->defaultAttributeSet,
507 ODR_CONTEXT, 0, 0) &&
508 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
509 odr_sequence_of(o, z_AttributeCombination, &(*p)->legalCombinations,
510 &(*p)->num_legalCombinations) &&
514 int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt)
516 if (o->direction == ODR_DECODE)
517 *p = odr_malloc(o, sizeof(**p));
520 if (odr_sequence_of(o, z_AttributeOccurrence, &(*p)->occurrences,
521 &(*p)->num_occurrences))
524 return opt && odr_ok(o);
527 int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt)
529 if (o->direction == ODR_DECODE)
530 *p = odr_malloc(o, sizeof(**p));
533 if (odr_sequence_of(o, z_StringOrNumeric, &(*p)->attributes,
534 &(*p)->num_attributes))
537 return opt && odr_ok(o);
540 int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt)
542 static Odr_arm arm[] =
544 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_AttributeOcc_anyOrNone, odr_null},
545 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_AttributeOcc_specific,
546 z_AttributeValueList},
550 if (!odr_sequence_begin(o, p, sizeof(**p)))
551 return opt && odr_ok(o);
553 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 0, 1) &&
554 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 1, 0) &&
555 odr_implicit(o, odr_null, &(*p)->mustBeSupplied, ODR_CONTEXT, 2, 1) &&
556 odr_choice(o, arm, &(*p)->attributeValues, &(*p)->which) &&
560 int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt)
562 if (!odr_sequence_begin(o, p, sizeof(**p)))
563 return opt && odr_ok(o);
565 odr_explicit(o, z_StringOrNumeric, &(*p)->value, ODR_CONTEXT, 0, 0) &&
566 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
567 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
568 (odr_sequence_of(o, z_StringOrNumeric, &(*p)->subAttributes,
569 &(*p)->num_subAttributes) || odr_ok(o)) &&
570 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
571 (odr_sequence_of(o, z_StringOrNumeric, &(*p)->superAttributes,
572 &(*p)->num_superAttributes) || odr_ok(o)) &&
573 odr_implicit(o, odr_null, &(*p)->partialSupport, ODR_CONTEXT, 4, 1) &&
579 int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt)
581 if (!odr_sequence_begin(o, p, sizeof(**p)))
582 return opt && odr_ok(o);
584 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
585 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
587 odr_implicit(o, z_HumanString, &(*p)->recentNews, ODR_CONTEXT, 2, 1) &&
588 odr_implicit(o, z_IconObject, &(*p)->icon, ODR_CONTEXT, 3, 1) &&
589 odr_implicit(o, odr_bool, &(*p)->namedResultSets, ODR_CONTEXT, 4, 0) &&
590 odr_implicit(o, odr_bool, &(*p)->multipleDBsearch, ODR_CONTEXT, 5, 0) &&
591 odr_implicit(o, odr_integer, &(*p)->maxResultSets, ODR_CONTEXT, 6, 1) &&
592 odr_implicit(o, odr_integer, &(*p)->maxResultSize, ODR_CONTEXT, 7, 1) &&
593 odr_implicit(o, odr_integer, &(*p)->maxTerms, ODR_CONTEXT, 8, 1) &&
594 odr_implicit(o, z_IntUnit, &(*p)->timeoutInterval, ODR_CONTEXT, 9, 1) &&
595 odr_implicit(o, z_HumanString, &(*p)->welcomeMessage, ODR_CONTEXT,
597 odr_implicit(o, z_ContactInfo, &(*p)->contactInfo, ODR_CONTEXT,
599 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
601 odr_implicit_settag(o, ODR_CONTEXT, 13) &&
602 (odr_sequence_of(o, z_InternationalString, &(*p)->nicknames,
603 &(*p)->num_nicknames) || odr_ok(o)) &&
604 odr_implicit(o, z_HumanString, &(*p)->usageRest, ODR_CONTEXT, 14, 1) &&
605 odr_implicit(o, z_HumanString, &(*p)->paymentAddr, ODR_CONTEXT,
607 odr_implicit(o, z_HumanString, &(*p)->hours, ODR_CONTEXT, 16, 1) &&
608 odr_implicit_settag(o, ODR_CONTEXT, 17) &&
609 (odr_sequence_of(o, z_DatabaseList, &(*p)->dbCombinations,
610 &(*p)->num_dbCombinations) || odr_ok(o)) &&
611 odr_implicit_settag(o, ODR_CONTEXT, 18) &&
612 (odr_sequence_of(o, z_NetworkAddress, &(*p)->addresses,
613 &(*p)->num_addresses) || odr_ok(o)) &&
614 odr_implicit(o, z_AccessInfo, &(*p)->commonAccessInfo, ODR_CONTEXT,
619 int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt)
621 static Odr_arm arm[] =
623 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Exp_RecordCount_actualNumber,
625 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Exp_RecordCount_approxNumber,
630 if (!odr_sequence_begin(o, p, sizeof(**p)))
631 return opt && odr_ok(o);
633 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
634 odr_implicit(o, z_DatabaseName, &(*p)->name, ODR_CONTEXT, 1, 0) &&
635 odr_implicit(o, odr_null, &(*p)->explainDatabase, ODR_CONTEXT, 2, 1) &&
636 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
637 (odr_sequence_of(o, z_DatabaseName, &(*p)->nicknames,
638 &(*p)->num_nicknames) || odr_ok(o)) &&
639 odr_implicit(o, z_IconObject, &(*p)->icon, ODR_CONTEXT, 4, 1) &&
640 odr_implicit(o, odr_bool, &(*p)->userFee, ODR_CONTEXT, 5, 0) &&
641 odr_implicit(o, odr_bool, &(*p)->available, ODR_CONTEXT, 6, 0) &&
642 odr_implicit(o, z_HumanString, &(*p)->titleString, ODR_CONTEXT, 7, 1) &&
643 odr_implicit_settag(o, ODR_CONTEXT, 8) &&
644 (odr_sequence_of(o, z_HumanString, &(*p)->keywords,
645 &(*p)->num_keywords) || odr_ok(o)) &&
646 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 9, 1) &&
647 odr_implicit(o, z_DatabaseList, &(*p)->associatedDbs, ODR_CONTEXT,
649 odr_implicit(o, z_DatabaseList, &(*p)->subDbs, ODR_CONTEXT, 11, 1) &&
650 odr_implicit(o, z_HumanString, &(*p)->disclaimers, ODR_CONTEXT,
652 odr_implicit(o, z_HumanString, &(*p)->news, ODR_CONTEXT, 13, 1) &&
653 ((odr_constructed_begin(o, p, ODR_CONTEXT, 14) &&
654 odr_choice(o, arm, &(*p)->recordCount, &(*p)->recordCount_which) &&
655 odr_constructed_end(o)) || odr_ok(o)) &&
656 odr_implicit(o, z_HumanString, &(*p)->defaultOrder, ODR_CONTEXT,
658 odr_implicit(o, odr_integer, &(*p)->avRecordSize, ODR_CONTEXT, 16, 1) &&
659 odr_implicit(o, odr_integer, &(*p)->maxRecordSize, ODR_CONTEXT,
661 odr_implicit(o, z_HumanString, &(*p)->hours, ODR_CONTEXT, 18, 1) &&
662 odr_implicit(o, z_HumanString, &(*p)->bestTime, ODR_CONTEXT, 19, 1) &&
663 odr_implicit(o, odr_generalizedtime, &(*p)->lastUpdate, ODR_CONTEXT,
665 odr_implicit(o, z_IntUnit, &(*p)->updateInterval, ODR_CONTEXT, 21, 1) &&
666 odr_implicit(o, z_HumanString, &(*p)->coverage, ODR_CONTEXT, 22, 1) &&
667 odr_implicit(o, odr_bool, &(*p)->proprietary, ODR_CONTEXT, 23, 1) &&
668 odr_implicit(o, z_HumanString, &(*p)->copyrightText, ODR_CONTEXT,
670 odr_implicit(o, z_HumanString, &(*p)->copyrightNotice, ODR_CONTEXT,
672 odr_implicit(o, z_ContactInfo, &(*p)->producerContactInfo, ODR_CONTEXT,
674 odr_implicit(o, z_ContactInfo, &(*p)->supplierContactInfo, ODR_CONTEXT,
676 odr_implicit(o, z_ContactInfo, &(*p)->submissionContactInfo,
677 ODR_CONTEXT, 28, 1) &&
678 odr_implicit(o, z_AccessInfo, &(*p)->accessInfo, ODR_CONTEXT, 29, 1) &&
682 int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt)
684 if (!odr_sequence_begin(o, p, sizeof(**p)))
687 odr_implicit(o, odr_integer, &(*p)->tagType, ODR_CONTEXT, 0, 0) &&
688 odr_implicit(o, odr_oid, &(*p)->tagSet, ODR_CONTEXT, 1, 1) &&
689 odr_implicit(o, odr_null, &(*p)->defaultTagType, ODR_CONTEXT, 2, 1) &&
693 int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt)
695 if (!odr_sequence_begin(o, p, sizeof(**p)))
696 return opt && odr_ok(o);
698 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
699 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 1, 0) &&
700 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
702 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 3, 1) &&
703 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
704 (odr_sequence_of(o, z_TagTypeMapping, &(*p)->tagTypeMapping,
705 &(*p)->num_tagTypeMapping) || odr_ok(o)) &&
706 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
707 (odr_sequence_of(o, z_ElementInfo, &(*p)->recordStructure,
708 &(*p)->num_recordStructure) || odr_ok(o)) &&
712 int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt)
714 if (!odr_sequence_begin(o, p, sizeof(**p)))
715 return opt && odr_ok(o);
717 odr_implicit(o, z_InternationalString, &(*p)->elementName, ODR_CONTEXT, 1, 0) &&
718 odr_implicit(o, z_Path, &(*p)->elementTagPath, ODR_CONTEXT, 2, 0) &&
719 odr_explicit(o, z_ElementDataType, &(*p)->dataType, ODR_CONTEXT, 3, 1) &&
720 odr_implicit(o, odr_bool, &(*p)->required, ODR_CONTEXT, 4, 0) &&
721 odr_implicit(o, odr_bool, &(*p)->repeatable, ODR_CONTEXT, 5, 0) &&
722 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 6, 1) &&
726 int z_PathUnit(ODR o, Z_PathUnit **p, int opt)
728 if (!odr_sequence_begin(o, p, sizeof(**p)))
731 odr_implicit(o, odr_integer, &(*p)->tagType, ODR_CONTEXT, 1, 0) &&
732 odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue, ODR_CONTEXT,
737 int z_Path(ODR o, Z_Path **p, int opt)
739 if (o->direction == ODR_DECODE)
740 *p = odr_malloc(o, sizeof(**p));
743 odr_implicit_settag(o, ODR_CONTEXT, 201);
744 if (odr_sequence_of(o, z_OtherInformationUnit, &(*p)->list,
748 return opt && odr_ok(o);
751 int z_ElementInfoList(ODR o, Z_Path **p, int opt)
753 if (o->direction == ODR_DECODE)
754 *p = odr_malloc(o, sizeof(**p));
757 odr_implicit_settag(o, ODR_CONTEXT, 201);
758 if (odr_sequence_of(o, z_OtherInformationUnit, &(*p)->list,
762 return opt && odr_ok(o);
765 int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt)
767 static Odr_arm arm[] =
769 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ElementDataType_primitive,
771 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ElementDataType_structured,
776 if (o->direction == ODR_DECODE)
777 *p = odr_malloc(o, sizeof(**p));
781 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
784 return opt && odr_ok(o);
787 int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt)
789 if (!odr_sequence_begin(o, p, sizeof(**p)))
792 odr_implicit(o, z_InternationalString, &(*p)->elementName,
793 ODR_CONTEXT, 1, 0) &&
794 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
795 (odr_sequence_of(o, z_InternationalString, &(*p)->nicknames,
796 &(*p)->num_nicknames) || odr_ok(o)) &&
797 odr_explicit(o, z_StringOrNumeric, &(*p)->elementTag, ODR_CONTEXT,
799 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
801 odr_implicit(o, odr_integer, &(*p)->dataType, ODR_CONTEXT, 5, 1) &&
802 z_OtherInformation(o, &(*p)->otherTagInfo, 1) &&
806 int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt)
808 if (!odr_sequence_begin(o, p, sizeof(**p)))
809 return opt && odr_ok(o);
811 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
812 odr_implicit(o, odr_oid, &(*p)->tagSet, ODR_CONTEXT, 1, 0) &&
813 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
815 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
817 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
818 (odr_sequence_of(o, z_TagSetInfoElements, &(*p)->elements,
819 &(*p)->num_elements) || odr_ok(o)) &&
823 int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt)
825 if (!odr_sequence_begin(o, p, sizeof(**p)))
826 return opt && odr_ok(o);
828 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
829 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 1, 0) &&
830 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
832 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
833 (odr_sequence_of(o, odr_oid, &(*p)->transferSyntaxes,
834 &(*p)->num_transferSyntaxes) || odr_ok(o)) &&
835 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
836 odr_implicit(o, z_InternationalString, &(*p)->asn1Module, ODR_CONTEXT,
838 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
839 (odr_sequence_of(o, z_ElementInfo, &(*p)->abstractStructure,
840 &(*p)->num_abstractStructure) || odr_ok(o)) &&
844 int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt)
846 if (!odr_sequence_begin(o, p, sizeof(**p)))
847 return opt && odr_ok(o);
849 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
850 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 1, 0) &&
851 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 2, 0) &&
852 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
853 (odr_sequence_of(o, z_AttributeType, &(*p)->attributes,
854 &(*p)->num_attributes) || odr_ok(o)) &&
855 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
859 int z_AttributeType(ODR o, Z_AttributeType **p, int opt)
861 if (!odr_sequence_begin(o, p, sizeof(**p)))
862 return opt && odr_ok(o);
864 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
865 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
866 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 2, 0) &&
867 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
868 odr_sequence_of(o, z_AttributeDescription, &(*p)->attributeValues,
869 &(*p)->num_attributeValues) &&
873 int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt)
875 if (!odr_sequence_begin(o, p, sizeof(**p)))
876 return opt && odr_ok(o);
878 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
879 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
880 odr_explicit(o, z_StringOrNumeric, &(*p)->attributeValue, ODR_CONTEXT, 2, 0) &&
881 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
882 (odr_sequence_of(o, z_StringOrNumeric, &(*p)->equivalentAttributes,
883 &(*p)->num_equivalentAttributes) || odr_ok(o)) &&
887 int z_TermListElement(ODR o, Z_TermListElement **p, int opt)
889 if (!odr_sequence_begin(o, p, sizeof(**p)))
890 return opt && odr_ok(o);
892 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 1, 0) &&
893 odr_implicit(o, z_HumanString, &(*p)->title, ODR_CONTEXT, 2, 1) &&
894 odr_implicit(o, odr_integer, &(*p)->searchCost, ODR_CONTEXT, 3, 1) &&
895 odr_implicit(o, odr_bool, &(*p)->scanable, ODR_CONTEXT, 4, 0) &&
896 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
897 (odr_sequence_of(o, z_InternationalString, &(*p)->broader,
898 &(*p)->num_broader) || odr_ok(o)) &&
899 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
900 (odr_sequence_of(o, z_InternationalString, &(*p)->narrower,
901 &(*p)->num_narrower) || odr_ok(o)) &&
905 int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt)
907 if (!odr_sequence_begin(o, p, sizeof(**p)))
908 return opt && odr_ok(o);
910 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
911 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
913 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
914 (odr_sequence_of(o, z_TermListElement, &(*p)->termLists,
915 &(*p)->num_termLists) || odr_ok(o)) &&
919 int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt)
921 if (!odr_sequence_begin(o, p, sizeof(**p)))
922 return opt && odr_ok(o);
924 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
925 odr_implicit(o, odr_oid, &(*p)->type, ODR_CONTEXT, 1, 0) &&
926 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 2, 1) &&
927 odr_implicit(o, odr_bool, &(*p)->privateType, ODR_CONTEXT, 3, 0) &&
928 odr_implicit(o, odr_bool, &(*p)->restrictionsApply, ODR_CONTEXT, 5, 0) &&
929 odr_implicit(o, odr_bool, &(*p)->feeApply, ODR_CONTEXT, 6, 0) &&
930 odr_implicit(o, odr_bool, &(*p)->available, ODR_CONTEXT, 7, 0) &&
931 odr_implicit(o, odr_bool, &(*p)->retentionSupported, ODR_CONTEXT, 8, 0) &&
932 odr_implicit(o, odr_integer, &(*p)->waitAction, ODR_CONTEXT, 9, 0) &&
933 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 10, 1) &&
934 odr_implicit(o, z_External, &(*p)->specificExplain, ODR_CONTEXT, 11, 1) &&
935 odr_implicit(o, z_InternationalString, &(*p)->esASN, ODR_CONTEXT, 12, 1) &&
939 int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt)
941 if (!odr_sequence_begin(o, p, sizeof(**p)))
942 return opt && odr_ok(o);
944 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
945 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) &&
946 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
947 (odr_sequence_of(o, z_AttributeSetDetails, &(*p)->attributesBySet,
948 &(*p)->num_attributesBySet) && odr_ok(o)) &&
949 odr_implicit(o, z_AttributeCombinations, &(*p)->attributeCombinations, ODR_CONTEXT, 3, 1) &&
953 int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt)
955 if (!odr_sequence_begin(o, p, sizeof(**p)))
956 return opt && odr_ok(o);
958 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT,
960 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
961 odr_sequence_of(o, z_AttributeTypeDetails, &(*p)->attributesByType,
962 &(*p)->num_attributesByType) &&
966 int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt)
968 if (!odr_sequence_begin(o, p, sizeof(**p)))
969 return opt && odr_ok(o);
971 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 0, 0) &&
972 odr_implicit(o, z_OmittedAttributeInterpretation, &(*p)->optionalType, ODR_CONTEXT, 1, 1) &&
973 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
974 (odr_sequence_of(o, z_AttributeValue, &(*p)->attributeValues,
975 &(*p)->num_attributeValues) || odr_ok(o)) &&
979 int z_OmittedAttributeInterpretation(ODR o, Z_OmittedAttributeInterpretation **p, int opt)
981 if (!odr_sequence_begin(o, p, sizeof(**p)))
982 return opt && odr_ok(o);
984 odr_explicit(o, z_StringOrNumeric, &(*p)->defaultValue, ODR_CONTEXT, 0, 1) &&
985 odr_implicit(o, z_HumanString, &(*p)->defaultDescription, ODR_CONTEXT, 1, 1) &&
989 int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt)
991 if (!odr_sequence_begin(o, p, sizeof(**p)))
992 return opt && odr_ok(o);
994 odr_implicit(o, odr_integer, &(*p)->maxStepSize, ODR_CONTEXT, 0, 1) &&
995 odr_implicit(o, z_HumanString, &(*p)->collatingSequence, ODR_CONTEXT, 1, 1) &&
996 odr_implicit(o, odr_bool, &(*p)->increasing, ODR_CONTEXT, 2, 1) &&
1000 int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt)
1002 if (!odr_sequence_begin(o, p, sizeof(**p)))
1003 return opt && odr_ok(o);
1005 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1006 odr_implicit(o, z_InternationalString, &(*p)->termListName, ODR_CONTEXT, 1, 0) &&
1007 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 2, 1) &&
1008 odr_implicit(o, z_AttributeCombinations, &(*p)->attributes, ODR_CONTEXT, 3, 1) &&
1009 odr_implicit(o, z_EScanInfo, &(*p)->scanInfo, ODR_CONTEXT, 4, 1) &&
1010 odr_implicit(o, odr_integer, &(*p)->estNumberTerms, ODR_CONTEXT, 5, 1) &&
1011 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
1012 (odr_sequence_of(o, z_Term, &(*p)->sampleTerms,
1013 &(*p)->num_sampleTerms) || odr_ok(o)) &&
1014 odr_sequence_end(o);
1017 int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt)
1019 if (!odr_sequence_begin(o, p, sizeof(**p)))
1020 return opt && odr_ok(o);
1022 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1023 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) &&
1024 odr_implicit(o, z_ElementSetName, &(*p)->elementSetName, ODR_CONTEXT, 2, 0) &&
1025 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 3, 0) &&
1026 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 4, 0) &&
1027 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 5, 1) &&
1028 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
1029 (odr_sequence_of(o, z_PerElementDetails, &(*p)->detailsPerElement, &(*p)->num_detailsPerElement) || odr_ok(o)) &&
1030 odr_sequence_end(o);
1033 int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt)
1035 if (!odr_sequence_begin(o, p, sizeof(**p)))
1036 return opt && odr_ok(o);
1038 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1039 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) &&
1040 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 2, 0) &&
1041 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 3, 0) &&
1042 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
1043 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
1044 (odr_sequence_of(o, z_PerElementDetails, &(*p)->detailsPerElement,
1045 &(*p)->num_detailsPerElement) || odr_ok(o)) &&
1046 odr_sequence_end(o);
1049 int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt)
1051 if (!odr_sequence_begin(o, p, sizeof(**p)))
1052 return opt && odr_ok(o);
1054 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
1055 odr_implicit(o, z_RecordTag, &(*p)->recordTag, ODR_CONTEXT, 1, 1) &&
1056 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1057 (odr_sequence_of(o, z_Path, &(*p)->schemaTags, &(*p)->num_schemaTags) ||
1059 odr_implicit(o, odr_integer, &(*p)->maxSize, ODR_CONTEXT, 3, 1) &&
1060 odr_implicit(o, odr_integer, &(*p)->minSize, ODR_CONTEXT, 4, 1) &&
1061 odr_implicit(o, odr_integer, &(*p)->avgSize, ODR_CONTEXT, 5, 1) &&
1062 odr_implicit(o, odr_integer, &(*p)->fixedSize, ODR_CONTEXT, 6, 1) &&
1063 odr_implicit(o, odr_bool, &(*p)->repeatable, ODR_CONTEXT, 8, 0) &&
1064 odr_implicit(o, odr_bool, &(*p)->required, ODR_CONTEXT, 9, 0) &&
1065 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 12, 1) &&
1066 odr_implicit(o, z_HumanString, &(*p)->contents, ODR_CONTEXT, 13, 1) &&
1067 odr_implicit(o, z_HumanString, &(*p)->billingInfo, ODR_CONTEXT, 14, 1) &&
1068 odr_implicit(o, z_HumanString, &(*p)->restrictions, ODR_CONTEXT, 15, 1) &&
1069 odr_implicit_settag(o, ODR_CONTEXT, 16) &&
1070 (odr_sequence_of(o, z_InternationalString, &(*p)->alternateNames,
1071 &(*p)->num_alternateNames) || odr_ok(o)) &&
1072 odr_implicit_settag(o, ODR_CONTEXT, 17) &&
1073 (odr_sequence_of(o, z_InternationalString, &(*p)->genericNames,
1074 &(*p)->num_genericNames) || odr_ok(o)) &&
1075 odr_implicit(o, z_AttributeCombinations, &(*p)->searchAccess,
1076 ODR_CONTEXT, 18, 1) &&
1077 odr_sequence_end(o);
1080 int z_RecordTag(ODR o, Z_RecordTag **p, int opt)
1082 if (!odr_sequence_begin(o, p, sizeof(**p)))
1083 return opt && odr_ok(o);
1085 odr_explicit(o, z_StringOrNumeric, &(*p)->qualifier, ODR_CONTEXT,
1087 odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue, ODR_CONTEXT,
1089 odr_sequence_end(o);
1092 int z_SortDetails(ODR o, Z_SortDetails **p, int opt)
1094 if (!odr_sequence_begin(o, p, sizeof(**p)))
1095 return opt && odr_ok(o);
1097 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1098 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
1100 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1101 (odr_sequence_of(o, z_SortKeyDetails, &(*p)->sortKeys,
1102 &(*p)->num_sortKeys) || odr_ok(o)) &&
1103 odr_sequence_end(o);
1106 int z_SortKeyDetailsSortType(ODR o, Z_SortKeyDetailsSortType **p, int opt)
1108 static Odr_arm arm[] =
1110 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_character,
1112 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_numeric,
1114 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_structured,
1119 if (o->direction == ODR_DECODE)
1120 *p = odr_malloc(o, sizeof(**p));
1123 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1126 return opt && odr_ok(o);
1129 int z_SortKeyDetails(ODR o, Z_SortKeyDetails **p, int opt)
1131 if (!odr_sequence_begin(o, p, sizeof(**p)))
1132 return opt && odr_ok(o);
1134 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 0, 1) &&
1135 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
1136 (odr_sequence_of(o, z_Specification, &(*p)->elementSpecifications,
1137 &(*p)->num_elementSpecifications) || odr_ok(o)) &&
1138 odr_implicit(o, z_AttributeCombinations, &(*p)->attributeSpecifications,
1139 ODR_CONTEXT, 2, 1) &&
1140 odr_explicit(o, z_SortKeyDetailsSortType, &(*p)->sortType, ODR_CONTEXT,
1142 odr_implicit(o, odr_integer, &(*p)->caseSensitivity, ODR_CONTEXT,
1144 odr_sequence_end(o);
1147 int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt)
1149 if (!odr_sequence_begin(o, p, sizeof(**p)))
1150 return opt && odr_ok(o);
1152 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1153 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
1155 odr_implicit(o, odr_integer, &(*p)->processingContext, ODR_CONTEXT,
1157 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1159 odr_implicit(o, odr_oid, &(*p)->oid, ODR_CONTEXT, 4, 0) &&
1160 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 5, 1) &&
1161 odr_implicit(o, z_External, &(*p)->instructions, ODR_CONTEXT, 6, 1) &&
1162 odr_sequence_end(o);
1165 int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt)
1167 if (!odr_sequence_begin(o, p, sizeof(**p)))
1168 return opt && odr_ok(o);
1170 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1171 odr_implicit(o, odr_oid, &(*p)->variantSet, ODR_CONTEXT, 1, 0) &&
1172 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1174 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1175 (odr_sequence_of(o, z_VariantClass, &(*p)->variants,
1176 &(*p)->num_variants) || odr_ok(o)) &&
1177 odr_sequence_end(o);
1180 int z_VariantClass(ODR o, Z_VariantClass **p, int opt)
1182 if (!odr_sequence_begin(o, p, sizeof(**p)))
1183 return opt && odr_ok(o);
1185 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1187 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1188 odr_implicit(o, odr_integer, &(*p)->variantClass, ODR_CONTEXT, 2, 0) &&
1189 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1190 odr_sequence_of(o, z_VariantType, &(*p)->variantTypes,
1191 &(*p)->num_variantTypes) &&
1192 odr_sequence_end(o);
1195 int z_VariantType(ODR o, Z_VariantType **p, int opt)
1197 if (!odr_sequence_begin(o, p, sizeof(**p)))
1198 return opt && odr_ok(o);
1200 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
1201 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1202 odr_implicit(o, odr_integer, &(*p)->variantType, ODR_CONTEXT, 2, 0) &&
1203 odr_implicit(o, z_VariantValue, &(*p)->variantValue, ODR_CONTEXT, 3, 1) &&
1204 odr_sequence_end(o);
1207 int z_VariantValue(ODR o, Z_VariantValue **p, int opt)
1209 if (!odr_sequence_begin(o, p, sizeof(**p)))
1210 return opt && odr_ok(o);
1212 odr_explicit(o, odr_integer, &(*p)->dataType, ODR_CONTEXT, 0, 0) &&
1213 odr_explicit(o, z_ValueSet, &(*p)->values, ODR_CONTEXT, 1, 1) &&
1214 odr_sequence_end(o);
1217 int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt)
1219 if (o->direction == ODR_DECODE)
1220 *p = odr_malloc(o, sizeof(**p));
1223 if (odr_sequence_of(o, z_ValueDescription, &(*p)->enumerated,
1224 &(*p)->num_enumerated))
1227 return opt && odr_ok(o);
1230 int z_ValueSet(ODR o, Z_ValueSet **p, int opt)
1232 static Odr_arm arm[] =
1234 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ValueSet_range, z_ValueRange},
1235 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueSet_enumerated,
1236 z_ValueSetEnumerated},
1240 if (o->direction == ODR_DECODE)
1241 *p = odr_malloc(o, sizeof(**p));
1244 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1247 return opt && odr_ok(o);
1250 int z_ValueRange(ODR o, Z_ValueRange **p, int opt)
1252 if (!odr_sequence_begin(o, p, sizeof(**p)))
1253 return opt && odr_ok(o);
1255 odr_explicit(o, z_ValueDescription, &(*p)->lower, ODR_CONTEXT, 0, 1) &&
1256 odr_explicit(o, z_ValueDescription, &(*p)->upper, ODR_CONTEXT, 1, 1) &&
1257 odr_sequence_end(o);
1260 int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt)
1262 static Odr_arm arm[] =
1264 {ODR_NONE, -1, -1, Z_ValueDescription_integer, odr_integer},
1265 {ODR_NONE, -1, -1, Z_ValueDescription_string, z_InternationalString},
1266 {ODR_NONE, -1, -1, Z_ValueDescription_octets, odr_octetstring},
1267 {ODR_NONE, -1, -1, Z_ValueDescription_oid, odr_oid},
1268 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueDescription_unit, z_Unit},
1269 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ValueDescription_valueAndUnit, z_IntUnit},
1273 if (o->direction == ODR_DECODE)
1274 *p = odr_malloc(o, sizeof(**p));
1276 return opt && odr_ok(o);
1277 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1280 return opt && odr_ok(o);
1283 int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt)
1285 if (!odr_sequence_begin(o, p, sizeof(**p)))
1286 return opt && odr_ok(o);
1288 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1289 odr_implicit(o, z_InternationalString, &(*p)->unitSystem, ODR_CONTEXT,
1291 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 2, 1) &&
1292 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1293 (odr_sequence_of(o, z_UnitType, &(*p)->units, &(*p)->num_units) ||
1295 odr_sequence_end(o);
1298 int z_UnitType(ODR o, Z_UnitType **p, int opt)
1300 if (!odr_sequence_begin(o, p, sizeof(**p)))
1301 return opt && odr_ok(o);
1303 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1305 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1306 odr_explicit(o, z_StringOrNumeric, &(*p)->unitType, ODR_CONTEXT,
1308 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1309 odr_sequence_of(o, z_Units, &(*p)->units, &(*p)->num_units) &&
1310 odr_sequence_end(o);
1313 int z_Units(ODR o, Z_Units **p, int opt)
1315 if (!odr_sequence_begin(o, p, sizeof(**p)))
1316 return opt && odr_ok(o);
1318 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
1319 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1320 odr_explicit(o, z_StringOrNumeric, &(*p)->unit, ODR_CONTEXT, 2, 0) &&
1321 odr_sequence_end(o);
1324 int z_CategoryList(ODR o, Z_CategoryList **p, int opt)
1326 if (!odr_sequence_begin(o, p, sizeof(**p)))
1327 return opt && odr_ok(o);
1329 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1330 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
1331 odr_sequence_of(o, z_CategoryInfo, &(*p)->categories,
1332 &(*p)->num_categories) &&
1333 odr_sequence_end(o);
1336 int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt)
1338 if (!odr_sequence_begin(o, p, sizeof(**p)))
1339 return opt && odr_ok(o);
1341 odr_implicit(o, z_InternationalString, &(*p)->category, ODR_CONTEXT,
1343 odr_implicit(o, z_InternationalString, &(*p)->originalCategory,
1344 ODR_CONTEXT, 2, 1) &&
1345 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 3, 1) &&
1346 odr_implicit(o, z_InternationalString, &(*p)->asn1Module, ODR_CONTEXT,
1348 odr_sequence_end(o);
1351 int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt)
1353 static Odr_arm arm[] =
1355 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Explain_targetInfo, z_TargetInfo},
1356 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Explain_databaseInfo, z_DatabaseInfo},
1357 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_Explain_schemaInfo, z_SchemaInfo},
1358 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_Explain_tagSetInfo, z_TagSetInfo},
1359 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_Explain_recordSyntaxInfo,
1360 z_RecordSyntaxInfo},
1361 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_Explain_attributeSetInfo,
1362 z_AttributeSetInfo},
1363 {ODR_IMPLICIT, ODR_CONTEXT, 6, Z_Explain_termListInfo,
1365 {ODR_IMPLICIT, ODR_CONTEXT, 7, Z_Explain_extendedServicesInfo,
1366 z_ExtendedServicesInfo},
1367 {ODR_IMPLICIT, ODR_CONTEXT, 8, Z_Explain_attributeDetails,
1368 z_AttributeDetails},
1369 {ODR_IMPLICIT, ODR_CONTEXT, 9, Z_Explain_termListDetails,
1371 {ODR_IMPLICIT, ODR_CONTEXT, 10, Z_Explain_elementSetDetails,
1372 z_ElementSetDetails},
1373 {ODR_IMPLICIT, ODR_CONTEXT, 11, Z_Explain_retrievalRecordDetails,
1374 z_RetrievalRecordDetails},
1375 {ODR_IMPLICIT, ODR_CONTEXT, 12, Z_Explain_sortDetails,
1377 {ODR_IMPLICIT, ODR_CONTEXT, 13, Z_Explain_processing,
1378 z_ProcessingInformation},
1379 {ODR_IMPLICIT, ODR_CONTEXT, 14, Z_Explain_variants,
1381 {ODR_IMPLICIT, ODR_CONTEXT, 15, Z_Explain_units, z_UnitInfo},
1382 {ODR_IMPLICIT, ODR_CONTEXT, 100, Z_Explain_categoryList,
1387 if (o->direction == ODR_DECODE)
1388 *p = odr_malloc(o, sizeof(**p));
1391 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1394 return opt && odr_ok(o);