2 * Copyright (c) 1995, Index Data.
3 * See the file LICENSE for details.
4 * Sebastian Hammer, Adam Dickmeiss
7 * Revision 1.7 1995-12-14 16:28:07 quinn
10 * Revision 1.6 1995/12/14 11:09:09 quinn
11 * Fixed bug in tagging.
13 * Revision 1.5 1995/12/05 11:15:50 quinn
16 * Revision 1.4 1995/09/29 17:11:54 quinn
19 * Revision 1.3 1995/09/27 15:02:42 quinn
20 * Modified function heads & prototypes.
22 * Revision 1.2 1995/08/15 11:59:43 quinn
25 * Revision 1.1 1995/08/10 08:54:02 quinn
33 int z_LanguageCode(ODR o, char **p, int opt);
34 int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt);
35 int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt);
36 int z_HumanString(ODR o, Z_HumanString **p, int opt);
37 int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt);
38 int z_IconObject(ODR o, Z_IconObject **p, int opt);
39 int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt);
40 int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt);
41 int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt);
42 int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt);
43 int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt);
44 int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt);
45 int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt);
46 int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt);
47 int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt);
48 int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt);
49 int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt);
50 int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt);
51 int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt);
52 int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt);
53 int z_SearchKey(ODR o, Z_SearchKey **p, int opt);
54 int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt);
55 int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt);
56 int z_CostsOtherCharge(ODR o, Z_CostsOtherCharge **p, int opt);
57 int z_Costs(ODR o, Z_Costs **p, int opt);
58 int z_Charge(ODR o, Z_Charge **p, int opt);
59 int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt);
60 int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt);
61 int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt);
62 int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt);
63 int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt);
64 int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt);
65 int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt);
66 int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt);
67 int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt);
68 int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt);
69 int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt);
70 int z_PathUnit(ODR o, Z_PathUnit **p, int opt);
71 int z_Path(ODR o, Z_Path **p, int opt);
72 int z_ElementInfoList(ODR o, Z_Path **p, int opt);
73 int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt);
74 int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt);
75 int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt);
76 int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt);
77 int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt);
78 int z_AttributeType(ODR o, Z_AttributeType **p, int opt);
79 int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt);
80 int z_TermListElement(ODR o, Z_TermListElement **p, int opt);
81 int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt);
82 int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt);
83 int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt);
84 int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt);
85 int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt);
86 int z_OmittedAttributeInterpretation(ODR o, Z_OmittedAttributeInterpretation **p, int opt);
87 int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt);
88 int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt);
89 int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt);
90 int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt);
91 int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt);
92 int z_RecordTag(ODR o, Z_RecordTag **p, int opt);
93 int z_SortDetails(ODR o, Z_SortDetails **p, int opt);
94 int z_SortKeyDetailsSortType(ODR o, Z_SortKeyDetailsSortType **p, int opt);
95 int z_SortKeyDetails(ODR o, Z_SortKeyDetails **p, int opt);
96 int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt);
97 int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt);
98 int z_VariantClass(ODR o, Z_VariantClass **p, int opt);
99 int z_VariantType(ODR o, Z_VariantType **p, int opt);
100 int z_VariantValue(ODR o, Z_VariantValue **p, int opt);
101 int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt);
102 int z_ValueSet(ODR o, Z_ValueSet **p, int opt);
103 int z_ValueRange(ODR o, Z_ValueRange **p, int opt);
104 int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt);
105 int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt);
106 int z_UnitType(ODR o, Z_UnitType **p, int opt);
107 int z_Units(ODR o, Z_Units **p, int opt);
108 int z_CategoryList(ODR o, Z_CategoryList **p, int opt);
109 int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt);
110 int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt);
112 int z_LanguageCode(ODR o, char **p, int opt)
114 return z_InternationalString(o, p, opt);
117 int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt)
119 if (!odr_sequence_begin(o, p, sizeof(**p)))
120 return opt && odr_ok(o);
122 odr_implicit(o, odr_generalizedtime, &(*p)->dateAdded, ODR_CONTEXT, 0, 1) &&
123 odr_implicit(o, odr_generalizedtime, &(*p)->dateChanged, ODR_CONTEXT, 1, 1) &&
124 odr_implicit(o, odr_generalizedtime, &(*p)->expiry, ODR_CONTEXT, 2, 1) &&
125 odr_implicit(o, z_LanguageCode, &(*p)->humanStringLanguage, ODR_CONTEXT, 3, 1) &&
126 z_OtherInformation(o, &(*p)->otherInfo, 1) &&
130 int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt)
132 if (!odr_sequence_begin(o, p, sizeof(**p)))
133 return opt && odr_ok(o);
135 odr_implicit(o, z_LanguageCode, &(*p)->language, ODR_CONTEXT, 0, 1) &&
136 odr_implicit(o, z_InternationalString, &(*p)->text, ODR_CONTEXT,
141 int z_HumanString(ODR o, Z_HumanString **p, int opt)
143 if (!odr_initmember(o, p, sizeof(**p)))
144 return opt && odr_ok(o);
145 if (odr_sequence_of(o, z_HumanStringUnit, &(*p)->strings,
149 return opt && odr_ok(o);
152 int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt)
154 static Odr_arm arm[] =
156 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IconObject_ianaType,
157 z_InternationalString},
158 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IconObject_z3950type,
159 z_InternationalString},
160 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IconObject_otherType,
161 z_InternationalString},
165 if (!odr_sequence_begin(o, p, sizeof(**p)))
166 return opt && odr_ok(o);
168 odr_constructed_begin(o, &(*p)->bodyType, ODR_CONTEXT, 1) &&
169 odr_choice(o, arm, &(*p)->bodyType, &(*p)->which) &&
170 odr_constructed_end(o) &&
171 odr_implicit(o, odr_octetstring, &(*p)->content, ODR_CONTEXT, 2, 0) &&
175 int z_IconObject(ODR o, Z_IconObject **p, int opt)
177 if (!odr_initmember(o, p, sizeof(**p)))
178 return opt && odr_ok(o);
179 if (odr_sequence_of(o, z_IconObjectUnit, &(*p)->iconUnits,
180 &(*p)->num_iconUnits))
183 return opt && odr_ok(o);
186 int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt)
188 if (!odr_sequence_begin(o, p, sizeof(**p)))
189 return opt && odr_ok(o);
191 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
192 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
193 odr_implicit(o, z_HumanString, &(*p)->address, ODR_CONTEXT, 2, 1) &&
194 odr_implicit(o, z_InternationalString, &(*p)->email, ODR_CONTEXT, 3, 1) &&
195 odr_implicit(o, z_InternationalString, &(*p)->phone, ODR_CONTEXT, 4, 1) &&
199 int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt)
201 if (!odr_sequence_begin(o, p, sizeof(**p)))
204 odr_implicit(o, z_InternationalString, &(*p)->hostAddress, ODR_CONTEXT, 0, 0) &&
205 odr_implicit(o, odr_integer, &(*p)->port, ODR_CONTEXT, 1, 0) &&
209 int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt)
211 if (!odr_sequence_begin(o, p, sizeof(**p)))
214 odr_implicit(o, z_InternationalString, &(*p)->pSel, ODR_CONTEXT, 0, 0) &&
215 odr_implicit(o, z_InternationalString, &(*p)->sSel, ODR_CONTEXT, 1, 1) &&
216 odr_implicit(o, z_InternationalString, &(*p)->tSel, ODR_CONTEXT, 2, 1) &&
217 odr_implicit(o, z_InternationalString, &(*p)->nSap, ODR_CONTEXT, 3, 0) &&
221 int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt)
223 if (!odr_sequence_begin(o, p, sizeof(**p)))
226 odr_implicit(o, z_InternationalString, &(*p)->type, ODR_CONTEXT, 0, 0) &&
227 odr_implicit(o, z_InternationalString, &(*p)->address, ODR_CONTEXT, 1, 0) &&
231 int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt)
233 static Odr_arm arm[] =
235 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_NetworkAddress_iA,
237 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_NetworkAddress_oPA,
238 z_NetworkAddressOPA},
239 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_NetworkAddress_other,
240 z_NetworkAddressOther},
244 if (!odr_initmember(o, p, sizeof(**p)))
245 return opt && odr_ok(o);
246 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
249 return opt && odr_ok(o);
252 int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt)
254 if (!odr_sequence_begin(o, p, sizeof(**p)))
255 return opt && odr_ok(o);
257 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
258 (odr_sequence_of(o, z_QueryTypeDetails, &(*p)->queryTypesSupported,
259 &(*p)->num_queryTypesSupported) || odr_ok(o)) &&
260 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
261 (odr_sequence_of(o, odr_oid, &(*p)->diagnosticsSets,
262 &(*p)->num_diagnosticsSets) || odr_ok(o)) &&
263 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
264 (odr_sequence_of(o, odr_oid, &(*p)->attributeSetIds,
265 &(*p)->num_attributeSetIds) || odr_ok(o)) &&
266 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
267 (odr_sequence_of(o, odr_oid, &(*p)->schemas, &(*p)->num_schemas) ||
269 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
270 (odr_sequence_of(o, odr_oid, &(*p)->recordSyntaxes,
271 &(*p)->num_recordSyntaxes) || odr_ok(o)) &&
272 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
273 (odr_sequence_of(o, odr_oid, &(*p)->resourceChallenges,
274 &(*p)->num_resourceChallenges) || odr_ok(o)) &&
275 odr_implicit(o, z_AccessRestrictions, &(*p)->restrictedAccess,
276 ODR_CONTEXT, 6, 1) &&
277 odr_implicit(o, z_Costs, &(*p)->costInfo, ODR_CONTEXT, 8, 1) &&
278 odr_implicit_settag(o, ODR_CONTEXT, 9) &&
279 (odr_sequence_of(o, odr_oid, &(*p)->variantSets,
280 &(*p)->num_variantSets) || odr_ok(o)) &&
281 odr_implicit_settag(o, ODR_CONTEXT, 10) &&
282 (odr_sequence_of(o, z_ElementSetName, &(*p)->elementSetNames,
283 &(*p)->num_elementSetNames) || odr_ok(o)) &&
284 odr_implicit_settag(o, ODR_CONTEXT, 11) &&
285 (odr_sequence_of(o, z_InternationalString, &(*p)->unitSystems,
286 &(*p)->num_unitSystems) || odr_ok(o)) &&
290 int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt)
292 static Odr_arm arm[] =
294 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_QueryTypeDetails_private,
295 z_PrivateCapabilities},
296 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_QueryTypeDetails_rpn,
298 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_QueryTypeDetails_iso8777,
299 z_Iso8777Capabilities},
300 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_QueryTypeDetails_z3958,
302 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_QueryTypeDetails_erpn,
304 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_QueryTypeDetails_rankedList,
309 if (!odr_initmember(o, p, sizeof(**p)))
310 return opt && odr_ok(o);
311 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
314 return opt && odr_ok(o);
317 int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt)
319 if (!odr_sequence_begin(o, p, sizeof(**p)))
320 return opt && odr_ok(o);
322 odr_implicit(o, z_InternationalString, &(*p)->operator, ODR_CONTEXT, 0, 0) &&
323 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
327 int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt)
329 if (!odr_sequence_begin(o, p, sizeof(**p)))
330 return opt && odr_ok(o);
332 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
333 (odr_sequence_of(o, z_PrivateCapOperator, &(*p)->operators,
334 &(*p)->num_operators) || odr_ok(o)) &&
335 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
336 (odr_sequence_of(o, z_SearchKey, &(*p)->searchKeys,
337 &(*p)->num_searchKeys) || odr_ok(o)) &&
338 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
339 (odr_sequence_of(o, z_HumanString, &(*p)->description,
340 &(*p)->num_description) || odr_ok(o)) &&
344 int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt)
346 if (!odr_sequence_begin(o, p, sizeof(**p)))
347 return opt && odr_ok(o);
349 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
350 (odr_sequence_of(o, odr_integer, &(*p)->operators, &(*p)->num_operators) || odr_ok(o)) &&
351 odr_implicit(o, odr_bool, &(*p)->resultSetAsOperandSupported,
352 ODR_CONTEXT, 1, 0) &&
353 odr_implicit(o, odr_bool, &(*p)->restrictionOperandSupported,
354 ODR_CONTEXT, 2, 0) &&
355 odr_implicit(o, z_ProximitySupport, &(*p)->proximity, ODR_CONTEXT,
360 int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt)
362 if (!odr_sequence_begin(o, p, sizeof(**p)))
363 return opt && odr_ok(o);
365 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
366 odr_sequence_of(o, z_SearchKey, &(*p)->searchKeys,
367 &(*p)->num_searchKeys) &&
368 odr_implicit(o, z_HumanString, &(*p)->restrictions, ODR_CONTEXT,
373 int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt)
375 if (!odr_sequence_begin(o, p, sizeof(**p)))
376 return opt && odr_ok(o);
378 odr_implicit(o, odr_integer, &(*p)->unit, ODR_CONTEXT, 0, 0) &&
379 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
383 int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt)
385 static Odr_arm arm[] =
387 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ProxSupportUnit_known,
389 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ProxSupportUnit_private,
390 z_ProxSupportPrivate},
394 if (!odr_initmember(o, p, sizeof(**p)))
395 return opt && odr_ok(o);
396 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
399 return opt && odr_ok(o);
402 int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt)
404 if (!odr_sequence_begin(o, p, sizeof(**p)))
405 return opt && odr_ok(o);
407 odr_implicit(o, odr_bool, &(*p)->anySupport, ODR_CONTEXT, 0, 0) &&
408 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
409 (odr_sequence_of(o, z_ProxSupportUnit, &(*p)->unitsSupported,
410 &(*p)->num_unitsSupported) || odr_ok(o)) &&
414 int z_SearchKey(ODR o, Z_SearchKey **p, int opt)
416 if (!odr_sequence_begin(o, p, sizeof(**p)))
417 return opt && odr_ok(o);
419 odr_implicit(o, z_InternationalString, &(*p)->searchKey, ODR_CONTEXT, 0, 0) &&
420 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
424 int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt)
426 if (!odr_sequence_begin(o, p, sizeof(**p)))
427 return opt && odr_ok(o);
429 odr_explicit(o, odr_integer, &(*p)->accessType, ODR_CONTEXT, 0, 0) &&
430 odr_implicit(o, z_HumanString, &(*p)->accessText, ODR_CONTEXT, 1, 1) &&
431 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
432 (odr_sequence_of(o, odr_oid, &(*p)->accessChallenges,
433 &(*p)->num_accessChallenges) || odr_ok(o)) &&
437 int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt)
439 if (!odr_initmember(o, p, sizeof(**p)))
440 return opt && odr_ok(o);
441 if (odr_sequence_of(o, z_AccessRestrictionsUnit, &(*p)->restrictions,
442 &(*p)->num_restrictions))
445 return opt && odr_ok(o);
448 int z_CostsOtherCharge(ODR o, Z_CostsOtherCharge **p, int opt)
450 if (!odr_sequence_begin(o, p, sizeof(**p)))
451 return opt && odr_ok(o);
453 odr_implicit(o, z_HumanString, &(*p)->forWhat, ODR_CONTEXT, 1, 0) &&
454 odr_implicit(o, z_Charge, &(*p)->charge, ODR_CONTEXT, 2, 1) &&
458 int z_Costs(ODR o, Z_Costs **p, int opt)
460 if (!odr_sequence_begin(o, p, sizeof(**p)))
461 return opt && odr_ok(o);
463 odr_implicit(o, z_Charge, &(*p)->connectCharge, ODR_CONTEXT, 0, 1) &&
464 odr_implicit(o, z_Charge, &(*p)->connectTime, ODR_CONTEXT, 1, 1) &&
465 odr_implicit(o, z_Charge, &(*p)->displayCharge, ODR_CONTEXT, 2, 1) &&
466 odr_implicit(o, z_Charge, &(*p)->searchCharge, ODR_CONTEXT, 3, 1) &&
467 odr_implicit(o, z_Charge, &(*p)->subscriptCharge, ODR_CONTEXT, 4, 1) &&
468 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
469 (odr_sequence_of(o, z_CostsOtherCharge, &(*p)->otherCharges,
470 &(*p)->num_otherCharges) || odr_ok(o)) &&
474 int z_Charge(ODR o, Z_Charge **p, int opt)
476 if (!odr_sequence_begin(o, p, sizeof(**p)))
477 return opt && odr_ok(o);
479 odr_implicit(o, z_IntUnit, &(*p)->cost, ODR_CONTEXT, 1, 0) &&
480 odr_implicit(o, z_Unit, &(*p)->perWhat, ODR_CONTEXT, 2, 1) &&
481 odr_implicit(o, z_HumanString, &(*p)->text, ODR_CONTEXT, 3, 1) &&
485 int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt)
487 if (!odr_initmember(o, p, sizeof(**p)))
488 return opt && odr_ok(o);
489 if (odr_sequence_of(o, z_DatabaseName, &(*p)->databases,
490 &(*p)->num_databases))
493 return opt && odr_ok(o);
496 int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt)
498 if (!odr_sequence_begin(o, p, sizeof(**p)))
499 return opt && odr_ok(o);
501 odr_implicit(o, odr_oid, &(*p)->defaultAttributeSet,
502 ODR_CONTEXT, 0, 0) &&
503 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
504 odr_sequence_of(o, z_AttributeCombination, &(*p)->legalCombinations,
505 &(*p)->num_legalCombinations) &&
509 int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt)
511 if (!odr_initmember(o, p, sizeof(**p)))
512 return opt && odr_ok(o);
513 if (odr_sequence_of(o, z_AttributeOccurrence, &(*p)->occurrences,
514 &(*p)->num_occurrences))
517 return opt && odr_ok(o);
520 int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt)
522 if (!odr_initmember(o, p, sizeof(**p)))
523 return opt && odr_ok(o);
524 if (odr_sequence_of(o, z_StringOrNumeric, &(*p)->attributes,
525 &(*p)->num_attributes))
528 return opt && odr_ok(o);
531 int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt)
533 static Odr_arm arm[] =
535 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_AttributeOcc_anyOrNone, odr_null},
536 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_AttributeOcc_specific,
537 z_AttributeValueList},
541 if (!odr_sequence_begin(o, p, sizeof(**p)))
542 return opt && odr_ok(o);
544 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 0, 1) &&
545 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 1, 0) &&
546 odr_implicit(o, odr_null, &(*p)->mustBeSupplied, ODR_CONTEXT, 2, 1) &&
547 odr_choice(o, arm, &(*p)->attributeValues, &(*p)->which) &&
551 int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt)
553 if (!odr_sequence_begin(o, p, sizeof(**p)))
554 return opt && odr_ok(o);
556 odr_explicit(o, z_StringOrNumeric, &(*p)->value, ODR_CONTEXT, 0, 0) &&
557 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
558 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
559 (odr_sequence_of(o, z_StringOrNumeric, &(*p)->subAttributes,
560 &(*p)->num_subAttributes) || odr_ok(o)) &&
561 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
562 (odr_sequence_of(o, z_StringOrNumeric, &(*p)->superAttributes,
563 &(*p)->num_superAttributes) || odr_ok(o)) &&
564 odr_implicit(o, odr_null, &(*p)->partialSupport, ODR_CONTEXT, 4, 1) &&
570 int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt)
572 if (!odr_sequence_begin(o, p, sizeof(**p)))
573 return opt && odr_ok(o);
575 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
576 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
578 odr_implicit(o, z_HumanString, &(*p)->recentNews, ODR_CONTEXT, 2, 1) &&
579 odr_implicit(o, z_IconObject, &(*p)->icon, ODR_CONTEXT, 3, 1) &&
580 odr_implicit(o, odr_bool, &(*p)->namedResultSets, ODR_CONTEXT, 4, 0) &&
581 odr_implicit(o, odr_bool, &(*p)->multipleDBsearch, ODR_CONTEXT, 5, 0) &&
582 odr_implicit(o, odr_integer, &(*p)->maxResultSets, ODR_CONTEXT, 6, 1) &&
583 odr_implicit(o, odr_integer, &(*p)->maxResultSize, ODR_CONTEXT, 7, 1) &&
584 odr_implicit(o, odr_integer, &(*p)->maxTerms, ODR_CONTEXT, 8, 1) &&
585 odr_implicit(o, z_IntUnit, &(*p)->timeoutInterval, ODR_CONTEXT, 9, 1) &&
586 odr_implicit(o, z_HumanString, &(*p)->welcomeMessage, ODR_CONTEXT,
588 odr_implicit(o, z_ContactInfo, &(*p)->contactInfo, ODR_CONTEXT,
590 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
592 odr_implicit_settag(o, ODR_CONTEXT, 13) &&
593 (odr_sequence_of(o, z_InternationalString, &(*p)->nicknames,
594 &(*p)->num_nicknames) || odr_ok(o)) &&
595 odr_implicit(o, z_HumanString, &(*p)->usageRest, ODR_CONTEXT, 14, 1) &&
596 odr_implicit(o, z_HumanString, &(*p)->paymentAddr, ODR_CONTEXT,
598 odr_implicit(o, z_HumanString, &(*p)->hours, ODR_CONTEXT, 16, 1) &&
599 odr_implicit_settag(o, ODR_CONTEXT, 17) &&
600 (odr_sequence_of(o, z_DatabaseList, &(*p)->dbCombinations,
601 &(*p)->num_dbCombinations) || odr_ok(o)) &&
602 odr_implicit_settag(o, ODR_CONTEXT, 18) &&
603 (odr_sequence_of(o, z_NetworkAddress, &(*p)->addresses,
604 &(*p)->num_addresses) || odr_ok(o)) &&
605 odr_implicit(o, z_AccessInfo, &(*p)->commonAccessInfo, ODR_CONTEXT,
610 int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt)
612 static Odr_arm arm[] =
614 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Exp_RecordCount_actualNumber,
616 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Exp_RecordCount_approxNumber,
621 if (!odr_sequence_begin(o, p, sizeof(**p)))
622 return opt && odr_ok(o);
624 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
625 odr_implicit(o, z_DatabaseName, &(*p)->name, ODR_CONTEXT, 1, 0) &&
626 odr_implicit(o, odr_null, &(*p)->explainDatabase, ODR_CONTEXT, 2, 1) &&
627 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
628 (odr_sequence_of(o, z_DatabaseName, &(*p)->nicknames,
629 &(*p)->num_nicknames) || odr_ok(o)) &&
630 odr_implicit(o, z_IconObject, &(*p)->icon, ODR_CONTEXT, 4, 1) &&
631 odr_implicit(o, odr_bool, &(*p)->userFee, ODR_CONTEXT, 5, 0) &&
632 odr_implicit(o, odr_bool, &(*p)->available, ODR_CONTEXT, 6, 0) &&
633 odr_implicit(o, z_HumanString, &(*p)->titleString, ODR_CONTEXT, 7, 1) &&
634 odr_implicit_settag(o, ODR_CONTEXT, 8) &&
635 (odr_sequence_of(o, z_HumanString, &(*p)->keywords,
636 &(*p)->num_keywords) || odr_ok(o)) &&
637 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 9, 1) &&
638 odr_implicit(o, z_DatabaseList, &(*p)->associatedDbs, ODR_CONTEXT,
640 odr_implicit(o, z_DatabaseList, &(*p)->subDbs, ODR_CONTEXT, 11, 1) &&
641 odr_implicit(o, z_HumanString, &(*p)->disclaimers, ODR_CONTEXT,
643 odr_implicit(o, z_HumanString, &(*p)->news, ODR_CONTEXT, 13, 1) &&
644 ((odr_constructed_begin(o, &(*p)->recordCount, ODR_CONTEXT, 14) &&
645 odr_choice(o, arm, &(*p)->recordCount, &(*p)->recordCount_which) &&
646 odr_constructed_end(o)) || odr_ok(o)) &&
647 odr_implicit(o, z_HumanString, &(*p)->defaultOrder, ODR_CONTEXT,
649 odr_implicit(o, odr_integer, &(*p)->avRecordSize, ODR_CONTEXT, 16, 1) &&
650 odr_implicit(o, odr_integer, &(*p)->maxRecordSize, ODR_CONTEXT,
652 odr_implicit(o, z_HumanString, &(*p)->hours, ODR_CONTEXT, 18, 1) &&
653 odr_implicit(o, z_HumanString, &(*p)->bestTime, ODR_CONTEXT, 19, 1) &&
654 odr_implicit(o, odr_generalizedtime, &(*p)->lastUpdate, ODR_CONTEXT,
656 odr_implicit(o, z_IntUnit, &(*p)->updateInterval, ODR_CONTEXT, 21, 1) &&
657 odr_implicit(o, z_HumanString, &(*p)->coverage, ODR_CONTEXT, 22, 1) &&
658 odr_implicit(o, odr_bool, &(*p)->proprietary, ODR_CONTEXT, 23, 1) &&
659 odr_implicit(o, z_HumanString, &(*p)->copyrightText, ODR_CONTEXT,
661 odr_implicit(o, z_HumanString, &(*p)->copyrightNotice, ODR_CONTEXT,
663 odr_implicit(o, z_ContactInfo, &(*p)->producerContactInfo, ODR_CONTEXT,
665 odr_implicit(o, z_ContactInfo, &(*p)->supplierContactInfo, ODR_CONTEXT,
667 odr_implicit(o, z_ContactInfo, &(*p)->submissionContactInfo,
668 ODR_CONTEXT, 28, 1) &&
669 odr_implicit(o, z_AccessInfo, &(*p)->accessInfo, ODR_CONTEXT, 29, 1) &&
673 int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt)
675 if (!odr_sequence_begin(o, p, sizeof(**p)))
678 odr_implicit(o, odr_integer, &(*p)->tagType, ODR_CONTEXT, 0, 0) &&
679 odr_implicit(o, odr_oid, &(*p)->tagSet, ODR_CONTEXT, 1, 1) &&
680 odr_implicit(o, odr_null, &(*p)->defaultTagType, ODR_CONTEXT, 2, 1) &&
684 int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt)
686 if (!odr_sequence_begin(o, p, sizeof(**p)))
687 return opt && odr_ok(o);
689 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
690 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 1, 0) &&
691 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
693 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 3, 1) &&
694 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
695 (odr_sequence_of(o, z_TagTypeMapping, &(*p)->tagTypeMapping,
696 &(*p)->num_tagTypeMapping) || odr_ok(o)) &&
697 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
698 (odr_sequence_of(o, z_ElementInfo, &(*p)->recordStructure,
699 &(*p)->num_recordStructure) || odr_ok(o)) &&
703 int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt)
705 if (!odr_sequence_begin(o, p, sizeof(**p)))
706 return opt && odr_ok(o);
708 odr_implicit(o, z_InternationalString, &(*p)->elementName, ODR_CONTEXT, 1, 0) &&
709 odr_implicit(o, z_Path, &(*p)->elementTagPath, ODR_CONTEXT, 2, 0) &&
710 odr_explicit(o, z_ElementDataType, &(*p)->dataType, ODR_CONTEXT, 3, 1) &&
711 odr_implicit(o, odr_bool, &(*p)->required, ODR_CONTEXT, 4, 0) &&
712 odr_implicit(o, odr_bool, &(*p)->repeatable, ODR_CONTEXT, 5, 0) &&
713 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 6, 1) &&
717 int z_PathUnit(ODR o, Z_PathUnit **p, int opt)
719 if (!odr_sequence_begin(o, p, sizeof(**p)))
722 odr_implicit(o, odr_integer, &(*p)->tagType, ODR_CONTEXT, 1, 0) &&
723 odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue, ODR_CONTEXT,
728 int z_Path(ODR o, Z_Path **p, int opt)
730 if (!odr_initmember(o, p, sizeof(**p)))
731 return opt && odr_ok(o);
732 odr_implicit_settag(o, ODR_CONTEXT, 201);
733 if (odr_sequence_of(o, z_OtherInformationUnit, &(*p)->list,
737 return opt && odr_ok(o);
740 int z_ElementInfoList(ODR o, Z_Path **p, int opt)
742 if (!odr_initmember(o, p, sizeof(**p)))
743 return opt && odr_ok(o);
744 odr_implicit_settag(o, ODR_CONTEXT, 201);
745 if (odr_sequence_of(o, z_OtherInformationUnit, &(*p)->list,
749 return opt && odr_ok(o);
752 int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt)
754 static Odr_arm arm[] =
756 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ElementDataType_primitive,
758 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ElementDataType_structured,
763 if (!odr_initmember(o, p, sizeof(**p)))
764 return opt && odr_ok(o);
765 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
768 return opt && odr_ok(o);
771 int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt)
773 if (!odr_sequence_begin(o, p, sizeof(**p)))
776 odr_implicit(o, z_InternationalString, &(*p)->elementName,
777 ODR_CONTEXT, 1, 0) &&
778 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
779 (odr_sequence_of(o, z_InternationalString, &(*p)->nicknames,
780 &(*p)->num_nicknames) || odr_ok(o)) &&
781 odr_explicit(o, z_StringOrNumeric, &(*p)->elementTag, ODR_CONTEXT,
783 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
785 odr_implicit(o, odr_integer, &(*p)->dataType, ODR_CONTEXT, 5, 1) &&
786 z_OtherInformation(o, &(*p)->otherTagInfo, 1) &&
790 int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt)
792 if (!odr_sequence_begin(o, p, sizeof(**p)))
793 return opt && odr_ok(o);
795 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
796 odr_implicit(o, odr_oid, &(*p)->tagSet, ODR_CONTEXT, 1, 0) &&
797 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
799 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
801 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
802 (odr_sequence_of(o, z_TagSetInfoElements, &(*p)->elements,
803 &(*p)->num_elements) || odr_ok(o)) &&
807 int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt)
809 if (!odr_sequence_begin(o, p, sizeof(**p)))
810 return opt && odr_ok(o);
812 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
813 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 1, 0) &&
814 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
816 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
817 (odr_sequence_of(o, odr_oid, &(*p)->transferSyntaxes,
818 &(*p)->num_transferSyntaxes) || odr_ok(o)) &&
819 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
820 odr_implicit(o, z_InternationalString, &(*p)->asn1Module, ODR_CONTEXT,
822 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
823 (odr_sequence_of(o, z_ElementInfo, &(*p)->abstractStructure,
824 &(*p)->num_abstractStructure) || odr_ok(o)) &&
828 int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt)
830 if (!odr_sequence_begin(o, p, sizeof(**p)))
831 return opt && odr_ok(o);
833 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
834 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 1, 0) &&
835 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 2, 0) &&
836 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
837 (odr_sequence_of(o, z_AttributeType, &(*p)->attributes,
838 &(*p)->num_attributes) || odr_ok(o)) &&
839 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
843 int z_AttributeType(ODR o, Z_AttributeType **p, int opt)
845 if (!odr_sequence_begin(o, p, sizeof(**p)))
846 return opt && odr_ok(o);
848 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
849 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
850 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 2, 0) &&
851 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
852 odr_sequence_of(o, z_AttributeDescription, &(*p)->attributeValues,
853 &(*p)->num_attributeValues) &&
857 int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt)
859 if (!odr_sequence_begin(o, p, sizeof(**p)))
860 return opt && odr_ok(o);
862 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
863 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
864 odr_explicit(o, z_StringOrNumeric, &(*p)->attributeValue, ODR_CONTEXT, 2, 0) &&
865 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
866 (odr_sequence_of(o, z_StringOrNumeric, &(*p)->equivalentAttributes,
867 &(*p)->num_equivalentAttributes) || odr_ok(o)) &&
871 int z_TermListElement(ODR o, Z_TermListElement **p, int opt)
873 if (!odr_sequence_begin(o, p, sizeof(**p)))
874 return opt && odr_ok(o);
876 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 1, 0) &&
877 odr_implicit(o, z_HumanString, &(*p)->title, ODR_CONTEXT, 2, 1) &&
878 odr_implicit(o, odr_integer, &(*p)->searchCost, ODR_CONTEXT, 3, 1) &&
879 odr_implicit(o, odr_bool, &(*p)->scanable, ODR_CONTEXT, 4, 0) &&
880 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
881 (odr_sequence_of(o, z_InternationalString, &(*p)->broader,
882 &(*p)->num_broader) || odr_ok(o)) &&
883 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
884 (odr_sequence_of(o, z_InternationalString, &(*p)->narrower,
885 &(*p)->num_narrower) || odr_ok(o)) &&
889 int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt)
891 if (!odr_sequence_begin(o, p, sizeof(**p)))
892 return opt && odr_ok(o);
894 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
895 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
897 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
898 (odr_sequence_of(o, z_TermListElement, &(*p)->termLists,
899 &(*p)->num_termLists) || odr_ok(o)) &&
903 int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt)
905 if (!odr_sequence_begin(o, p, sizeof(**p)))
906 return opt && odr_ok(o);
908 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
909 odr_implicit(o, odr_oid, &(*p)->type, ODR_CONTEXT, 1, 0) &&
910 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 2, 1) &&
911 odr_implicit(o, odr_bool, &(*p)->privateType, ODR_CONTEXT, 3, 0) &&
912 odr_implicit(o, odr_bool, &(*p)->restrictionsApply, ODR_CONTEXT, 5, 0) &&
913 odr_implicit(o, odr_bool, &(*p)->feeApply, ODR_CONTEXT, 6, 0) &&
914 odr_implicit(o, odr_bool, &(*p)->available, ODR_CONTEXT, 7, 0) &&
915 odr_implicit(o, odr_bool, &(*p)->retentionSupported, ODR_CONTEXT, 8, 0) &&
916 odr_implicit(o, odr_integer, &(*p)->waitAction, ODR_CONTEXT, 9, 0) &&
917 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 10, 1) &&
918 odr_implicit(o, z_External, &(*p)->specificExplain, ODR_CONTEXT, 11, 1) &&
919 odr_implicit(o, z_InternationalString, &(*p)->esASN, ODR_CONTEXT, 12, 1) &&
923 int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt)
925 if (!odr_sequence_begin(o, p, sizeof(**p)))
926 return opt && odr_ok(o);
928 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
929 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) &&
930 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
931 (odr_sequence_of(o, z_AttributeSetDetails, &(*p)->attributesBySet,
932 &(*p)->num_attributesBySet) && odr_ok(o)) &&
933 odr_implicit(o, z_AttributeCombinations, &(*p)->attributeCombinations, ODR_CONTEXT, 3, 1) &&
937 int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt)
939 if (!odr_sequence_begin(o, p, sizeof(**p)))
940 return opt && odr_ok(o);
942 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT,
944 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
945 odr_sequence_of(o, z_AttributeTypeDetails, &(*p)->attributesByType,
946 &(*p)->num_attributesByType) &&
950 int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt)
952 if (!odr_sequence_begin(o, p, sizeof(**p)))
953 return opt && odr_ok(o);
955 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 0, 0) &&
956 odr_implicit(o, z_OmittedAttributeInterpretation, &(*p)->optionalType, ODR_CONTEXT, 1, 1) &&
957 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
958 (odr_sequence_of(o, z_AttributeValue, &(*p)->attributeValues,
959 &(*p)->num_attributeValues) || odr_ok(o)) &&
963 int z_OmittedAttributeInterpretation(ODR o, Z_OmittedAttributeInterpretation **p, int opt)
965 if (!odr_sequence_begin(o, p, sizeof(**p)))
966 return opt && odr_ok(o);
968 odr_explicit(o, z_StringOrNumeric, &(*p)->defaultValue, ODR_CONTEXT, 0, 1) &&
969 odr_implicit(o, z_HumanString, &(*p)->defaultDescription, ODR_CONTEXT, 1, 1) &&
973 int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt)
975 if (!odr_sequence_begin(o, p, sizeof(**p)))
976 return opt && odr_ok(o);
978 odr_implicit(o, odr_integer, &(*p)->maxStepSize, ODR_CONTEXT, 0, 1) &&
979 odr_implicit(o, z_HumanString, &(*p)->collatingSequence, ODR_CONTEXT, 1, 1) &&
980 odr_implicit(o, odr_bool, &(*p)->increasing, ODR_CONTEXT, 2, 1) &&
984 int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt)
986 if (!odr_sequence_begin(o, p, sizeof(**p)))
987 return opt && odr_ok(o);
989 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
990 odr_implicit(o, z_InternationalString, &(*p)->termListName, ODR_CONTEXT, 1, 0) &&
991 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 2, 1) &&
992 odr_implicit(o, z_AttributeCombinations, &(*p)->attributes, ODR_CONTEXT, 3, 1) &&
993 odr_implicit(o, z_EScanInfo, &(*p)->scanInfo, ODR_CONTEXT, 4, 1) &&
994 odr_implicit(o, odr_integer, &(*p)->estNumberTerms, ODR_CONTEXT, 5, 1) &&
995 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
996 (odr_sequence_of(o, z_Term, &(*p)->sampleTerms,
997 &(*p)->num_sampleTerms) || odr_ok(o)) &&
1001 int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt)
1003 if (!odr_sequence_begin(o, p, sizeof(**p)))
1004 return opt && odr_ok(o);
1006 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1007 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) &&
1008 odr_implicit(o, z_ElementSetName, &(*p)->elementSetName, ODR_CONTEXT, 2, 0) &&
1009 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 3, 0) &&
1010 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 4, 0) &&
1011 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 5, 1) &&
1012 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
1013 (odr_sequence_of(o, z_PerElementDetails, &(*p)->detailsPerElement, &(*p)->num_detailsPerElement) || odr_ok(o)) &&
1014 odr_sequence_end(o);
1017 int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **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, odr_oid, &(*p)->schema, ODR_CONTEXT, 2, 0) &&
1025 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 3, 0) &&
1026 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
1027 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
1028 (odr_sequence_of(o, z_PerElementDetails, &(*p)->detailsPerElement,
1029 &(*p)->num_detailsPerElement) || odr_ok(o)) &&
1030 odr_sequence_end(o);
1033 int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt)
1035 if (!odr_sequence_begin(o, p, sizeof(**p)))
1036 return opt && odr_ok(o);
1038 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
1039 odr_implicit(o, z_RecordTag, &(*p)->recordTag, ODR_CONTEXT, 1, 1) &&
1040 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1041 (odr_sequence_of(o, z_Path, &(*p)->schemaTags, &(*p)->num_schemaTags) ||
1043 odr_implicit(o, odr_integer, &(*p)->maxSize, ODR_CONTEXT, 3, 1) &&
1044 odr_implicit(o, odr_integer, &(*p)->minSize, ODR_CONTEXT, 4, 1) &&
1045 odr_implicit(o, odr_integer, &(*p)->avgSize, ODR_CONTEXT, 5, 1) &&
1046 odr_implicit(o, odr_integer, &(*p)->fixedSize, ODR_CONTEXT, 6, 1) &&
1047 odr_implicit(o, odr_bool, &(*p)->repeatable, ODR_CONTEXT, 8, 0) &&
1048 odr_implicit(o, odr_bool, &(*p)->required, ODR_CONTEXT, 9, 0) &&
1049 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 12, 1) &&
1050 odr_implicit(o, z_HumanString, &(*p)->contents, ODR_CONTEXT, 13, 1) &&
1051 odr_implicit(o, z_HumanString, &(*p)->billingInfo, ODR_CONTEXT, 14, 1) &&
1052 odr_implicit(o, z_HumanString, &(*p)->restrictions, ODR_CONTEXT, 15, 1) &&
1053 odr_implicit_settag(o, ODR_CONTEXT, 16) &&
1054 (odr_sequence_of(o, z_InternationalString, &(*p)->alternateNames,
1055 &(*p)->num_alternateNames) || odr_ok(o)) &&
1056 odr_implicit_settag(o, ODR_CONTEXT, 17) &&
1057 (odr_sequence_of(o, z_InternationalString, &(*p)->genericNames,
1058 &(*p)->num_genericNames) || odr_ok(o)) &&
1059 odr_implicit(o, z_AttributeCombinations, &(*p)->searchAccess,
1060 ODR_CONTEXT, 18, 1) &&
1061 odr_sequence_end(o);
1064 int z_RecordTag(ODR o, Z_RecordTag **p, int opt)
1066 if (!odr_sequence_begin(o, p, sizeof(**p)))
1067 return opt && odr_ok(o);
1069 odr_explicit(o, z_StringOrNumeric, &(*p)->qualifier, ODR_CONTEXT,
1071 odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue, ODR_CONTEXT,
1073 odr_sequence_end(o);
1076 int z_SortDetails(ODR o, Z_SortDetails **p, int opt)
1078 if (!odr_sequence_begin(o, p, sizeof(**p)))
1079 return opt && odr_ok(o);
1081 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1082 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
1084 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1085 (odr_sequence_of(o, z_SortKeyDetails, &(*p)->sortKeys,
1086 &(*p)->num_sortKeys) || odr_ok(o)) &&
1087 odr_sequence_end(o);
1090 int z_SortKeyDetailsSortType(ODR o, Z_SortKeyDetailsSortType **p, int opt)
1092 static Odr_arm arm[] =
1094 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_character,
1096 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_numeric,
1098 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_structured,
1103 if (!odr_initmember(o, p, sizeof(**p)))
1104 return opt && odr_ok(o);
1105 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1108 return opt && odr_ok(o);
1111 int z_SortKeyDetails(ODR o, Z_SortKeyDetails **p, int opt)
1113 if (!odr_sequence_begin(o, p, sizeof(**p)))
1114 return opt && odr_ok(o);
1116 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 0, 1) &&
1117 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
1118 (odr_sequence_of(o, z_Specification, &(*p)->elementSpecifications,
1119 &(*p)->num_elementSpecifications) || odr_ok(o)) &&
1120 odr_implicit(o, z_AttributeCombinations, &(*p)->attributeSpecifications,
1121 ODR_CONTEXT, 2, 1) &&
1122 odr_explicit(o, z_SortKeyDetailsSortType, &(*p)->sortType, ODR_CONTEXT,
1124 odr_implicit(o, odr_integer, &(*p)->caseSensitivity, ODR_CONTEXT,
1126 odr_sequence_end(o);
1129 int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt)
1131 if (!odr_sequence_begin(o, p, sizeof(**p)))
1132 return opt && odr_ok(o);
1134 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1135 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
1137 odr_implicit(o, odr_integer, &(*p)->processingContext, ODR_CONTEXT,
1139 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1141 odr_implicit(o, odr_oid, &(*p)->oid, ODR_CONTEXT, 4, 0) &&
1142 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 5, 1) &&
1143 odr_implicit(o, z_External, &(*p)->instructions, ODR_CONTEXT, 6, 1) &&
1144 odr_sequence_end(o);
1147 int z_VariantSetInfo(ODR o, Z_VariantSetInfo **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, odr_oid, &(*p)->variantSet, ODR_CONTEXT, 1, 0) &&
1154 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1156 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1157 (odr_sequence_of(o, z_VariantClass, &(*p)->variants,
1158 &(*p)->num_variants) || odr_ok(o)) &&
1159 odr_sequence_end(o);
1162 int z_VariantClass(ODR o, Z_VariantClass **p, int opt)
1164 if (!odr_sequence_begin(o, p, sizeof(**p)))
1165 return opt && odr_ok(o);
1167 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1169 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1170 odr_implicit(o, odr_integer, &(*p)->variantClass, ODR_CONTEXT, 2, 0) &&
1171 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1172 odr_sequence_of(o, z_VariantType, &(*p)->variantTypes,
1173 &(*p)->num_variantTypes) &&
1174 odr_sequence_end(o);
1177 int z_VariantType(ODR o, Z_VariantType **p, int opt)
1179 if (!odr_sequence_begin(o, p, sizeof(**p)))
1180 return opt && odr_ok(o);
1182 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
1183 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1184 odr_implicit(o, odr_integer, &(*p)->variantType, ODR_CONTEXT, 2, 0) &&
1185 odr_implicit(o, z_VariantValue, &(*p)->variantValue, ODR_CONTEXT, 3, 1) &&
1186 odr_sequence_end(o);
1189 int z_VariantValue(ODR o, Z_VariantValue **p, int opt)
1191 if (!odr_sequence_begin(o, p, sizeof(**p)))
1192 return opt && odr_ok(o);
1194 odr_explicit(o, odr_integer, &(*p)->dataType, ODR_CONTEXT, 0, 0) &&
1195 odr_explicit(o, z_ValueSet, &(*p)->values, ODR_CONTEXT, 1, 1) &&
1196 odr_sequence_end(o);
1199 int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt)
1201 if (!odr_initmember(o, p, sizeof(**p)))
1202 return opt && odr_ok(o);
1203 if (odr_sequence_of(o, z_ValueDescription, &(*p)->enumerated,
1204 &(*p)->num_enumerated))
1207 return opt && odr_ok(o);
1210 int z_ValueSet(ODR o, Z_ValueSet **p, int opt)
1212 static Odr_arm arm[] =
1214 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ValueSet_range, z_ValueRange},
1215 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueSet_enumerated,
1216 z_ValueSetEnumerated},
1220 if (!odr_initmember(o, p, sizeof(**p)))
1221 return opt && odr_ok(o);
1222 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1225 return opt && odr_ok(o);
1228 int z_ValueRange(ODR o, Z_ValueRange **p, int opt)
1230 if (!odr_sequence_begin(o, p, sizeof(**p)))
1231 return opt && odr_ok(o);
1233 odr_explicit(o, z_ValueDescription, &(*p)->lower, ODR_CONTEXT, 0, 1) &&
1234 odr_explicit(o, z_ValueDescription, &(*p)->upper, ODR_CONTEXT, 1, 1) &&
1235 odr_sequence_end(o);
1238 int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt)
1240 static Odr_arm arm[] =
1242 {ODR_NONE, -1, -1, Z_ValueDescription_integer, odr_integer},
1243 {ODR_NONE, -1, -1, Z_ValueDescription_string, z_InternationalString},
1244 {ODR_NONE, -1, -1, Z_ValueDescription_octets, odr_octetstring},
1245 {ODR_NONE, -1, -1, Z_ValueDescription_oid, odr_oid},
1246 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueDescription_unit, z_Unit},
1247 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ValueDescription_valueAndUnit, z_IntUnit},
1251 if (!odr_initmember(o, p, sizeof(**p)))
1252 return opt && odr_ok(o);
1253 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1256 return opt && odr_ok(o);
1259 int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt)
1261 if (!odr_sequence_begin(o, p, sizeof(**p)))
1262 return opt && odr_ok(o);
1264 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1265 odr_implicit(o, z_InternationalString, &(*p)->unitSystem, ODR_CONTEXT,
1267 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 2, 1) &&
1268 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1269 (odr_sequence_of(o, z_UnitType, &(*p)->units, &(*p)->num_units) ||
1271 odr_sequence_end(o);
1274 int z_UnitType(ODR o, Z_UnitType **p, int opt)
1276 if (!odr_sequence_begin(o, p, sizeof(**p)))
1277 return opt && odr_ok(o);
1279 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1281 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1282 odr_explicit(o, z_StringOrNumeric, &(*p)->unitType, ODR_CONTEXT,
1284 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1285 odr_sequence_of(o, z_Units, &(*p)->units, &(*p)->num_units) &&
1286 odr_sequence_end(o);
1289 int z_Units(ODR o, Z_Units **p, int opt)
1291 if (!odr_sequence_begin(o, p, sizeof(**p)))
1292 return opt && odr_ok(o);
1294 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
1295 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1296 odr_explicit(o, z_StringOrNumeric, &(*p)->unit, ODR_CONTEXT, 2, 0) &&
1297 odr_sequence_end(o);
1300 int z_CategoryList(ODR o, Z_CategoryList **p, int opt)
1302 if (!odr_sequence_begin(o, p, sizeof(**p)))
1303 return opt && odr_ok(o);
1305 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1306 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
1307 odr_sequence_of(o, z_CategoryInfo, &(*p)->categories,
1308 &(*p)->num_categories) &&
1309 odr_sequence_end(o);
1312 int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt)
1314 if (!odr_sequence_begin(o, p, sizeof(**p)))
1315 return opt && odr_ok(o);
1317 odr_implicit(o, z_InternationalString, &(*p)->category, ODR_CONTEXT,
1319 odr_implicit(o, z_InternationalString, &(*p)->originalCategory,
1320 ODR_CONTEXT, 2, 1) &&
1321 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 3, 1) &&
1322 odr_implicit(o, z_InternationalString, &(*p)->asn1Module, ODR_CONTEXT,
1324 odr_sequence_end(o);
1327 int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt)
1329 static Odr_arm arm[] =
1331 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Explain_targetInfo, z_TargetInfo},
1332 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Explain_databaseInfo, z_DatabaseInfo},
1333 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_Explain_schemaInfo, z_SchemaInfo},
1334 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_Explain_tagSetInfo, z_TagSetInfo},
1335 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_Explain_recordSyntaxInfo,
1336 z_RecordSyntaxInfo},
1337 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_Explain_attributeSetInfo,
1338 z_AttributeSetInfo},
1339 {ODR_IMPLICIT, ODR_CONTEXT, 6, Z_Explain_termListInfo,
1341 {ODR_IMPLICIT, ODR_CONTEXT, 7, Z_Explain_extendedServicesInfo,
1342 z_ExtendedServicesInfo},
1343 {ODR_IMPLICIT, ODR_CONTEXT, 8, Z_Explain_attributeDetails,
1344 z_AttributeDetails},
1345 {ODR_IMPLICIT, ODR_CONTEXT, 9, Z_Explain_termListDetails,
1347 {ODR_IMPLICIT, ODR_CONTEXT, 10, Z_Explain_elementSetDetails,
1348 z_ElementSetDetails},
1349 {ODR_IMPLICIT, ODR_CONTEXT, 11, Z_Explain_retrievalRecordDetails,
1350 z_RetrievalRecordDetails},
1351 {ODR_IMPLICIT, ODR_CONTEXT, 12, Z_Explain_sortDetails,
1353 {ODR_IMPLICIT, ODR_CONTEXT, 13, Z_Explain_processing,
1354 z_ProcessingInformation},
1355 {ODR_IMPLICIT, ODR_CONTEXT, 14, Z_Explain_variants,
1357 {ODR_IMPLICIT, ODR_CONTEXT, 15, Z_Explain_units, z_UnitInfo},
1358 {ODR_IMPLICIT, ODR_CONTEXT, 100, Z_Explain_categoryList,
1363 if (!odr_initmember(o, p, sizeof(**p)))
1364 return opt && odr_ok(o);
1365 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1368 return opt && odr_ok(o);