2 * Copyright (c) 1995, Index Data.
3 * See the file LICENSE for details.
4 * Sebastian Hammer, Adam Dickmeiss
7 * Revision 1.8 1996-01-02 11:46:41 quinn
8 * Changed 'operator' to 'roperator' to avoid C++ conflict.
10 * Revision 1.7 1995/12/14 16:28:07 quinn
13 * Revision 1.6 1995/12/14 11:09:09 quinn
14 * Fixed bug in tagging.
16 * Revision 1.5 1995/12/05 11:15:50 quinn
19 * Revision 1.4 1995/09/29 17:11:54 quinn
22 * Revision 1.3 1995/09/27 15:02:42 quinn
23 * Modified function heads & prototypes.
25 * Revision 1.2 1995/08/15 11:59:43 quinn
28 * Revision 1.1 1995/08/10 08:54:02 quinn
36 int z_LanguageCode(ODR o, char **p, int opt);
37 int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt);
38 int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt);
39 int z_HumanString(ODR o, Z_HumanString **p, int opt);
40 int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt);
41 int z_IconObject(ODR o, Z_IconObject **p, int opt);
42 int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt);
43 int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt);
44 int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt);
45 int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt);
46 int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt);
47 int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt);
48 int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt);
49 int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt);
50 int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt);
51 int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt);
52 int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt);
53 int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt);
54 int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt);
55 int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt);
56 int z_SearchKey(ODR o, Z_SearchKey **p, int opt);
57 int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt);
58 int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt);
59 int z_CostsOtherCharge(ODR o, Z_CostsOtherCharge **p, int opt);
60 int z_Costs(ODR o, Z_Costs **p, int opt);
61 int z_Charge(ODR o, Z_Charge **p, int opt);
62 int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt);
63 int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt);
64 int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt);
65 int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt);
66 int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt);
67 int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt);
68 int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt);
69 int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt);
70 int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt);
71 int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt);
72 int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt);
73 int z_PathUnit(ODR o, Z_PathUnit **p, int opt);
74 int z_Path(ODR o, Z_Path **p, int opt);
75 int z_ElementInfoList(ODR o, Z_Path **p, int opt);
76 int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt);
77 int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt);
78 int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt);
79 int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt);
80 int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt);
81 int z_AttributeType(ODR o, Z_AttributeType **p, int opt);
82 int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt);
83 int z_TermListElement(ODR o, Z_TermListElement **p, int opt);
84 int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt);
85 int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt);
86 int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt);
87 int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt);
88 int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt);
89 int z_OmittedAttributeInterpretation(ODR o, Z_OmittedAttributeInterpretation **p, int opt);
90 int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt);
91 int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt);
92 int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt);
93 int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt);
94 int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt);
95 int z_RecordTag(ODR o, Z_RecordTag **p, int opt);
96 int z_SortDetails(ODR o, Z_SortDetails **p, int opt);
97 int z_SortKeyDetailsSortType(ODR o, Z_SortKeyDetailsSortType **p, int opt);
98 int z_SortKeyDetails(ODR o, Z_SortKeyDetails **p, int opt);
99 int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt);
100 int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt);
101 int z_VariantClass(ODR o, Z_VariantClass **p, int opt);
102 int z_VariantType(ODR o, Z_VariantType **p, int opt);
103 int z_VariantValue(ODR o, Z_VariantValue **p, int opt);
104 int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt);
105 int z_ValueSet(ODR o, Z_ValueSet **p, int opt);
106 int z_ValueRange(ODR o, Z_ValueRange **p, int opt);
107 int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt);
108 int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt);
109 int z_UnitType(ODR o, Z_UnitType **p, int opt);
110 int z_Units(ODR o, Z_Units **p, int opt);
111 int z_CategoryList(ODR o, Z_CategoryList **p, int opt);
112 int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt);
113 int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt);
115 int z_LanguageCode(ODR o, char **p, int opt)
117 return z_InternationalString(o, p, opt);
120 int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt)
122 if (!odr_sequence_begin(o, p, sizeof(**p)))
123 return opt && odr_ok(o);
125 odr_implicit(o, odr_generalizedtime, &(*p)->dateAdded, ODR_CONTEXT, 0, 1) &&
126 odr_implicit(o, odr_generalizedtime, &(*p)->dateChanged, ODR_CONTEXT, 1, 1) &&
127 odr_implicit(o, odr_generalizedtime, &(*p)->expiry, ODR_CONTEXT, 2, 1) &&
128 odr_implicit(o, z_LanguageCode, &(*p)->humanStringLanguage, ODR_CONTEXT, 3, 1) &&
129 z_OtherInformation(o, &(*p)->otherInfo, 1) &&
133 int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt)
135 if (!odr_sequence_begin(o, p, sizeof(**p)))
136 return opt && odr_ok(o);
138 odr_implicit(o, z_LanguageCode, &(*p)->language, ODR_CONTEXT, 0, 1) &&
139 odr_implicit(o, z_InternationalString, &(*p)->text, ODR_CONTEXT,
144 int z_HumanString(ODR o, Z_HumanString **p, int opt)
146 if (!odr_initmember(o, p, sizeof(**p)))
147 return opt && odr_ok(o);
148 if (odr_sequence_of(o, z_HumanStringUnit, &(*p)->strings,
152 return opt && odr_ok(o);
155 int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt)
157 static Odr_arm arm[] =
159 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IconObject_ianaType,
160 z_InternationalString},
161 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IconObject_z3950type,
162 z_InternationalString},
163 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IconObject_otherType,
164 z_InternationalString},
168 if (!odr_sequence_begin(o, p, sizeof(**p)))
169 return opt && odr_ok(o);
171 odr_constructed_begin(o, &(*p)->bodyType, ODR_CONTEXT, 1) &&
172 odr_choice(o, arm, &(*p)->bodyType, &(*p)->which) &&
173 odr_constructed_end(o) &&
174 odr_implicit(o, odr_octetstring, &(*p)->content, ODR_CONTEXT, 2, 0) &&
178 int z_IconObject(ODR o, Z_IconObject **p, int opt)
180 if (!odr_initmember(o, p, sizeof(**p)))
181 return opt && odr_ok(o);
182 if (odr_sequence_of(o, z_IconObjectUnit, &(*p)->iconUnits,
183 &(*p)->num_iconUnits))
186 return opt && odr_ok(o);
189 int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt)
191 if (!odr_sequence_begin(o, p, sizeof(**p)))
192 return opt && odr_ok(o);
194 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
195 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
196 odr_implicit(o, z_HumanString, &(*p)->address, ODR_CONTEXT, 2, 1) &&
197 odr_implicit(o, z_InternationalString, &(*p)->email, ODR_CONTEXT, 3, 1) &&
198 odr_implicit(o, z_InternationalString, &(*p)->phone, ODR_CONTEXT, 4, 1) &&
202 int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt)
204 if (!odr_sequence_begin(o, p, sizeof(**p)))
207 odr_implicit(o, z_InternationalString, &(*p)->hostAddress, ODR_CONTEXT, 0, 0) &&
208 odr_implicit(o, odr_integer, &(*p)->port, ODR_CONTEXT, 1, 0) &&
212 int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt)
214 if (!odr_sequence_begin(o, p, sizeof(**p)))
217 odr_implicit(o, z_InternationalString, &(*p)->pSel, ODR_CONTEXT, 0, 0) &&
218 odr_implicit(o, z_InternationalString, &(*p)->sSel, ODR_CONTEXT, 1, 1) &&
219 odr_implicit(o, z_InternationalString, &(*p)->tSel, ODR_CONTEXT, 2, 1) &&
220 odr_implicit(o, z_InternationalString, &(*p)->nSap, ODR_CONTEXT, 3, 0) &&
224 int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt)
226 if (!odr_sequence_begin(o, p, sizeof(**p)))
229 odr_implicit(o, z_InternationalString, &(*p)->type, ODR_CONTEXT, 0, 0) &&
230 odr_implicit(o, z_InternationalString, &(*p)->address, ODR_CONTEXT, 1, 0) &&
234 int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt)
236 static Odr_arm arm[] =
238 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_NetworkAddress_iA,
240 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_NetworkAddress_oPA,
241 z_NetworkAddressOPA},
242 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_NetworkAddress_other,
243 z_NetworkAddressOther},
247 if (!odr_initmember(o, p, sizeof(**p)))
248 return opt && odr_ok(o);
249 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
252 return opt && odr_ok(o);
255 int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt)
257 if (!odr_sequence_begin(o, p, sizeof(**p)))
258 return opt && odr_ok(o);
260 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
261 (odr_sequence_of(o, z_QueryTypeDetails, &(*p)->queryTypesSupported,
262 &(*p)->num_queryTypesSupported) || odr_ok(o)) &&
263 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
264 (odr_sequence_of(o, odr_oid, &(*p)->diagnosticsSets,
265 &(*p)->num_diagnosticsSets) || odr_ok(o)) &&
266 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
267 (odr_sequence_of(o, odr_oid, &(*p)->attributeSetIds,
268 &(*p)->num_attributeSetIds) || odr_ok(o)) &&
269 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
270 (odr_sequence_of(o, odr_oid, &(*p)->schemas, &(*p)->num_schemas) ||
272 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
273 (odr_sequence_of(o, odr_oid, &(*p)->recordSyntaxes,
274 &(*p)->num_recordSyntaxes) || odr_ok(o)) &&
275 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
276 (odr_sequence_of(o, odr_oid, &(*p)->resourceChallenges,
277 &(*p)->num_resourceChallenges) || odr_ok(o)) &&
278 odr_implicit(o, z_AccessRestrictions, &(*p)->restrictedAccess,
279 ODR_CONTEXT, 6, 1) &&
280 odr_implicit(o, z_Costs, &(*p)->costInfo, ODR_CONTEXT, 8, 1) &&
281 odr_implicit_settag(o, ODR_CONTEXT, 9) &&
282 (odr_sequence_of(o, odr_oid, &(*p)->variantSets,
283 &(*p)->num_variantSets) || odr_ok(o)) &&
284 odr_implicit_settag(o, ODR_CONTEXT, 10) &&
285 (odr_sequence_of(o, z_ElementSetName, &(*p)->elementSetNames,
286 &(*p)->num_elementSetNames) || odr_ok(o)) &&
287 odr_implicit_settag(o, ODR_CONTEXT, 11) &&
288 (odr_sequence_of(o, z_InternationalString, &(*p)->unitSystems,
289 &(*p)->num_unitSystems) || odr_ok(o)) &&
293 int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt)
295 static Odr_arm arm[] =
297 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_QueryTypeDetails_private,
298 z_PrivateCapabilities},
299 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_QueryTypeDetails_rpn,
301 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_QueryTypeDetails_iso8777,
302 z_Iso8777Capabilities},
303 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_QueryTypeDetails_z3958,
305 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_QueryTypeDetails_erpn,
307 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_QueryTypeDetails_rankedList,
312 if (!odr_initmember(o, p, sizeof(**p)))
313 return opt && odr_ok(o);
314 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
317 return opt && odr_ok(o);
320 int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt)
322 if (!odr_sequence_begin(o, p, sizeof(**p)))
323 return opt && odr_ok(o);
325 odr_implicit(o, z_InternationalString, &(*p)->roperator, ODR_CONTEXT, 0, 0) &&
326 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
330 int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt)
332 if (!odr_sequence_begin(o, p, sizeof(**p)))
333 return opt && odr_ok(o);
335 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
336 (odr_sequence_of(o, z_PrivateCapOperator, &(*p)->operators,
337 &(*p)->num_operators) || odr_ok(o)) &&
338 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
339 (odr_sequence_of(o, z_SearchKey, &(*p)->searchKeys,
340 &(*p)->num_searchKeys) || odr_ok(o)) &&
341 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
342 (odr_sequence_of(o, z_HumanString, &(*p)->description,
343 &(*p)->num_description) || odr_ok(o)) &&
347 int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt)
349 if (!odr_sequence_begin(o, p, sizeof(**p)))
350 return opt && odr_ok(o);
352 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
353 (odr_sequence_of(o, odr_integer, &(*p)->operators, &(*p)->num_operators) || odr_ok(o)) &&
354 odr_implicit(o, odr_bool, &(*p)->resultSetAsOperandSupported,
355 ODR_CONTEXT, 1, 0) &&
356 odr_implicit(o, odr_bool, &(*p)->restrictionOperandSupported,
357 ODR_CONTEXT, 2, 0) &&
358 odr_implicit(o, z_ProximitySupport, &(*p)->proximity, ODR_CONTEXT,
363 int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt)
365 if (!odr_sequence_begin(o, p, sizeof(**p)))
366 return opt && odr_ok(o);
368 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
369 odr_sequence_of(o, z_SearchKey, &(*p)->searchKeys,
370 &(*p)->num_searchKeys) &&
371 odr_implicit(o, z_HumanString, &(*p)->restrictions, ODR_CONTEXT,
376 int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt)
378 if (!odr_sequence_begin(o, p, sizeof(**p)))
379 return opt && odr_ok(o);
381 odr_implicit(o, odr_integer, &(*p)->unit, ODR_CONTEXT, 0, 0) &&
382 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
386 int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt)
388 static Odr_arm arm[] =
390 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ProxSupportUnit_known,
392 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ProxSupportUnit_private,
393 z_ProxSupportPrivate},
397 if (!odr_initmember(o, p, sizeof(**p)))
398 return opt && odr_ok(o);
399 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
402 return opt && odr_ok(o);
405 int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt)
407 if (!odr_sequence_begin(o, p, sizeof(**p)))
408 return opt && odr_ok(o);
410 odr_implicit(o, odr_bool, &(*p)->anySupport, ODR_CONTEXT, 0, 0) &&
411 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
412 (odr_sequence_of(o, z_ProxSupportUnit, &(*p)->unitsSupported,
413 &(*p)->num_unitsSupported) || odr_ok(o)) &&
417 int z_SearchKey(ODR o, Z_SearchKey **p, int opt)
419 if (!odr_sequence_begin(o, p, sizeof(**p)))
420 return opt && odr_ok(o);
422 odr_implicit(o, z_InternationalString, &(*p)->searchKey, ODR_CONTEXT, 0, 0) &&
423 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
427 int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt)
429 if (!odr_sequence_begin(o, p, sizeof(**p)))
430 return opt && odr_ok(o);
432 odr_explicit(o, odr_integer, &(*p)->accessType, ODR_CONTEXT, 0, 0) &&
433 odr_implicit(o, z_HumanString, &(*p)->accessText, ODR_CONTEXT, 1, 1) &&
434 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
435 (odr_sequence_of(o, odr_oid, &(*p)->accessChallenges,
436 &(*p)->num_accessChallenges) || odr_ok(o)) &&
440 int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt)
442 if (!odr_initmember(o, p, sizeof(**p)))
443 return opt && odr_ok(o);
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 (!odr_initmember(o, p, sizeof(**p)))
491 return opt && odr_ok(o);
492 if (odr_sequence_of(o, z_DatabaseName, &(*p)->databases,
493 &(*p)->num_databases))
496 return opt && odr_ok(o);
499 int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt)
501 if (!odr_sequence_begin(o, p, sizeof(**p)))
502 return opt && odr_ok(o);
504 odr_implicit(o, odr_oid, &(*p)->defaultAttributeSet,
505 ODR_CONTEXT, 0, 0) &&
506 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
507 odr_sequence_of(o, z_AttributeCombination, &(*p)->legalCombinations,
508 &(*p)->num_legalCombinations) &&
512 int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt)
514 if (!odr_initmember(o, p, sizeof(**p)))
515 return opt && odr_ok(o);
516 if (odr_sequence_of(o, z_AttributeOccurrence, &(*p)->occurrences,
517 &(*p)->num_occurrences))
520 return opt && odr_ok(o);
523 int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt)
525 if (!odr_initmember(o, p, sizeof(**p)))
526 return opt && odr_ok(o);
527 if (odr_sequence_of(o, z_StringOrNumeric, &(*p)->attributes,
528 &(*p)->num_attributes))
531 return opt && odr_ok(o);
534 int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt)
536 static Odr_arm arm[] =
538 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_AttributeOcc_anyOrNone, odr_null},
539 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_AttributeOcc_specific,
540 z_AttributeValueList},
544 if (!odr_sequence_begin(o, p, sizeof(**p)))
545 return opt && odr_ok(o);
547 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 0, 1) &&
548 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 1, 0) &&
549 odr_implicit(o, odr_null, &(*p)->mustBeSupplied, ODR_CONTEXT, 2, 1) &&
550 odr_choice(o, arm, &(*p)->attributeValues, &(*p)->which) &&
554 int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt)
556 if (!odr_sequence_begin(o, p, sizeof(**p)))
557 return opt && odr_ok(o);
559 odr_explicit(o, z_StringOrNumeric, &(*p)->value, ODR_CONTEXT, 0, 0) &&
560 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
561 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
562 (odr_sequence_of(o, z_StringOrNumeric, &(*p)->subAttributes,
563 &(*p)->num_subAttributes) || odr_ok(o)) &&
564 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
565 (odr_sequence_of(o, z_StringOrNumeric, &(*p)->superAttributes,
566 &(*p)->num_superAttributes) || odr_ok(o)) &&
567 odr_implicit(o, odr_null, &(*p)->partialSupport, ODR_CONTEXT, 4, 1) &&
573 int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt)
575 if (!odr_sequence_begin(o, p, sizeof(**p)))
576 return opt && odr_ok(o);
578 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
579 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
581 odr_implicit(o, z_HumanString, &(*p)->recentNews, ODR_CONTEXT, 2, 1) &&
582 odr_implicit(o, z_IconObject, &(*p)->icon, ODR_CONTEXT, 3, 1) &&
583 odr_implicit(o, odr_bool, &(*p)->namedResultSets, ODR_CONTEXT, 4, 0) &&
584 odr_implicit(o, odr_bool, &(*p)->multipleDBsearch, ODR_CONTEXT, 5, 0) &&
585 odr_implicit(o, odr_integer, &(*p)->maxResultSets, ODR_CONTEXT, 6, 1) &&
586 odr_implicit(o, odr_integer, &(*p)->maxResultSize, ODR_CONTEXT, 7, 1) &&
587 odr_implicit(o, odr_integer, &(*p)->maxTerms, ODR_CONTEXT, 8, 1) &&
588 odr_implicit(o, z_IntUnit, &(*p)->timeoutInterval, ODR_CONTEXT, 9, 1) &&
589 odr_implicit(o, z_HumanString, &(*p)->welcomeMessage, ODR_CONTEXT,
591 odr_implicit(o, z_ContactInfo, &(*p)->contactInfo, ODR_CONTEXT,
593 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
595 odr_implicit_settag(o, ODR_CONTEXT, 13) &&
596 (odr_sequence_of(o, z_InternationalString, &(*p)->nicknames,
597 &(*p)->num_nicknames) || odr_ok(o)) &&
598 odr_implicit(o, z_HumanString, &(*p)->usageRest, ODR_CONTEXT, 14, 1) &&
599 odr_implicit(o, z_HumanString, &(*p)->paymentAddr, ODR_CONTEXT,
601 odr_implicit(o, z_HumanString, &(*p)->hours, ODR_CONTEXT, 16, 1) &&
602 odr_implicit_settag(o, ODR_CONTEXT, 17) &&
603 (odr_sequence_of(o, z_DatabaseList, &(*p)->dbCombinations,
604 &(*p)->num_dbCombinations) || odr_ok(o)) &&
605 odr_implicit_settag(o, ODR_CONTEXT, 18) &&
606 (odr_sequence_of(o, z_NetworkAddress, &(*p)->addresses,
607 &(*p)->num_addresses) || odr_ok(o)) &&
608 odr_implicit(o, z_AccessInfo, &(*p)->commonAccessInfo, ODR_CONTEXT,
613 int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt)
615 static Odr_arm arm[] =
617 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Exp_RecordCount_actualNumber,
619 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Exp_RecordCount_approxNumber,
624 if (!odr_sequence_begin(o, p, sizeof(**p)))
625 return opt && odr_ok(o);
627 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
628 odr_implicit(o, z_DatabaseName, &(*p)->name, ODR_CONTEXT, 1, 0) &&
629 odr_implicit(o, odr_null, &(*p)->explainDatabase, ODR_CONTEXT, 2, 1) &&
630 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
631 (odr_sequence_of(o, z_DatabaseName, &(*p)->nicknames,
632 &(*p)->num_nicknames) || odr_ok(o)) &&
633 odr_implicit(o, z_IconObject, &(*p)->icon, ODR_CONTEXT, 4, 1) &&
634 odr_implicit(o, odr_bool, &(*p)->userFee, ODR_CONTEXT, 5, 0) &&
635 odr_implicit(o, odr_bool, &(*p)->available, ODR_CONTEXT, 6, 0) &&
636 odr_implicit(o, z_HumanString, &(*p)->titleString, ODR_CONTEXT, 7, 1) &&
637 odr_implicit_settag(o, ODR_CONTEXT, 8) &&
638 (odr_sequence_of(o, z_HumanString, &(*p)->keywords,
639 &(*p)->num_keywords) || odr_ok(o)) &&
640 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 9, 1) &&
641 odr_implicit(o, z_DatabaseList, &(*p)->associatedDbs, ODR_CONTEXT,
643 odr_implicit(o, z_DatabaseList, &(*p)->subDbs, ODR_CONTEXT, 11, 1) &&
644 odr_implicit(o, z_HumanString, &(*p)->disclaimers, ODR_CONTEXT,
646 odr_implicit(o, z_HumanString, &(*p)->news, ODR_CONTEXT, 13, 1) &&
647 ((odr_constructed_begin(o, &(*p)->recordCount, ODR_CONTEXT, 14) &&
648 odr_choice(o, arm, &(*p)->recordCount, &(*p)->recordCount_which) &&
649 odr_constructed_end(o)) || odr_ok(o)) &&
650 odr_implicit(o, z_HumanString, &(*p)->defaultOrder, ODR_CONTEXT,
652 odr_implicit(o, odr_integer, &(*p)->avRecordSize, ODR_CONTEXT, 16, 1) &&
653 odr_implicit(o, odr_integer, &(*p)->maxRecordSize, ODR_CONTEXT,
655 odr_implicit(o, z_HumanString, &(*p)->hours, ODR_CONTEXT, 18, 1) &&
656 odr_implicit(o, z_HumanString, &(*p)->bestTime, ODR_CONTEXT, 19, 1) &&
657 odr_implicit(o, odr_generalizedtime, &(*p)->lastUpdate, ODR_CONTEXT,
659 odr_implicit(o, z_IntUnit, &(*p)->updateInterval, ODR_CONTEXT, 21, 1) &&
660 odr_implicit(o, z_HumanString, &(*p)->coverage, ODR_CONTEXT, 22, 1) &&
661 odr_implicit(o, odr_bool, &(*p)->proprietary, ODR_CONTEXT, 23, 1) &&
662 odr_implicit(o, z_HumanString, &(*p)->copyrightText, ODR_CONTEXT,
664 odr_implicit(o, z_HumanString, &(*p)->copyrightNotice, ODR_CONTEXT,
666 odr_implicit(o, z_ContactInfo, &(*p)->producerContactInfo, ODR_CONTEXT,
668 odr_implicit(o, z_ContactInfo, &(*p)->supplierContactInfo, ODR_CONTEXT,
670 odr_implicit(o, z_ContactInfo, &(*p)->submissionContactInfo,
671 ODR_CONTEXT, 28, 1) &&
672 odr_implicit(o, z_AccessInfo, &(*p)->accessInfo, ODR_CONTEXT, 29, 1) &&
676 int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt)
678 if (!odr_sequence_begin(o, p, sizeof(**p)))
681 odr_implicit(o, odr_integer, &(*p)->tagType, ODR_CONTEXT, 0, 0) &&
682 odr_implicit(o, odr_oid, &(*p)->tagSet, ODR_CONTEXT, 1, 1) &&
683 odr_implicit(o, odr_null, &(*p)->defaultTagType, ODR_CONTEXT, 2, 1) &&
687 int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt)
689 if (!odr_sequence_begin(o, p, sizeof(**p)))
690 return opt && odr_ok(o);
692 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
693 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 1, 0) &&
694 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
696 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 3, 1) &&
697 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
698 (odr_sequence_of(o, z_TagTypeMapping, &(*p)->tagTypeMapping,
699 &(*p)->num_tagTypeMapping) || odr_ok(o)) &&
700 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
701 (odr_sequence_of(o, z_ElementInfo, &(*p)->recordStructure,
702 &(*p)->num_recordStructure) || odr_ok(o)) &&
706 int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt)
708 if (!odr_sequence_begin(o, p, sizeof(**p)))
709 return opt && odr_ok(o);
711 odr_implicit(o, z_InternationalString, &(*p)->elementName, ODR_CONTEXT, 1, 0) &&
712 odr_implicit(o, z_Path, &(*p)->elementTagPath, ODR_CONTEXT, 2, 0) &&
713 odr_explicit(o, z_ElementDataType, &(*p)->dataType, ODR_CONTEXT, 3, 1) &&
714 odr_implicit(o, odr_bool, &(*p)->required, ODR_CONTEXT, 4, 0) &&
715 odr_implicit(o, odr_bool, &(*p)->repeatable, ODR_CONTEXT, 5, 0) &&
716 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 6, 1) &&
720 int z_PathUnit(ODR o, Z_PathUnit **p, int opt)
722 if (!odr_sequence_begin(o, p, sizeof(**p)))
725 odr_implicit(o, odr_integer, &(*p)->tagType, ODR_CONTEXT, 1, 0) &&
726 odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue, ODR_CONTEXT,
731 int z_Path(ODR o, Z_Path **p, int opt)
733 if (!odr_initmember(o, p, sizeof(**p)))
734 return opt && odr_ok(o);
735 odr_implicit_settag(o, ODR_CONTEXT, 201);
736 if (odr_sequence_of(o, z_OtherInformationUnit, &(*p)->list,
740 return opt && odr_ok(o);
743 int z_ElementInfoList(ODR o, Z_Path **p, int opt)
745 if (!odr_initmember(o, p, sizeof(**p)))
746 return opt && odr_ok(o);
747 odr_implicit_settag(o, ODR_CONTEXT, 201);
748 if (odr_sequence_of(o, z_OtherInformationUnit, &(*p)->list,
752 return opt && odr_ok(o);
755 int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt)
757 static Odr_arm arm[] =
759 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ElementDataType_primitive,
761 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ElementDataType_structured,
766 if (!odr_initmember(o, p, sizeof(**p)))
767 return opt && odr_ok(o);
768 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
771 return opt && odr_ok(o);
774 int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt)
776 if (!odr_sequence_begin(o, p, sizeof(**p)))
779 odr_implicit(o, z_InternationalString, &(*p)->elementName,
780 ODR_CONTEXT, 1, 0) &&
781 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
782 (odr_sequence_of(o, z_InternationalString, &(*p)->nicknames,
783 &(*p)->num_nicknames) || odr_ok(o)) &&
784 odr_explicit(o, z_StringOrNumeric, &(*p)->elementTag, ODR_CONTEXT,
786 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
788 odr_implicit(o, odr_integer, &(*p)->dataType, ODR_CONTEXT, 5, 1) &&
789 z_OtherInformation(o, &(*p)->otherTagInfo, 1) &&
793 int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt)
795 if (!odr_sequence_begin(o, p, sizeof(**p)))
796 return opt && odr_ok(o);
798 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
799 odr_implicit(o, odr_oid, &(*p)->tagSet, ODR_CONTEXT, 1, 0) &&
800 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
802 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
804 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
805 (odr_sequence_of(o, z_TagSetInfoElements, &(*p)->elements,
806 &(*p)->num_elements) || odr_ok(o)) &&
810 int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt)
812 if (!odr_sequence_begin(o, p, sizeof(**p)))
813 return opt && odr_ok(o);
815 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
816 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 1, 0) &&
817 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
819 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
820 (odr_sequence_of(o, odr_oid, &(*p)->transferSyntaxes,
821 &(*p)->num_transferSyntaxes) || odr_ok(o)) &&
822 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
823 odr_implicit(o, z_InternationalString, &(*p)->asn1Module, ODR_CONTEXT,
825 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
826 (odr_sequence_of(o, z_ElementInfo, &(*p)->abstractStructure,
827 &(*p)->num_abstractStructure) || odr_ok(o)) &&
831 int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt)
833 if (!odr_sequence_begin(o, p, sizeof(**p)))
834 return opt && odr_ok(o);
836 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
837 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 1, 0) &&
838 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 2, 0) &&
839 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
840 (odr_sequence_of(o, z_AttributeType, &(*p)->attributes,
841 &(*p)->num_attributes) || odr_ok(o)) &&
842 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
846 int z_AttributeType(ODR o, Z_AttributeType **p, int opt)
848 if (!odr_sequence_begin(o, p, sizeof(**p)))
849 return opt && odr_ok(o);
851 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
852 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
853 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 2, 0) &&
854 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
855 odr_sequence_of(o, z_AttributeDescription, &(*p)->attributeValues,
856 &(*p)->num_attributeValues) &&
860 int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt)
862 if (!odr_sequence_begin(o, p, sizeof(**p)))
863 return opt && odr_ok(o);
865 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
866 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
867 odr_explicit(o, z_StringOrNumeric, &(*p)->attributeValue, ODR_CONTEXT, 2, 0) &&
868 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
869 (odr_sequence_of(o, z_StringOrNumeric, &(*p)->equivalentAttributes,
870 &(*p)->num_equivalentAttributes) || odr_ok(o)) &&
874 int z_TermListElement(ODR o, Z_TermListElement **p, int opt)
876 if (!odr_sequence_begin(o, p, sizeof(**p)))
877 return opt && odr_ok(o);
879 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 1, 0) &&
880 odr_implicit(o, z_HumanString, &(*p)->title, ODR_CONTEXT, 2, 1) &&
881 odr_implicit(o, odr_integer, &(*p)->searchCost, ODR_CONTEXT, 3, 1) &&
882 odr_implicit(o, odr_bool, &(*p)->scanable, ODR_CONTEXT, 4, 0) &&
883 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
884 (odr_sequence_of(o, z_InternationalString, &(*p)->broader,
885 &(*p)->num_broader) || odr_ok(o)) &&
886 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
887 (odr_sequence_of(o, z_InternationalString, &(*p)->narrower,
888 &(*p)->num_narrower) || odr_ok(o)) &&
892 int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt)
894 if (!odr_sequence_begin(o, p, sizeof(**p)))
895 return opt && odr_ok(o);
897 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
898 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
900 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
901 (odr_sequence_of(o, z_TermListElement, &(*p)->termLists,
902 &(*p)->num_termLists) || odr_ok(o)) &&
906 int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt)
908 if (!odr_sequence_begin(o, p, sizeof(**p)))
909 return opt && odr_ok(o);
911 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
912 odr_implicit(o, odr_oid, &(*p)->type, ODR_CONTEXT, 1, 0) &&
913 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 2, 1) &&
914 odr_implicit(o, odr_bool, &(*p)->privateType, ODR_CONTEXT, 3, 0) &&
915 odr_implicit(o, odr_bool, &(*p)->restrictionsApply, ODR_CONTEXT, 5, 0) &&
916 odr_implicit(o, odr_bool, &(*p)->feeApply, ODR_CONTEXT, 6, 0) &&
917 odr_implicit(o, odr_bool, &(*p)->available, ODR_CONTEXT, 7, 0) &&
918 odr_implicit(o, odr_bool, &(*p)->retentionSupported, ODR_CONTEXT, 8, 0) &&
919 odr_implicit(o, odr_integer, &(*p)->waitAction, ODR_CONTEXT, 9, 0) &&
920 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 10, 1) &&
921 odr_implicit(o, z_External, &(*p)->specificExplain, ODR_CONTEXT, 11, 1) &&
922 odr_implicit(o, z_InternationalString, &(*p)->esASN, ODR_CONTEXT, 12, 1) &&
926 int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt)
928 if (!odr_sequence_begin(o, p, sizeof(**p)))
929 return opt && odr_ok(o);
931 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
932 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) &&
933 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
934 (odr_sequence_of(o, z_AttributeSetDetails, &(*p)->attributesBySet,
935 &(*p)->num_attributesBySet) && odr_ok(o)) &&
936 odr_implicit(o, z_AttributeCombinations, &(*p)->attributeCombinations, ODR_CONTEXT, 3, 1) &&
940 int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt)
942 if (!odr_sequence_begin(o, p, sizeof(**p)))
943 return opt && odr_ok(o);
945 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT,
947 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
948 odr_sequence_of(o, z_AttributeTypeDetails, &(*p)->attributesByType,
949 &(*p)->num_attributesByType) &&
953 int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt)
955 if (!odr_sequence_begin(o, p, sizeof(**p)))
956 return opt && odr_ok(o);
958 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 0, 0) &&
959 odr_implicit(o, z_OmittedAttributeInterpretation, &(*p)->optionalType, ODR_CONTEXT, 1, 1) &&
960 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
961 (odr_sequence_of(o, z_AttributeValue, &(*p)->attributeValues,
962 &(*p)->num_attributeValues) || odr_ok(o)) &&
966 int z_OmittedAttributeInterpretation(ODR o, Z_OmittedAttributeInterpretation **p, int opt)
968 if (!odr_sequence_begin(o, p, sizeof(**p)))
969 return opt && odr_ok(o);
971 odr_explicit(o, z_StringOrNumeric, &(*p)->defaultValue, ODR_CONTEXT, 0, 1) &&
972 odr_implicit(o, z_HumanString, &(*p)->defaultDescription, ODR_CONTEXT, 1, 1) &&
976 int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt)
978 if (!odr_sequence_begin(o, p, sizeof(**p)))
979 return opt && odr_ok(o);
981 odr_implicit(o, odr_integer, &(*p)->maxStepSize, ODR_CONTEXT, 0, 1) &&
982 odr_implicit(o, z_HumanString, &(*p)->collatingSequence, ODR_CONTEXT, 1, 1) &&
983 odr_implicit(o, odr_bool, &(*p)->increasing, ODR_CONTEXT, 2, 1) &&
987 int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt)
989 if (!odr_sequence_begin(o, p, sizeof(**p)))
990 return opt && odr_ok(o);
992 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
993 odr_implicit(o, z_InternationalString, &(*p)->termListName, ODR_CONTEXT, 1, 0) &&
994 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 2, 1) &&
995 odr_implicit(o, z_AttributeCombinations, &(*p)->attributes, ODR_CONTEXT, 3, 1) &&
996 odr_implicit(o, z_EScanInfo, &(*p)->scanInfo, ODR_CONTEXT, 4, 1) &&
997 odr_implicit(o, odr_integer, &(*p)->estNumberTerms, ODR_CONTEXT, 5, 1) &&
998 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
999 (odr_sequence_of(o, z_Term, &(*p)->sampleTerms,
1000 &(*p)->num_sampleTerms) || odr_ok(o)) &&
1001 odr_sequence_end(o);
1004 int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt)
1006 if (!odr_sequence_begin(o, p, sizeof(**p)))
1007 return opt && odr_ok(o);
1009 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1010 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) &&
1011 odr_implicit(o, z_ElementSetName, &(*p)->elementSetName, ODR_CONTEXT, 2, 0) &&
1012 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 3, 0) &&
1013 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 4, 0) &&
1014 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 5, 1) &&
1015 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
1016 (odr_sequence_of(o, z_PerElementDetails, &(*p)->detailsPerElement, &(*p)->num_detailsPerElement) || odr_ok(o)) &&
1017 odr_sequence_end(o);
1020 int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt)
1022 if (!odr_sequence_begin(o, p, sizeof(**p)))
1023 return opt && odr_ok(o);
1025 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1026 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) &&
1027 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 2, 0) &&
1028 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 3, 0) &&
1029 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
1030 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
1031 (odr_sequence_of(o, z_PerElementDetails, &(*p)->detailsPerElement,
1032 &(*p)->num_detailsPerElement) || odr_ok(o)) &&
1033 odr_sequence_end(o);
1036 int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt)
1038 if (!odr_sequence_begin(o, p, sizeof(**p)))
1039 return opt && odr_ok(o);
1041 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
1042 odr_implicit(o, z_RecordTag, &(*p)->recordTag, ODR_CONTEXT, 1, 1) &&
1043 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1044 (odr_sequence_of(o, z_Path, &(*p)->schemaTags, &(*p)->num_schemaTags) ||
1046 odr_implicit(o, odr_integer, &(*p)->maxSize, ODR_CONTEXT, 3, 1) &&
1047 odr_implicit(o, odr_integer, &(*p)->minSize, ODR_CONTEXT, 4, 1) &&
1048 odr_implicit(o, odr_integer, &(*p)->avgSize, ODR_CONTEXT, 5, 1) &&
1049 odr_implicit(o, odr_integer, &(*p)->fixedSize, ODR_CONTEXT, 6, 1) &&
1050 odr_implicit(o, odr_bool, &(*p)->repeatable, ODR_CONTEXT, 8, 0) &&
1051 odr_implicit(o, odr_bool, &(*p)->required, ODR_CONTEXT, 9, 0) &&
1052 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 12, 1) &&
1053 odr_implicit(o, z_HumanString, &(*p)->contents, ODR_CONTEXT, 13, 1) &&
1054 odr_implicit(o, z_HumanString, &(*p)->billingInfo, ODR_CONTEXT, 14, 1) &&
1055 odr_implicit(o, z_HumanString, &(*p)->restrictions, ODR_CONTEXT, 15, 1) &&
1056 odr_implicit_settag(o, ODR_CONTEXT, 16) &&
1057 (odr_sequence_of(o, z_InternationalString, &(*p)->alternateNames,
1058 &(*p)->num_alternateNames) || odr_ok(o)) &&
1059 odr_implicit_settag(o, ODR_CONTEXT, 17) &&
1060 (odr_sequence_of(o, z_InternationalString, &(*p)->genericNames,
1061 &(*p)->num_genericNames) || odr_ok(o)) &&
1062 odr_implicit(o, z_AttributeCombinations, &(*p)->searchAccess,
1063 ODR_CONTEXT, 18, 1) &&
1064 odr_sequence_end(o);
1067 int z_RecordTag(ODR o, Z_RecordTag **p, int opt)
1069 if (!odr_sequence_begin(o, p, sizeof(**p)))
1070 return opt && odr_ok(o);
1072 odr_explicit(o, z_StringOrNumeric, &(*p)->qualifier, ODR_CONTEXT,
1074 odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue, ODR_CONTEXT,
1076 odr_sequence_end(o);
1079 int z_SortDetails(ODR o, Z_SortDetails **p, int opt)
1081 if (!odr_sequence_begin(o, p, sizeof(**p)))
1082 return opt && odr_ok(o);
1084 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1085 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
1087 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1088 (odr_sequence_of(o, z_SortKeyDetails, &(*p)->sortKeys,
1089 &(*p)->num_sortKeys) || odr_ok(o)) &&
1090 odr_sequence_end(o);
1093 int z_SortKeyDetailsSortType(ODR o, Z_SortKeyDetailsSortType **p, int opt)
1095 static Odr_arm arm[] =
1097 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_character,
1099 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_numeric,
1101 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_structured,
1106 if (!odr_initmember(o, p, sizeof(**p)))
1107 return opt && odr_ok(o);
1108 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1111 return opt && odr_ok(o);
1114 int z_SortKeyDetails(ODR o, Z_SortKeyDetails **p, int opt)
1116 if (!odr_sequence_begin(o, p, sizeof(**p)))
1117 return opt && odr_ok(o);
1119 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 0, 1) &&
1120 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
1121 (odr_sequence_of(o, z_Specification, &(*p)->elementSpecifications,
1122 &(*p)->num_elementSpecifications) || odr_ok(o)) &&
1123 odr_implicit(o, z_AttributeCombinations, &(*p)->attributeSpecifications,
1124 ODR_CONTEXT, 2, 1) &&
1125 odr_explicit(o, z_SortKeyDetailsSortType, &(*p)->sortType, ODR_CONTEXT,
1127 odr_implicit(o, odr_integer, &(*p)->caseSensitivity, ODR_CONTEXT,
1129 odr_sequence_end(o);
1132 int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt)
1134 if (!odr_sequence_begin(o, p, sizeof(**p)))
1135 return opt && odr_ok(o);
1137 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1138 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
1140 odr_implicit(o, odr_integer, &(*p)->processingContext, ODR_CONTEXT,
1142 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1144 odr_implicit(o, odr_oid, &(*p)->oid, ODR_CONTEXT, 4, 0) &&
1145 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 5, 1) &&
1146 odr_implicit(o, z_External, &(*p)->instructions, ODR_CONTEXT, 6, 1) &&
1147 odr_sequence_end(o);
1150 int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt)
1152 if (!odr_sequence_begin(o, p, sizeof(**p)))
1153 return opt && odr_ok(o);
1155 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1156 odr_implicit(o, odr_oid, &(*p)->variantSet, ODR_CONTEXT, 1, 0) &&
1157 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1159 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1160 (odr_sequence_of(o, z_VariantClass, &(*p)->variants,
1161 &(*p)->num_variants) || odr_ok(o)) &&
1162 odr_sequence_end(o);
1165 int z_VariantClass(ODR o, Z_VariantClass **p, int opt)
1167 if (!odr_sequence_begin(o, p, sizeof(**p)))
1168 return opt && odr_ok(o);
1170 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1172 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1173 odr_implicit(o, odr_integer, &(*p)->variantClass, ODR_CONTEXT, 2, 0) &&
1174 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1175 odr_sequence_of(o, z_VariantType, &(*p)->variantTypes,
1176 &(*p)->num_variantTypes) &&
1177 odr_sequence_end(o);
1180 int z_VariantType(ODR o, Z_VariantType **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, 0, 1) &&
1186 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1187 odr_implicit(o, odr_integer, &(*p)->variantType, ODR_CONTEXT, 2, 0) &&
1188 odr_implicit(o, z_VariantValue, &(*p)->variantValue, ODR_CONTEXT, 3, 1) &&
1189 odr_sequence_end(o);
1192 int z_VariantValue(ODR o, Z_VariantValue **p, int opt)
1194 if (!odr_sequence_begin(o, p, sizeof(**p)))
1195 return opt && odr_ok(o);
1197 odr_explicit(o, odr_integer, &(*p)->dataType, ODR_CONTEXT, 0, 0) &&
1198 odr_explicit(o, z_ValueSet, &(*p)->values, ODR_CONTEXT, 1, 1) &&
1199 odr_sequence_end(o);
1202 int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt)
1204 if (!odr_initmember(o, p, sizeof(**p)))
1205 return opt && odr_ok(o);
1206 if (odr_sequence_of(o, z_ValueDescription, &(*p)->enumerated,
1207 &(*p)->num_enumerated))
1210 return opt && odr_ok(o);
1213 int z_ValueSet(ODR o, Z_ValueSet **p, int opt)
1215 static Odr_arm arm[] =
1217 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ValueSet_range, z_ValueRange},
1218 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueSet_enumerated,
1219 z_ValueSetEnumerated},
1223 if (!odr_initmember(o, p, sizeof(**p)))
1224 return opt && odr_ok(o);
1225 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1228 return opt && odr_ok(o);
1231 int z_ValueRange(ODR o, Z_ValueRange **p, int opt)
1233 if (!odr_sequence_begin(o, p, sizeof(**p)))
1234 return opt && odr_ok(o);
1236 odr_explicit(o, z_ValueDescription, &(*p)->lower, ODR_CONTEXT, 0, 1) &&
1237 odr_explicit(o, z_ValueDescription, &(*p)->upper, ODR_CONTEXT, 1, 1) &&
1238 odr_sequence_end(o);
1241 int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt)
1243 static Odr_arm arm[] =
1245 {ODR_NONE, -1, -1, Z_ValueDescription_integer, odr_integer},
1246 {ODR_NONE, -1, -1, Z_ValueDescription_string, z_InternationalString},
1247 {ODR_NONE, -1, -1, Z_ValueDescription_octets, odr_octetstring},
1248 {ODR_NONE, -1, -1, Z_ValueDescription_oid, odr_oid},
1249 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueDescription_unit, z_Unit},
1250 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ValueDescription_valueAndUnit, z_IntUnit},
1254 if (!odr_initmember(o, p, sizeof(**p)))
1255 return opt && odr_ok(o);
1256 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1259 return opt && odr_ok(o);
1262 int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt)
1264 if (!odr_sequence_begin(o, p, sizeof(**p)))
1265 return opt && odr_ok(o);
1267 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1268 odr_implicit(o, z_InternationalString, &(*p)->unitSystem, ODR_CONTEXT,
1270 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 2, 1) &&
1271 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1272 (odr_sequence_of(o, z_UnitType, &(*p)->units, &(*p)->num_units) ||
1274 odr_sequence_end(o);
1277 int z_UnitType(ODR o, Z_UnitType **p, int opt)
1279 if (!odr_sequence_begin(o, p, sizeof(**p)))
1280 return opt && odr_ok(o);
1282 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1284 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1285 odr_explicit(o, z_StringOrNumeric, &(*p)->unitType, ODR_CONTEXT,
1287 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1288 odr_sequence_of(o, z_Units, &(*p)->units, &(*p)->num_units) &&
1289 odr_sequence_end(o);
1292 int z_Units(ODR o, Z_Units **p, int opt)
1294 if (!odr_sequence_begin(o, p, sizeof(**p)))
1295 return opt && odr_ok(o);
1297 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
1298 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1299 odr_explicit(o, z_StringOrNumeric, &(*p)->unit, ODR_CONTEXT, 2, 0) &&
1300 odr_sequence_end(o);
1303 int z_CategoryList(ODR o, Z_CategoryList **p, int opt)
1305 if (!odr_sequence_begin(o, p, sizeof(**p)))
1306 return opt && odr_ok(o);
1308 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1309 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
1310 odr_sequence_of(o, z_CategoryInfo, &(*p)->categories,
1311 &(*p)->num_categories) &&
1312 odr_sequence_end(o);
1315 int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt)
1317 if (!odr_sequence_begin(o, p, sizeof(**p)))
1318 return opt && odr_ok(o);
1320 odr_implicit(o, z_InternationalString, &(*p)->category, ODR_CONTEXT,
1322 odr_implicit(o, z_InternationalString, &(*p)->originalCategory,
1323 ODR_CONTEXT, 2, 1) &&
1324 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 3, 1) &&
1325 odr_implicit(o, z_InternationalString, &(*p)->asn1Module, ODR_CONTEXT,
1327 odr_sequence_end(o);
1330 int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt)
1332 static Odr_arm arm[] =
1334 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Explain_targetInfo, z_TargetInfo},
1335 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Explain_databaseInfo, z_DatabaseInfo},
1336 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_Explain_schemaInfo, z_SchemaInfo},
1337 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_Explain_tagSetInfo, z_TagSetInfo},
1338 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_Explain_recordSyntaxInfo,
1339 z_RecordSyntaxInfo},
1340 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_Explain_attributeSetInfo,
1341 z_AttributeSetInfo},
1342 {ODR_IMPLICIT, ODR_CONTEXT, 6, Z_Explain_termListInfo,
1344 {ODR_IMPLICIT, ODR_CONTEXT, 7, Z_Explain_extendedServicesInfo,
1345 z_ExtendedServicesInfo},
1346 {ODR_IMPLICIT, ODR_CONTEXT, 8, Z_Explain_attributeDetails,
1347 z_AttributeDetails},
1348 {ODR_IMPLICIT, ODR_CONTEXT, 9, Z_Explain_termListDetails,
1350 {ODR_IMPLICIT, ODR_CONTEXT, 10, Z_Explain_elementSetDetails,
1351 z_ElementSetDetails},
1352 {ODR_IMPLICIT, ODR_CONTEXT, 11, Z_Explain_retrievalRecordDetails,
1353 z_RetrievalRecordDetails},
1354 {ODR_IMPLICIT, ODR_CONTEXT, 12, Z_Explain_sortDetails,
1356 {ODR_IMPLICIT, ODR_CONTEXT, 13, Z_Explain_processing,
1357 z_ProcessingInformation},
1358 {ODR_IMPLICIT, ODR_CONTEXT, 14, Z_Explain_variants,
1360 {ODR_IMPLICIT, ODR_CONTEXT, 15, Z_Explain_units, z_UnitInfo},
1361 {ODR_IMPLICIT, ODR_CONTEXT, 100, Z_Explain_categoryList,
1366 if (!odr_initmember(o, p, sizeof(**p)))
1367 return opt && odr_ok(o);
1368 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1371 return opt && odr_ok(o);