2 * Copyright (c) 1995-1999, Index Data.
3 * See the file LICENSE for details.
4 * Sebastian Hammer, Adam Dickmeiss
7 * Revision 1.11 1999-03-18 12:57:13 adam
8 * Fixed bug in TargetInfo encoder/decoder.
10 * Revision 1.10 1998/05/18 13:06:52 adam
11 * Changed the way attribute sets are handled by the retriaval module.
12 * Extended Explain conversion / schema.
13 * Modified server and client to work with ASN.1 compiled protocol handlers.
15 * Revision 1.9 1998/02/11 11:53:32 adam
16 * Changed code so that it compiles as C++.
18 * Revision 1.8 1996/01/02 11:46:41 quinn
19 * Changed 'operator' to 'roperator' to avoid C++ conflict.
21 * Revision 1.7 1995/12/14 16:28:07 quinn
24 * Revision 1.6 1995/12/14 11:09:09 quinn
25 * Fixed bug in tagging.
27 * Revision 1.5 1995/12/05 11:15:50 quinn
30 * Revision 1.4 1995/09/29 17:11:54 quinn
33 * Revision 1.3 1995/09/27 15:02:42 quinn
34 * Modified function heads & prototypes.
36 * Revision 1.2 1995/08/15 11:59:43 quinn
39 * Revision 1.1 1995/08/10 08:54:02 quinn
47 int z_LanguageCode(ODR o, char **p, int opt);
48 int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt);
49 int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt);
50 int z_HumanString(ODR o, Z_HumanString **p, int opt);
51 int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt);
52 int z_IconObject(ODR o, Z_IconObject **p, int opt);
53 int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt);
54 int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt);
55 int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt);
56 int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt);
57 int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt);
58 int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt);
59 int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt);
60 int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt);
61 int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt);
62 int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt);
63 int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt);
64 int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt);
65 int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt);
66 int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt);
67 int z_SearchKey(ODR o, Z_SearchKey **p, int opt);
68 int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt);
69 int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt);
70 int z_CostsOtherCharge(ODR o, Z_CostsOtherCharge **p, int opt);
71 int z_Costs(ODR o, Z_Costs **p, int opt);
72 int z_Charge(ODR o, Z_Charge **p, int opt);
73 int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt);
74 int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt);
75 int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt);
76 int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt);
77 int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt);
78 int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt);
79 int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt);
80 int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt);
81 int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt);
82 int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt);
83 int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt);
84 int z_PathUnit(ODR o, Z_PathUnit **p, int opt);
85 int z_Path(ODR o, Z_Path **p, int opt);
86 int z_ElementInfoList(ODR o, Z_Path **p, int opt);
87 int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt);
88 int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt);
89 int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt);
90 int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt);
91 int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt);
92 int z_AttributeType(ODR o, Z_AttributeType **p, int opt);
93 int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt);
94 int z_TermListElement(ODR o, Z_TermListElement **p, int opt);
95 int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt);
96 int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt);
97 int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt);
98 int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt);
99 int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt);
100 int z_OmittedAttributeInterpretation(ODR o, Z_OmittedAttributeInterpretation **p, int opt);
101 int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt);
102 int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt);
103 int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt);
104 int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt);
105 int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt);
106 int z_RecordTag(ODR o, Z_RecordTag **p, int opt);
107 int z_SortDetails(ODR o, Z_SortDetails **p, int opt);
108 int z_SortKeyDetails(ODR o, Z_SortKeyDetails **p, int opt);
109 int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt);
110 int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt);
111 int z_VariantClass(ODR o, Z_VariantClass **p, int opt);
112 int z_VariantType(ODR o, Z_VariantType **p, int opt);
113 int z_VariantValue(ODR o, Z_VariantValue **p, int opt);
114 int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt);
115 int z_ValueSet(ODR o, Z_ValueSet **p, int opt);
116 int z_ValueRange(ODR o, Z_ValueRange **p, int opt);
117 int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt);
118 int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt);
119 int z_UnitType(ODR o, Z_UnitType **p, int opt);
120 int z_Units(ODR o, Z_Units **p, int opt);
121 int z_CategoryList(ODR o, Z_CategoryList **p, int opt);
122 int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt);
123 int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt);
125 int z_LanguageCode(ODR o, char **p, int opt)
127 return z_InternationalString(o, p, opt);
130 int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt)
132 if (!odr_sequence_begin(o, p, sizeof(**p)))
133 return opt && odr_ok(o);
135 odr_implicit(o, odr_generalizedtime, &(*p)->dateAdded, ODR_CONTEXT, 0, 1) &&
136 odr_implicit(o, odr_generalizedtime, &(*p)->dateChanged, ODR_CONTEXT, 1, 1) &&
137 odr_implicit(o, odr_generalizedtime, &(*p)->expiry, ODR_CONTEXT, 2, 1) &&
138 odr_implicit(o, z_LanguageCode, &(*p)->humanStringLanguage, ODR_CONTEXT, 3, 1) &&
139 z_OtherInformation(o, &(*p)->otherInfo, 1) &&
143 int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt)
145 if (!odr_sequence_begin(o, p, sizeof(**p)))
146 return opt && odr_ok(o);
148 odr_implicit(o, z_LanguageCode, &(*p)->language, ODR_CONTEXT, 0, 1) &&
149 odr_implicit(o, z_InternationalString, &(*p)->text, ODR_CONTEXT,
154 int z_HumanString(ODR o, Z_HumanString **p, int opt)
156 if (!odr_initmember(o, p, sizeof(**p)))
157 return opt && odr_ok(o);
158 if (odr_sequence_of(o, (Odr_fun)z_HumanStringUnit, &(*p)->strings,
162 return opt && odr_ok(o);
165 int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt)
167 static Odr_arm arm[] =
169 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IconObjectUnit_ianaType,
170 z_InternationalString},
171 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IconObjectUnit_z3950type,
172 z_InternationalString},
173 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IconObjectUnit_otherType,
174 z_InternationalString},
178 if (!odr_sequence_begin(o, p, sizeof(**p)))
179 return opt && odr_ok(o);
181 odr_constructed_begin(o, &(*p)->bodyType, ODR_CONTEXT, 1) &&
182 odr_choice(o, arm, &(*p)->bodyType, &(*p)->which) &&
183 odr_constructed_end(o) &&
184 odr_implicit(o, odr_octetstring, &(*p)->content, ODR_CONTEXT, 2, 0) &&
188 int z_IconObject(ODR o, Z_IconObject **p, int opt)
190 if (!odr_initmember(o, p, sizeof(**p)))
191 return opt && odr_ok(o);
192 if (odr_sequence_of(o, (Odr_fun)z_IconObjectUnit, &(*p)->elements,
196 return opt && odr_ok(o);
199 int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt)
201 if (!odr_sequence_begin(o, p, sizeof(**p)))
202 return opt && odr_ok(o);
204 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
205 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
206 odr_implicit(o, z_HumanString, &(*p)->address, ODR_CONTEXT, 2, 1) &&
207 odr_implicit(o, z_InternationalString, &(*p)->email, ODR_CONTEXT, 3, 1) &&
208 odr_implicit(o, z_InternationalString, &(*p)->phone, ODR_CONTEXT, 4, 1) &&
212 int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt)
214 if (!odr_sequence_begin(o, p, sizeof(**p)))
217 odr_implicit(o, z_InternationalString, &(*p)->hostAddress, ODR_CONTEXT, 0, 0) &&
218 odr_implicit(o, odr_integer, &(*p)->port, ODR_CONTEXT, 1, 0) &&
222 int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt)
224 if (!odr_sequence_begin(o, p, sizeof(**p)))
227 odr_implicit(o, z_InternationalString, &(*p)->pSel, ODR_CONTEXT, 0, 0) &&
228 odr_implicit(o, z_InternationalString, &(*p)->sSel, ODR_CONTEXT, 1, 1) &&
229 odr_implicit(o, z_InternationalString, &(*p)->tSel, ODR_CONTEXT, 2, 1) &&
230 odr_implicit(o, z_InternationalString, &(*p)->nSap, ODR_CONTEXT, 3, 0) &&
234 int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt)
236 if (!odr_sequence_begin(o, p, sizeof(**p)))
239 odr_implicit(o, z_InternationalString, &(*p)->type, ODR_CONTEXT, 0, 0) &&
240 odr_implicit(o, z_InternationalString, &(*p)->address, ODR_CONTEXT, 1, 0) &&
244 int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt)
246 static Odr_arm arm[] =
248 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_NetworkAddress_iA,
249 (Odr_fun)z_NetworkAddressIA},
250 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_NetworkAddress_oPA,
251 (Odr_fun)z_NetworkAddressOPA},
252 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_NetworkAddress_other,
253 (Odr_fun)z_NetworkAddressOther},
257 if (!odr_initmember(o, p, sizeof(**p)))
258 return opt && odr_ok(o);
259 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
262 return opt && odr_ok(o);
265 int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt)
267 if (!odr_sequence_begin(o, p, sizeof(**p)))
268 return opt && odr_ok(o);
270 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
271 (odr_sequence_of(o, (Odr_fun)z_QueryTypeDetails, &(*p)->queryTypesSupported,
272 &(*p)->num_queryTypesSupported) || odr_ok(o)) &&
273 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
274 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->diagnosticsSets,
275 &(*p)->num_diagnosticsSets) || odr_ok(o)) &&
276 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
277 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->attributeSetIds,
278 &(*p)->num_attributeSetIds) || odr_ok(o)) &&
279 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
280 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->schemas, &(*p)->num_schemas) ||
282 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
283 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->recordSyntaxes,
284 &(*p)->num_recordSyntaxes) || odr_ok(o)) &&
285 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
286 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->resourceChallenges,
287 &(*p)->num_resourceChallenges) || odr_ok(o)) &&
288 odr_implicit(o, z_AccessRestrictions, &(*p)->restrictedAccess,
289 ODR_CONTEXT, 6, 1) &&
290 odr_implicit(o, z_Costs, &(*p)->costInfo, ODR_CONTEXT, 8, 1) &&
291 odr_implicit_settag(o, ODR_CONTEXT, 9) &&
292 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->variantSets,
293 &(*p)->num_variantSets) || odr_ok(o)) &&
294 odr_implicit_settag(o, ODR_CONTEXT, 10) &&
295 (odr_sequence_of(o, (Odr_fun)z_ElementSetName, &(*p)->elementSetNames,
296 &(*p)->num_elementSetNames) || odr_ok(o)) &&
297 odr_implicit_settag(o, ODR_CONTEXT, 11) &&
298 (odr_sequence_of(o, (Odr_fun)z_InternationalString, &(*p)->unitSystems,
299 &(*p)->num_unitSystems) || odr_ok(o)) &&
303 int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt)
305 static Odr_arm arm[] =
307 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_QueryTypeDetails_private,
308 (Odr_fun)z_PrivateCapabilities},
309 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_QueryTypeDetails_rpn,
310 (Odr_fun)z_RpnCapabilities},
311 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_QueryTypeDetails_iso8777,
312 (Odr_fun)z_Iso8777Capabilities},
313 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_QueryTypeDetails_z39_58,
314 (Odr_fun)z_HumanString},
315 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_QueryTypeDetails_erpn,
316 (Odr_fun)z_RpnCapabilities},
317 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_QueryTypeDetails_rankedList,
318 (Odr_fun)z_HumanString},
322 if (!odr_initmember(o, p, sizeof(**p)))
323 return opt && odr_ok(o);
324 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
327 return opt && odr_ok(o);
330 int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt)
332 if (!odr_sequence_begin(o, p, sizeof(**p)))
333 return opt && odr_ok(o);
335 odr_implicit(o, z_InternationalString, &(*p)->roperator, ODR_CONTEXT, 0, 0) &&
336 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
340 int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt)
342 if (!odr_sequence_begin(o, p, sizeof(**p)))
343 return opt && odr_ok(o);
345 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
346 (odr_sequence_of(o, (Odr_fun)z_PrivateCapOperator, &(*p)->operators,
347 &(*p)->num_operators) || odr_ok(o)) &&
348 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
349 (odr_sequence_of(o, (Odr_fun)z_SearchKey, &(*p)->searchKeys,
350 &(*p)->num_searchKeys) || odr_ok(o)) &&
351 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
352 (odr_sequence_of(o, (Odr_fun)z_HumanString, &(*p)->description,
353 &(*p)->num_description) || odr_ok(o)) &&
357 int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt)
359 if (!odr_sequence_begin(o, p, sizeof(**p)))
360 return opt && odr_ok(o);
362 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
363 (odr_sequence_of(o, (Odr_fun)odr_integer, &(*p)->operators, &(*p)->num_operators) || odr_ok(o)) &&
364 odr_implicit(o, odr_bool, &(*p)->resultSetAsOperandSupported,
365 ODR_CONTEXT, 1, 0) &&
366 odr_implicit(o, odr_bool, &(*p)->restrictionOperandSupported,
367 ODR_CONTEXT, 2, 0) &&
368 odr_implicit(o, z_ProximitySupport, &(*p)->proximity, ODR_CONTEXT,
373 int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt)
375 if (!odr_sequence_begin(o, p, sizeof(**p)))
376 return opt && odr_ok(o);
378 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
379 odr_sequence_of(o, (Odr_fun)z_SearchKey, &(*p)->searchKeys,
380 &(*p)->num_searchKeys) &&
381 odr_implicit(o, z_HumanString, &(*p)->restrictions, ODR_CONTEXT,
386 int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt)
388 if (!odr_sequence_begin(o, p, sizeof(**p)))
389 return opt && odr_ok(o);
391 odr_implicit(o, odr_integer, &(*p)->unit, ODR_CONTEXT, 0, 0) &&
392 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
396 int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt)
398 static Odr_arm arm[] =
400 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ProxSupportUnit_known,
401 (Odr_fun)odr_integer},
402 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ProxSupportUnit_private,
403 (Odr_fun)z_ProxSupportPrivate},
407 if (!odr_initmember(o, p, sizeof(**p)))
408 return opt && odr_ok(o);
409 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
412 return opt && odr_ok(o);
415 int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt)
417 if (!odr_sequence_begin(o, p, sizeof(**p)))
418 return opt && odr_ok(o);
420 odr_implicit(o, odr_bool, &(*p)->anySupport, ODR_CONTEXT, 0, 0) &&
421 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
422 (odr_sequence_of(o, (Odr_fun)z_ProxSupportUnit, &(*p)->unitsSupported,
423 &(*p)->num_unitsSupported) || odr_ok(o)) &&
427 int z_SearchKey(ODR o, Z_SearchKey **p, int opt)
429 if (!odr_sequence_begin(o, p, sizeof(**p)))
430 return opt && odr_ok(o);
432 odr_implicit(o, z_InternationalString, &(*p)->searchKey, ODR_CONTEXT, 0, 0) &&
433 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
437 int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt)
439 if (!odr_sequence_begin(o, p, sizeof(**p)))
440 return opt && odr_ok(o);
442 odr_explicit(o, odr_integer, &(*p)->accessType, ODR_CONTEXT, 0, 0) &&
443 odr_implicit(o, z_HumanString, &(*p)->accessText, ODR_CONTEXT, 1, 1) &&
444 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
445 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->accessChallenges,
446 &(*p)->num_accessChallenges) || odr_ok(o)) &&
450 int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt)
452 if (!odr_initmember(o, p, sizeof(**p)))
453 return opt && odr_ok(o);
454 if (odr_sequence_of(o, (Odr_fun)z_AccessRestrictionsUnit, &(*p)->elements,
458 return opt && odr_ok(o);
461 int z_CostsOtherCharge(ODR o, Z_CostsOtherCharge **p, int opt)
463 if (!odr_sequence_begin(o, p, sizeof(**p)))
464 return opt && odr_ok(o);
466 odr_implicit(o, z_HumanString, &(*p)->forWhat, ODR_CONTEXT, 1, 0) &&
467 odr_implicit(o, z_Charge, &(*p)->charge, ODR_CONTEXT, 2, 1) &&
471 int z_Costs(ODR o, Z_Costs **p, int opt)
473 if (!odr_sequence_begin(o, p, sizeof(**p)))
474 return opt && odr_ok(o);
476 odr_implicit(o, z_Charge, &(*p)->connectCharge, ODR_CONTEXT, 0, 1) &&
477 odr_implicit(o, z_Charge, &(*p)->connectTime, ODR_CONTEXT, 1, 1) &&
478 odr_implicit(o, z_Charge, &(*p)->displayCharge, ODR_CONTEXT, 2, 1) &&
479 odr_implicit(o, z_Charge, &(*p)->searchCharge, ODR_CONTEXT, 3, 1) &&
480 odr_implicit(o, z_Charge, &(*p)->subscriptCharge, ODR_CONTEXT, 4, 1) &&
481 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
482 (odr_sequence_of(o, (Odr_fun)z_CostsOtherCharge, &(*p)->otherCharges,
483 &(*p)->num_otherCharges) || odr_ok(o)) &&
487 int z_Charge(ODR o, Z_Charge **p, int opt)
489 if (!odr_sequence_begin(o, p, sizeof(**p)))
490 return opt && odr_ok(o);
492 odr_implicit(o, z_IntUnit, &(*p)->cost, ODR_CONTEXT, 1, 0) &&
493 odr_implicit(o, z_Unit, &(*p)->perWhat, ODR_CONTEXT, 2, 1) &&
494 odr_implicit(o, z_HumanString, &(*p)->text, ODR_CONTEXT, 3, 1) &&
498 int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt)
500 if (!odr_initmember(o, p, sizeof(**p)))
501 return opt && odr_ok(o);
502 if (odr_sequence_of(o, z_DatabaseName, &(*p)->databases,
503 &(*p)->num_databases))
506 return opt && odr_ok(o);
509 int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt)
511 if (!odr_sequence_begin(o, p, sizeof(**p)))
512 return opt && odr_ok(o);
514 odr_implicit(o, odr_oid, &(*p)->defaultAttributeSet,
515 ODR_CONTEXT, 0, 0) &&
516 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
517 odr_sequence_of(o, (Odr_fun)z_AttributeCombination, &(*p)->legalCombinations,
518 &(*p)->num_legalCombinations) &&
522 int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt)
524 if (!odr_initmember(o, p, sizeof(**p)))
525 return opt && odr_ok(o);
526 if (odr_sequence_of(o, (Odr_fun)z_AttributeOccurrence, &(*p)->occurrences,
527 &(*p)->num_occurrences))
530 return opt && odr_ok(o);
533 int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt)
535 if (!odr_initmember(o, p, sizeof(**p)))
536 return opt && odr_ok(o);
537 if (odr_sequence_of(o, (Odr_fun)z_StringOrNumeric, &(*p)->attributes,
538 &(*p)->num_attributes))
541 return opt && odr_ok(o);
544 int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt)
546 static Odr_arm arm[] =
548 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_AttributeOcc_any_or_none, (Odr_fun)odr_null},
549 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_AttributeOcc_specific,
550 (Odr_fun)z_AttributeValueList},
554 if (!odr_sequence_begin(o, p, sizeof(**p)))
555 return opt && odr_ok(o);
557 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 0, 1) &&
558 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 1, 0) &&
559 odr_implicit(o, odr_null, &(*p)->mustBeSupplied, ODR_CONTEXT, 2, 1) &&
560 odr_choice(o, arm, &(*p)->attributeValues, &(*p)->which) &&
564 int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt)
566 if (!odr_sequence_begin(o, p, sizeof(**p)))
567 return opt && odr_ok(o);
569 odr_explicit(o, z_StringOrNumeric, &(*p)->value, ODR_CONTEXT, 0, 0) &&
570 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
571 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
572 (odr_sequence_of(o, (Odr_fun)z_StringOrNumeric, &(*p)->subAttributes,
573 &(*p)->num_subAttributes) || odr_ok(o)) &&
574 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
575 (odr_sequence_of(o, (Odr_fun)z_StringOrNumeric, &(*p)->superAttributes,
576 &(*p)->num_superAttributes) || odr_ok(o)) &&
577 odr_implicit(o, odr_null, &(*p)->partialSupport, ODR_CONTEXT, 4, 1) &&
583 int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt)
585 if (!odr_sequence_begin(o, p, sizeof(**p)))
586 return opt && odr_ok(o);
588 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
589 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
591 odr_implicit(o, z_HumanString, &(*p)->recentNews, ODR_CONTEXT, 2, 1) &&
592 odr_implicit(o, z_IconObject, &(*p)->icon, ODR_CONTEXT, 3, 1) &&
593 odr_implicit(o, odr_bool, &(*p)->namedResultSets, ODR_CONTEXT, 4, 0) &&
594 odr_implicit(o, odr_bool, &(*p)->multipleDBsearch, ODR_CONTEXT, 5, 0) &&
595 odr_implicit(o, odr_integer, &(*p)->maxResultSets, ODR_CONTEXT, 6, 1) &&
596 odr_implicit(o, odr_integer, &(*p)->maxResultSize, ODR_CONTEXT, 7, 1) &&
597 odr_implicit(o, odr_integer, &(*p)->maxTerms, ODR_CONTEXT, 8, 1) &&
598 odr_implicit(o, z_IntUnit, &(*p)->timeoutInterval, ODR_CONTEXT, 9, 1) &&
599 odr_implicit(o, z_HumanString, &(*p)->welcomeMessage, ODR_CONTEXT,
601 odr_implicit(o, z_ContactInfo, &(*p)->contactInfo, ODR_CONTEXT,
603 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
605 odr_implicit_settag(o, ODR_CONTEXT, 13) &&
606 (odr_sequence_of(o, z_InternationalString, &(*p)->nicknames,
607 &(*p)->num_nicknames) || odr_ok(o)) &&
608 odr_implicit(o, z_HumanString, &(*p)->usageRest, ODR_CONTEXT, 14, 1) &&
609 odr_implicit(o, z_HumanString, &(*p)->paymentAddr, ODR_CONTEXT,
611 odr_implicit(o, z_HumanString, &(*p)->hours, ODR_CONTEXT, 16, 1) &&
612 odr_implicit_settag(o, ODR_CONTEXT, 17) &&
613 (odr_sequence_of(o, (Odr_fun)z_DatabaseList, &(*p)->dbCombinations,
614 &(*p)->num_dbCombinations) || odr_ok(o)) &&
615 odr_implicit_settag(o, ODR_CONTEXT, 18) &&
616 (odr_sequence_of(o, (Odr_fun)z_NetworkAddress, &(*p)->addresses,
617 &(*p)->num_addresses) || odr_ok(o)) &&
618 odr_implicit_settag (o, ODR_CONTEXT, 101) &&
619 (odr_sequence_of(o, (Odr_fun) z_InternationalString, &(*p)->languages,
620 &(*p)->num_languages) || odr_ok(o)) &&
621 odr_implicit(o, z_AccessInfo, &(*p)->commonAccessInfo, ODR_CONTEXT,
626 int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt)
628 static Odr_arm arm[] =
630 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_DatabaseInfo_actualNumber,
631 (Odr_fun)odr_integer},
632 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_DatabaseInfo_approxNumber,
633 (Odr_fun)odr_integer},
637 if (!odr_sequence_begin(o, p, sizeof(**p)))
638 return opt && odr_ok(o);
640 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
641 odr_implicit(o, z_DatabaseName, &(*p)->name, ODR_CONTEXT, 1, 0) &&
642 odr_implicit(o, odr_null, &(*p)->explainDatabase, ODR_CONTEXT, 2, 1) &&
643 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
644 (odr_sequence_of(o, z_DatabaseName, &(*p)->nicknames,
645 &(*p)->num_nicknames) || odr_ok(o)) &&
646 odr_implicit(o, z_IconObject, &(*p)->icon, ODR_CONTEXT, 4, 1) &&
647 odr_implicit(o, odr_bool, &(*p)->userFee, ODR_CONTEXT, 5, 0) &&
648 odr_implicit(o, odr_bool, &(*p)->available, ODR_CONTEXT, 6, 0) &&
649 odr_implicit(o, z_HumanString, &(*p)->titleString, ODR_CONTEXT, 7, 1) &&
650 odr_implicit_settag(o, ODR_CONTEXT, 8) &&
651 (odr_sequence_of(o, (Odr_fun)z_HumanString, &(*p)->keywords,
652 &(*p)->num_keywords) || odr_ok(o)) &&
653 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 9, 1) &&
654 odr_implicit(o, z_DatabaseList, &(*p)->associatedDbs, ODR_CONTEXT,
656 odr_implicit(o, z_DatabaseList, &(*p)->subDbs, ODR_CONTEXT, 11, 1) &&
657 odr_implicit(o, z_HumanString, &(*p)->disclaimers, ODR_CONTEXT,
659 odr_implicit(o, z_HumanString, &(*p)->news, ODR_CONTEXT, 13, 1) &&
660 ((odr_constructed_begin(o, &(*p)->u.actualNumber, ODR_CONTEXT, 14) &&
661 odr_choice(o, arm, &(*p)->u.actualNumber, &(*p)->which) &&
662 odr_constructed_end(o)) || odr_ok(o)) &&
663 odr_implicit(o, z_HumanString, &(*p)->defaultOrder, ODR_CONTEXT,
665 odr_implicit(o, odr_integer, &(*p)->avRecordSize, ODR_CONTEXT, 16, 1) &&
666 odr_implicit(o, odr_integer, &(*p)->maxRecordSize, ODR_CONTEXT,
668 odr_implicit(o, z_HumanString, &(*p)->hours, ODR_CONTEXT, 18, 1) &&
669 odr_implicit(o, z_HumanString, &(*p)->bestTime, ODR_CONTEXT, 19, 1) &&
670 odr_implicit(o, odr_generalizedtime, &(*p)->lastUpdate, ODR_CONTEXT,
672 odr_implicit(o, z_IntUnit, &(*p)->updateInterval, ODR_CONTEXT, 21, 1) &&
673 odr_implicit(o, z_HumanString, &(*p)->coverage, ODR_CONTEXT, 22, 1) &&
674 odr_implicit(o, odr_bool, &(*p)->proprietary, ODR_CONTEXT, 23, 1) &&
675 odr_implicit(o, z_HumanString, &(*p)->copyrightText, ODR_CONTEXT,
677 odr_implicit(o, z_HumanString, &(*p)->copyrightNotice, ODR_CONTEXT,
679 odr_implicit(o, z_ContactInfo, &(*p)->producerContactInfo, ODR_CONTEXT,
681 odr_implicit(o, z_ContactInfo, &(*p)->supplierContactInfo, ODR_CONTEXT,
683 odr_implicit(o, z_ContactInfo, &(*p)->submissionContactInfo,
684 ODR_CONTEXT, 28, 1) &&
685 odr_implicit(o, z_AccessInfo, &(*p)->accessInfo, ODR_CONTEXT, 29, 1) &&
689 int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt)
691 if (!odr_sequence_begin(o, p, sizeof(**p)))
694 odr_implicit(o, odr_integer, &(*p)->tagType, ODR_CONTEXT, 0, 0) &&
695 odr_implicit(o, odr_oid, &(*p)->tagSet, ODR_CONTEXT, 1, 1) &&
696 odr_implicit(o, odr_null, &(*p)->defaultTagType, ODR_CONTEXT, 2, 1) &&
700 int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt)
702 if (!odr_sequence_begin(o, p, sizeof(**p)))
703 return opt && odr_ok(o);
705 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
706 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 1, 0) &&
707 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
709 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 3, 1) &&
710 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
711 (odr_sequence_of(o, (Odr_fun)z_TagTypeMapping, &(*p)->tagTypeMapping,
712 &(*p)->num_tagTypeMapping) || odr_ok(o)) &&
713 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
714 (odr_sequence_of(o, (Odr_fun)z_ElementInfo, &(*p)->recordStructure,
715 &(*p)->num_recordStructure) || odr_ok(o)) &&
719 int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt)
721 if (!odr_sequence_begin(o, p, sizeof(**p)))
722 return opt && odr_ok(o);
724 odr_implicit(o, z_InternationalString, &(*p)->elementName, ODR_CONTEXT, 1, 0) &&
725 odr_implicit(o, z_Path, &(*p)->elementTagPath, ODR_CONTEXT, 2, 0) &&
726 odr_explicit(o, z_ElementDataType, &(*p)->dataType, ODR_CONTEXT, 3, 1) &&
727 odr_implicit(o, odr_bool, &(*p)->required, ODR_CONTEXT, 4, 0) &&
728 odr_implicit(o, odr_bool, &(*p)->repeatable, ODR_CONTEXT, 5, 0) &&
729 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 6, 1) &&
733 int z_PathUnit(ODR o, Z_PathUnit **p, int opt)
735 if (!odr_sequence_begin(o, p, sizeof(**p)))
738 odr_implicit(o, odr_integer, &(*p)->tagType, ODR_CONTEXT, 1, 0) &&
739 odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue, ODR_CONTEXT,
744 int z_Path(ODR o, Z_Path **p, int opt)
746 if (!odr_initmember(o, p, sizeof(**p)))
747 return opt && odr_ok(o);
748 odr_implicit_settag(o, ODR_CONTEXT, 201);
749 if (odr_sequence_of(o, (Odr_fun)z_OtherInformationUnit, &(*p)->list,
753 return opt && odr_ok(o);
756 int z_ElementInfoList(ODR o, Z_Path **p, int opt)
758 if (!odr_initmember(o, p, sizeof(**p)))
759 return opt && odr_ok(o);
760 odr_implicit_settag(o, ODR_CONTEXT, 201);
761 if (odr_sequence_of(o, (Odr_fun)z_OtherInformationUnit, &(*p)->list,
765 return opt && odr_ok(o);
768 int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt)
770 static Odr_arm arm[] =
772 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ElementDataType_primitive,
773 (Odr_fun)odr_integer},
774 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ElementDataType_structured,
775 (Odr_fun)z_ElementInfoList},
779 if (!odr_initmember(o, p, sizeof(**p)))
780 return opt && odr_ok(o);
781 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
784 return opt && odr_ok(o);
787 int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt)
789 if (!odr_sequence_begin(o, p, sizeof(**p)))
792 odr_implicit(o, z_InternationalString, &(*p)->elementname,
793 ODR_CONTEXT, 1, 0) &&
794 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
795 (odr_sequence_of(o, z_InternationalString, &(*p)->nicknames,
796 &(*p)->num_nicknames) || odr_ok(o)) &&
797 odr_explicit(o, z_StringOrNumeric, &(*p)->elementTag, ODR_CONTEXT,
799 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
801 odr_implicit(o, odr_integer, &(*p)->dataType, ODR_CONTEXT, 5, 1) &&
802 z_OtherInformation(o, &(*p)->otherTagInfo, 1) &&
806 int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt)
808 if (!odr_sequence_begin(o, p, sizeof(**p)))
809 return opt && odr_ok(o);
811 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
812 odr_implicit(o, odr_oid, &(*p)->tagSet, ODR_CONTEXT, 1, 0) &&
813 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
815 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
817 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
818 (odr_sequence_of(o, (Odr_fun)z_TagSetInfoElements, &(*p)->elements,
819 &(*p)->num_elements) || odr_ok(o)) &&
823 int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt)
825 if (!odr_sequence_begin(o, p, sizeof(**p)))
826 return opt && odr_ok(o);
828 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
829 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 1, 0) &&
830 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
832 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
833 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->transferSyntaxes,
834 &(*p)->num_transferSyntaxes) || odr_ok(o)) &&
835 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
836 odr_implicit(o, z_InternationalString, &(*p)->asn1Module, ODR_CONTEXT,
838 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
839 (odr_sequence_of(o, (Odr_fun)z_ElementInfo, &(*p)->abstractStructure,
840 &(*p)->num_abstractStructure) || odr_ok(o)) &&
844 int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt)
846 if (!odr_sequence_begin(o, p, sizeof(**p)))
847 return opt && odr_ok(o);
849 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
850 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 1, 0) &&
851 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 2, 0) &&
852 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
853 (odr_sequence_of(o, (Odr_fun)z_AttributeType, &(*p)->attributes,
854 &(*p)->num_attributes) || odr_ok(o)) &&
855 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
859 int z_AttributeType(ODR o, Z_AttributeType **p, int opt)
861 if (!odr_sequence_begin(o, p, sizeof(**p)))
862 return opt && odr_ok(o);
864 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
865 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
866 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 2, 0) &&
867 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
868 odr_sequence_of(o, (Odr_fun)z_AttributeDescription, &(*p)->attributeValues,
869 &(*p)->num_attributeValues) &&
873 int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt)
875 if (!odr_sequence_begin(o, p, sizeof(**p)))
876 return opt && odr_ok(o);
878 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
879 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
880 odr_explicit(o, z_StringOrNumeric, &(*p)->attributeValue, ODR_CONTEXT, 2, 0) &&
881 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
882 (odr_sequence_of(o, (Odr_fun)z_StringOrNumeric, &(*p)->equivalentAttributes,
883 &(*p)->num_equivalentAttributes) || odr_ok(o)) &&
887 int z_TermListElement(ODR o, Z_TermListElement **p, int opt)
889 if (!odr_sequence_begin(o, p, sizeof(**p)))
890 return opt && odr_ok(o);
892 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 1, 0) &&
893 odr_implicit(o, z_HumanString, &(*p)->title, ODR_CONTEXT, 2, 1) &&
894 odr_implicit(o, odr_integer, &(*p)->searchCost, ODR_CONTEXT, 3, 1) &&
895 odr_implicit(o, odr_bool, &(*p)->scanable, ODR_CONTEXT, 4, 0) &&
896 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
897 (odr_sequence_of(o, z_InternationalString, &(*p)->broader,
898 &(*p)->num_broader) || odr_ok(o)) &&
899 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
900 (odr_sequence_of(o, z_InternationalString, &(*p)->narrower,
901 &(*p)->num_narrower) || odr_ok(o)) &&
905 int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt)
907 if (!odr_sequence_begin(o, p, sizeof(**p)))
908 return opt && odr_ok(o);
910 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
911 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
913 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
914 (odr_sequence_of(o, (Odr_fun)z_TermListElement, &(*p)->termLists,
915 &(*p)->num_termLists) || odr_ok(o)) &&
919 int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt)
921 if (!odr_sequence_begin(o, p, sizeof(**p)))
922 return opt && odr_ok(o);
924 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
925 odr_implicit(o, odr_oid, &(*p)->type, ODR_CONTEXT, 1, 0) &&
926 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 2, 1) &&
927 odr_implicit(o, odr_bool, &(*p)->privateType, ODR_CONTEXT, 3, 0) &&
928 odr_implicit(o, odr_bool, &(*p)->restrictionsApply, ODR_CONTEXT, 5, 0) &&
929 odr_implicit(o, odr_bool, &(*p)->feeApply, ODR_CONTEXT, 6, 0) &&
930 odr_implicit(o, odr_bool, &(*p)->available, ODR_CONTEXT, 7, 0) &&
931 odr_implicit(o, odr_bool, &(*p)->retentionSupported, ODR_CONTEXT, 8, 0) &&
932 odr_implicit(o, odr_integer, &(*p)->waitAction, ODR_CONTEXT, 9, 0) &&
933 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 10, 1) &&
934 odr_implicit(o, z_External, &(*p)->specificExplain, ODR_CONTEXT, 11, 1) &&
935 odr_implicit(o, z_InternationalString, &(*p)->esASN, ODR_CONTEXT, 12, 1) &&
939 int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt)
941 if (!odr_sequence_begin(o, p, sizeof(**p)))
942 return opt && odr_ok(o);
944 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
945 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) &&
946 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
947 (odr_sequence_of(o, (Odr_fun)z_AttributeSetDetails, &(*p)->attributesBySet,
948 &(*p)->num_attributesBySet) && odr_ok(o)) &&
949 odr_implicit(o, z_AttributeCombinations, &(*p)->attributeCombinations, ODR_CONTEXT, 3, 1) &&
953 int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt)
955 if (!odr_sequence_begin(o, p, sizeof(**p)))
956 return opt && odr_ok(o);
958 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT,
960 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
961 odr_sequence_of(o, (Odr_fun)z_AttributeTypeDetails, &(*p)->attributesByType,
962 &(*p)->num_attributesByType) &&
966 int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt)
968 if (!odr_sequence_begin(o, p, sizeof(**p)))
969 return opt && odr_ok(o);
971 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 0, 0) &&
972 odr_implicit(o, z_OmittedAttributeInterpretation, &(*p)->defaultIfOmitted,
973 ODR_CONTEXT, 1, 1) &&
974 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
975 (odr_sequence_of(o, (Odr_fun)z_AttributeValue, &(*p)->attributeValues,
976 &(*p)->num_attributeValues) || odr_ok(o)) &&
980 int z_OmittedAttributeInterpretation(ODR o, Z_OmittedAttributeInterpretation **p, int opt)
982 if (!odr_sequence_begin(o, p, sizeof(**p)))
983 return opt && odr_ok(o);
985 odr_explicit(o, z_StringOrNumeric, &(*p)->defaultValue, ODR_CONTEXT, 0, 1) &&
986 odr_implicit(o, z_HumanString, &(*p)->defaultDescription, ODR_CONTEXT, 1, 1) &&
990 int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt)
992 if (!odr_sequence_begin(o, p, sizeof(**p)))
993 return opt && odr_ok(o);
995 odr_implicit(o, odr_integer, &(*p)->maxStepSize, ODR_CONTEXT, 0, 1) &&
996 odr_implicit(o, z_HumanString, &(*p)->collatingSequence, ODR_CONTEXT, 1, 1) &&
997 odr_implicit(o, odr_bool, &(*p)->increasing, ODR_CONTEXT, 2, 1) &&
1001 int z_TermListDetails(ODR o, Z_TermListDetails **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_InternationalString, &(*p)->termListName, ODR_CONTEXT, 1, 0) &&
1008 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 2, 1) &&
1009 odr_implicit(o, z_AttributeCombinations, &(*p)->attributes, ODR_CONTEXT, 3, 1) &&
1010 odr_implicit(o, z_EScanInfo, &(*p)->scanInfo, ODR_CONTEXT, 4, 1) &&
1011 odr_implicit(o, odr_integer, &(*p)->estNumberTerms, ODR_CONTEXT, 5, 1) &&
1012 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
1013 (odr_sequence_of(o, (Odr_fun)z_Term, &(*p)->sampleTerms,
1014 &(*p)->num_sampleTerms) || odr_ok(o)) &&
1015 odr_sequence_end(o);
1018 int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt)
1020 if (!odr_sequence_begin(o, p, sizeof(**p)))
1021 return opt && odr_ok(o);
1023 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1024 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) &&
1025 odr_implicit(o, z_ElementSetName, &(*p)->elementSetName, ODR_CONTEXT, 2, 0) &&
1026 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 3, 0) &&
1027 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 4, 0) &&
1028 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 5, 1) &&
1029 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
1030 (odr_sequence_of(o, (Odr_fun)z_PerElementDetails, &(*p)->detailsPerElement, &(*p)->num_detailsPerElement) || odr_ok(o)) &&
1031 odr_sequence_end(o);
1034 int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt)
1036 if (!odr_sequence_begin(o, p, sizeof(**p)))
1037 return opt && odr_ok(o);
1039 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1040 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) &&
1041 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 2, 0) &&
1042 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 3, 0) &&
1043 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
1044 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
1045 (odr_sequence_of(o, (Odr_fun)z_PerElementDetails, &(*p)->detailsPerElement,
1046 &(*p)->num_detailsPerElement) || odr_ok(o)) &&
1047 odr_sequence_end(o);
1050 int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt)
1052 if (!odr_sequence_begin(o, p, sizeof(**p)))
1053 return opt && odr_ok(o);
1055 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
1056 odr_implicit(o, z_RecordTag, &(*p)->recordTag, ODR_CONTEXT, 1, 1) &&
1057 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1058 (odr_sequence_of(o, (Odr_fun)z_Path, &(*p)->schemaTags, &(*p)->num_schemaTags) ||
1060 odr_implicit(o, odr_integer, &(*p)->maxSize, ODR_CONTEXT, 3, 1) &&
1061 odr_implicit(o, odr_integer, &(*p)->minSize, ODR_CONTEXT, 4, 1) &&
1062 odr_implicit(o, odr_integer, &(*p)->avgSize, ODR_CONTEXT, 5, 1) &&
1063 odr_implicit(o, odr_integer, &(*p)->fixedSize, ODR_CONTEXT, 6, 1) &&
1064 odr_implicit(o, odr_bool, &(*p)->repeatable, ODR_CONTEXT, 8, 0) &&
1065 odr_implicit(o, odr_bool, &(*p)->required, ODR_CONTEXT, 9, 0) &&
1066 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 12, 1) &&
1067 odr_implicit(o, z_HumanString, &(*p)->contents, ODR_CONTEXT, 13, 1) &&
1068 odr_implicit(o, z_HumanString, &(*p)->billingInfo, ODR_CONTEXT, 14, 1) &&
1069 odr_implicit(o, z_HumanString, &(*p)->restrictions, ODR_CONTEXT, 15, 1) &&
1070 odr_implicit_settag(o, ODR_CONTEXT, 16) &&
1071 (odr_sequence_of(o, z_InternationalString, &(*p)->alternateNames,
1072 &(*p)->num_alternateNames) || odr_ok(o)) &&
1073 odr_implicit_settag(o, ODR_CONTEXT, 17) &&
1074 (odr_sequence_of(o, z_InternationalString, &(*p)->genericNames,
1075 &(*p)->num_genericNames) || odr_ok(o)) &&
1076 odr_implicit(o, z_AttributeCombinations, &(*p)->searchAccess,
1077 ODR_CONTEXT, 18, 1) &&
1078 odr_sequence_end(o);
1081 int z_RecordTag(ODR o, Z_RecordTag **p, int opt)
1083 if (!odr_sequence_begin(o, p, sizeof(**p)))
1084 return opt && odr_ok(o);
1086 odr_explicit(o, z_StringOrNumeric, &(*p)->qualifier, ODR_CONTEXT,
1088 odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue, ODR_CONTEXT,
1090 odr_sequence_end(o);
1093 int z_SortDetails(ODR o, Z_SortDetails **p, int opt)
1095 if (!odr_sequence_begin(o, p, sizeof(**p)))
1096 return opt && odr_ok(o);
1098 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1099 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
1101 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1102 (odr_sequence_of(o, (Odr_fun)z_SortKeyDetails, &(*p)->sortKeys,
1103 &(*p)->num_sortKeys) || odr_ok(o)) &&
1104 odr_sequence_end(o);
1107 int z_SortKeyDetails (ODR o, Z_SortKeyDetails **p, int opt)
1109 static Odr_arm arm[] = {
1110 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetails_character,
1111 (Odr_fun) odr_null},
1112 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_SortKeyDetails_numeric,
1113 (Odr_fun) odr_null},
1114 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_SortKeyDetails_structured,
1115 (Odr_fun) z_HumanString},
1116 {-1, -1, -1, -1, (Odr_fun) 0}
1118 if (!odr_sequence_begin (o, p, sizeof(**p)))
1119 return opt && odr_ok (o);
1121 odr_implicit (o, z_HumanString,
1122 &(*p)->description, ODR_CONTEXT, 0, 1) &&
1123 odr_implicit_settag (o, ODR_CONTEXT, 1) &&
1124 (odr_sequence_of(o, (Odr_fun) z_Specification, &(*p)->elementSpecifications,
1125 &(*p)->num_elementSpecifications) || odr_ok(o)) &&
1126 odr_implicit (o, z_AttributeCombinations,
1127 &(*p)->attributeSpecifications, ODR_CONTEXT, 2, 1) &&
1128 ((odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 3) &&
1129 odr_choice (o, arm, &(*p)->u, &(*p)->which) &&
1130 odr_constructed_end (o)) || odr_ok(o)) &&
1131 odr_implicit (o, odr_integer,
1132 &(*p)->caseSensitivity, ODR_CONTEXT, 4, 1) &&
1133 odr_sequence_end (o);
1136 int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt)
1138 if (!odr_sequence_begin(o, p, sizeof(**p)))
1139 return opt && odr_ok(o);
1141 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1142 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
1144 odr_implicit(o, odr_integer, &(*p)->processingContext, ODR_CONTEXT,
1146 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1148 odr_implicit(o, odr_oid, &(*p)->oid, ODR_CONTEXT, 4, 0) &&
1149 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 5, 1) &&
1150 odr_implicit(o, z_External, &(*p)->instructions, ODR_CONTEXT, 6, 1) &&
1151 odr_sequence_end(o);
1154 int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt)
1156 if (!odr_sequence_begin(o, p, sizeof(**p)))
1157 return opt && odr_ok(o);
1159 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1160 odr_implicit(o, odr_oid, &(*p)->variantSet, ODR_CONTEXT, 1, 0) &&
1161 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1163 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1164 (odr_sequence_of(o, (Odr_fun)z_VariantClass, &(*p)->variants,
1165 &(*p)->num_variants) || odr_ok(o)) &&
1166 odr_sequence_end(o);
1169 int z_VariantClass(ODR o, Z_VariantClass **p, int opt)
1171 if (!odr_sequence_begin(o, p, sizeof(**p)))
1172 return opt && odr_ok(o);
1174 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1176 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1177 odr_implicit(o, odr_integer, &(*p)->variantClass, ODR_CONTEXT, 2, 0) &&
1178 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1179 odr_sequence_of(o, (Odr_fun)z_VariantType, &(*p)->variantTypes,
1180 &(*p)->num_variantTypes) &&
1181 odr_sequence_end(o);
1184 int z_VariantType(ODR o, Z_VariantType **p, int opt)
1186 if (!odr_sequence_begin(o, p, sizeof(**p)))
1187 return opt && odr_ok(o);
1189 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
1190 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1191 odr_implicit(o, odr_integer, &(*p)->variantType, ODR_CONTEXT, 2, 0) &&
1192 odr_implicit(o, z_VariantValue, &(*p)->variantValue, ODR_CONTEXT, 3, 1) &&
1193 odr_sequence_end(o);
1196 int z_VariantValue(ODR o, Z_VariantValue **p, int opt)
1198 if (!odr_sequence_begin(o, p, sizeof(**p)))
1199 return opt && odr_ok(o);
1201 odr_explicit(o, odr_integer, &(*p)->dataType, ODR_CONTEXT, 0, 0) &&
1202 odr_explicit(o, z_ValueSet, &(*p)->values, ODR_CONTEXT, 1, 1) &&
1203 odr_sequence_end(o);
1206 int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt)
1208 if (!odr_initmember(o, p, sizeof(**p)))
1209 return opt && odr_ok(o);
1210 if (odr_sequence_of(o, (Odr_fun)z_ValueDescription, &(*p)->elements,
1214 return opt && odr_ok(o);
1217 int z_ValueSet(ODR o, Z_ValueSet **p, int opt)
1219 static Odr_arm arm[] =
1221 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ValueSet_range, (Odr_fun)z_ValueRange},
1222 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueSet_enumerated,
1223 (Odr_fun)z_ValueSetEnumerated},
1227 if (!odr_initmember(o, p, sizeof(**p)))
1228 return opt && odr_ok(o);
1229 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1232 return opt && odr_ok(o);
1235 int z_ValueRange(ODR o, Z_ValueRange **p, int opt)
1237 if (!odr_sequence_begin(o, p, sizeof(**p)))
1238 return opt && odr_ok(o);
1240 odr_explicit(o, z_ValueDescription, &(*p)->lower, ODR_CONTEXT, 0, 1) &&
1241 odr_explicit(o, z_ValueDescription, &(*p)->upper, ODR_CONTEXT, 1, 1) &&
1242 odr_sequence_end(o);
1245 int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt)
1247 static Odr_arm arm[] =
1249 {ODR_NONE, -1, -1, Z_ValueDescription_integer, (Odr_fun)odr_integer},
1250 {ODR_NONE, -1, -1, Z_ValueDescription_string, (Odr_fun)z_InternationalString},
1251 {ODR_NONE, -1, -1, Z_ValueDescription_octets, (Odr_fun)odr_octetstring},
1252 {ODR_NONE, -1, -1, Z_ValueDescription_oid, (Odr_fun)odr_oid},
1253 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueDescription_unit, (Odr_fun)z_Unit},
1254 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ValueDescription_valueAndUnit, (Odr_fun)z_IntUnit},
1258 if (!odr_initmember(o, p, sizeof(**p)))
1259 return opt && odr_ok(o);
1260 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1263 return opt && odr_ok(o);
1266 int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt)
1268 if (!odr_sequence_begin(o, p, sizeof(**p)))
1269 return opt && odr_ok(o);
1271 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1272 odr_implicit(o, z_InternationalString, &(*p)->unitSystem, ODR_CONTEXT,
1274 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 2, 1) &&
1275 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1276 (odr_sequence_of(o, (Odr_fun)z_UnitType, &(*p)->units, &(*p)->num_units) ||
1278 odr_sequence_end(o);
1281 int z_UnitType(ODR o, Z_UnitType **p, int opt)
1283 if (!odr_sequence_begin(o, p, sizeof(**p)))
1284 return opt && odr_ok(o);
1286 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1288 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1289 odr_explicit(o, z_StringOrNumeric, &(*p)->unitType, ODR_CONTEXT,
1291 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1292 odr_sequence_of(o, (Odr_fun)z_Units, &(*p)->units, &(*p)->num_units) &&
1293 odr_sequence_end(o);
1296 int z_Units(ODR o, Z_Units **p, int opt)
1298 if (!odr_sequence_begin(o, p, sizeof(**p)))
1299 return opt && odr_ok(o);
1301 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
1302 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1303 odr_explicit(o, z_StringOrNumeric, &(*p)->unit, ODR_CONTEXT, 2, 0) &&
1304 odr_sequence_end(o);
1307 int z_CategoryList(ODR o, Z_CategoryList **p, int opt)
1309 if (!odr_sequence_begin(o, p, sizeof(**p)))
1310 return opt && odr_ok(o);
1312 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1313 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
1314 odr_sequence_of(o, (Odr_fun)z_CategoryInfo, &(*p)->categories,
1315 &(*p)->num_categories) &&
1316 odr_sequence_end(o);
1319 int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt)
1321 if (!odr_sequence_begin(o, p, sizeof(**p)))
1322 return opt && odr_ok(o);
1324 odr_implicit(o, z_InternationalString, &(*p)->category, ODR_CONTEXT,
1326 odr_implicit(o, z_InternationalString, &(*p)->originalCategory,
1327 ODR_CONTEXT, 2, 1) &&
1328 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 3, 1) &&
1329 odr_implicit(o, z_InternationalString, &(*p)->asn1Module, ODR_CONTEXT,
1331 odr_sequence_end(o);
1334 int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt)
1336 static Odr_arm arm[] =
1338 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Explain_targetInfo, (Odr_fun)z_TargetInfo},
1339 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Explain_databaseInfo, (Odr_fun)z_DatabaseInfo},
1340 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_Explain_schemaInfo, (Odr_fun)z_SchemaInfo},
1341 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_Explain_tagSetInfo, (Odr_fun)z_TagSetInfo},
1342 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_Explain_recordSyntaxInfo,
1343 (Odr_fun)z_RecordSyntaxInfo},
1344 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_Explain_attributeSetInfo,
1345 (Odr_fun)z_AttributeSetInfo},
1346 {ODR_IMPLICIT, ODR_CONTEXT, 6, Z_Explain_termListInfo,
1347 (Odr_fun)z_TermListInfo},
1348 {ODR_IMPLICIT, ODR_CONTEXT, 7, Z_Explain_extendedServicesInfo,
1349 (Odr_fun)z_ExtendedServicesInfo},
1350 {ODR_IMPLICIT, ODR_CONTEXT, 8, Z_Explain_attributeDetails,
1351 (Odr_fun)z_AttributeDetails},
1352 {ODR_IMPLICIT, ODR_CONTEXT, 9, Z_Explain_termListDetails,
1353 (Odr_fun)z_TermListDetails},
1354 {ODR_IMPLICIT, ODR_CONTEXT, 10, Z_Explain_elementSetDetails,
1355 (Odr_fun)z_ElementSetDetails},
1356 {ODR_IMPLICIT, ODR_CONTEXT, 11, Z_Explain_retrievalRecordDetails,
1357 (Odr_fun)z_RetrievalRecordDetails},
1358 {ODR_IMPLICIT, ODR_CONTEXT, 12, Z_Explain_sortDetails,
1359 (Odr_fun)z_SortDetails},
1360 {ODR_IMPLICIT, ODR_CONTEXT, 13, Z_Explain_processing,
1361 (Odr_fun)z_ProcessingInformation},
1362 {ODR_IMPLICIT, ODR_CONTEXT, 14, Z_Explain_variants,
1363 (Odr_fun)z_VariantSetInfo},
1364 {ODR_IMPLICIT, ODR_CONTEXT, 15, Z_Explain_units, (Odr_fun)z_UnitInfo},
1365 {ODR_IMPLICIT, ODR_CONTEXT, 100, Z_Explain_categoryList,
1366 (Odr_fun)z_CategoryList},
1370 if (!odr_initmember(o, p, sizeof(**p)))
1371 return opt && odr_ok(o);
1372 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1375 return opt && odr_ok(o);