2 * Copyright (c) 1995, Index Data.
3 * See the file LICENSE for details.
4 * Sebastian Hammer, Adam Dickmeiss
7 * Revision 1.9 1998-02-11 11:53:32 adam
8 * Changed code so that it compiles as C++.
10 * Revision 1.8 1996/01/02 11:46:41 quinn
11 * Changed 'operator' to 'roperator' to avoid C++ conflict.
13 * Revision 1.7 1995/12/14 16:28:07 quinn
16 * Revision 1.6 1995/12/14 11:09:09 quinn
17 * Fixed bug in tagging.
19 * Revision 1.5 1995/12/05 11:15:50 quinn
22 * Revision 1.4 1995/09/29 17:11:54 quinn
25 * Revision 1.3 1995/09/27 15:02:42 quinn
26 * Modified function heads & prototypes.
28 * Revision 1.2 1995/08/15 11:59:43 quinn
31 * Revision 1.1 1995/08/10 08:54:02 quinn
39 int z_LanguageCode(ODR o, char **p, int opt);
40 int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt);
41 int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt);
42 int z_HumanString(ODR o, Z_HumanString **p, int opt);
43 int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt);
44 int z_IconObject(ODR o, Z_IconObject **p, int opt);
45 int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt);
46 int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt);
47 int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt);
48 int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt);
49 int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt);
50 int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt);
51 int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt);
52 int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt);
53 int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt);
54 int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt);
55 int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt);
56 int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt);
57 int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt);
58 int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt);
59 int z_SearchKey(ODR o, Z_SearchKey **p, int opt);
60 int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt);
61 int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt);
62 int z_CostsOtherCharge(ODR o, Z_CostsOtherCharge **p, int opt);
63 int z_Costs(ODR o, Z_Costs **p, int opt);
64 int z_Charge(ODR o, Z_Charge **p, int opt);
65 int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt);
66 int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt);
67 int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt);
68 int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt);
69 int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt);
70 int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt);
71 int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt);
72 int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt);
73 int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt);
74 int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt);
75 int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt);
76 int z_PathUnit(ODR o, Z_PathUnit **p, int opt);
77 int z_Path(ODR o, Z_Path **p, int opt);
78 int z_ElementInfoList(ODR o, Z_Path **p, int opt);
79 int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt);
80 int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt);
81 int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt);
82 int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt);
83 int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt);
84 int z_AttributeType(ODR o, Z_AttributeType **p, int opt);
85 int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt);
86 int z_TermListElement(ODR o, Z_TermListElement **p, int opt);
87 int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt);
88 int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt);
89 int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt);
90 int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt);
91 int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt);
92 int z_OmittedAttributeInterpretation(ODR o, Z_OmittedAttributeInterpretation **p, int opt);
93 int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt);
94 int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt);
95 int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt);
96 int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt);
97 int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt);
98 int z_RecordTag(ODR o, Z_RecordTag **p, int opt);
99 int z_SortDetails(ODR o, Z_SortDetails **p, int opt);
100 int z_SortKeyDetailsSortType(ODR o, Z_SortKeyDetailsSortType **p, int opt);
101 int z_SortKeyDetails(ODR o, Z_SortKeyDetails **p, int opt);
102 int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt);
103 int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt);
104 int z_VariantClass(ODR o, Z_VariantClass **p, int opt);
105 int z_VariantType(ODR o, Z_VariantType **p, int opt);
106 int z_VariantValue(ODR o, Z_VariantValue **p, int opt);
107 int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt);
108 int z_ValueSet(ODR o, Z_ValueSet **p, int opt);
109 int z_ValueRange(ODR o, Z_ValueRange **p, int opt);
110 int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt);
111 int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt);
112 int z_UnitType(ODR o, Z_UnitType **p, int opt);
113 int z_Units(ODR o, Z_Units **p, int opt);
114 int z_CategoryList(ODR o, Z_CategoryList **p, int opt);
115 int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt);
116 int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt);
118 int z_LanguageCode(ODR o, char **p, int opt)
120 return z_InternationalString(o, p, opt);
123 int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt)
125 if (!odr_sequence_begin(o, p, sizeof(**p)))
126 return opt && odr_ok(o);
128 odr_implicit(o, odr_generalizedtime, &(*p)->dateAdded, ODR_CONTEXT, 0, 1) &&
129 odr_implicit(o, odr_generalizedtime, &(*p)->dateChanged, ODR_CONTEXT, 1, 1) &&
130 odr_implicit(o, odr_generalizedtime, &(*p)->expiry, ODR_CONTEXT, 2, 1) &&
131 odr_implicit(o, z_LanguageCode, &(*p)->humanStringLanguage, ODR_CONTEXT, 3, 1) &&
132 z_OtherInformation(o, &(*p)->otherInfo, 1) &&
136 int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt)
138 if (!odr_sequence_begin(o, p, sizeof(**p)))
139 return opt && odr_ok(o);
141 odr_implicit(o, z_LanguageCode, &(*p)->language, ODR_CONTEXT, 0, 1) &&
142 odr_implicit(o, z_InternationalString, &(*p)->text, ODR_CONTEXT,
147 int z_HumanString(ODR o, Z_HumanString **p, int opt)
149 if (!odr_initmember(o, p, sizeof(**p)))
150 return opt && odr_ok(o);
151 if (odr_sequence_of(o, (Odr_fun)z_HumanStringUnit, &(*p)->strings,
155 return opt && odr_ok(o);
158 int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt)
160 static Odr_arm arm[] =
162 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IconObject_ianaType,
163 z_InternationalString},
164 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IconObject_z3950type,
165 z_InternationalString},
166 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IconObject_otherType,
167 z_InternationalString},
171 if (!odr_sequence_begin(o, p, sizeof(**p)))
172 return opt && odr_ok(o);
174 odr_constructed_begin(o, &(*p)->bodyType, ODR_CONTEXT, 1) &&
175 odr_choice(o, arm, &(*p)->bodyType, &(*p)->which) &&
176 odr_constructed_end(o) &&
177 odr_implicit(o, odr_octetstring, &(*p)->content, ODR_CONTEXT, 2, 0) &&
181 int z_IconObject(ODR o, Z_IconObject **p, int opt)
183 if (!odr_initmember(o, p, sizeof(**p)))
184 return opt && odr_ok(o);
185 if (odr_sequence_of(o, (Odr_fun)z_IconObjectUnit, &(*p)->iconUnits,
186 &(*p)->num_iconUnits))
189 return opt && odr_ok(o);
192 int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt)
194 if (!odr_sequence_begin(o, p, sizeof(**p)))
195 return opt && odr_ok(o);
197 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
198 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
199 odr_implicit(o, z_HumanString, &(*p)->address, ODR_CONTEXT, 2, 1) &&
200 odr_implicit(o, z_InternationalString, &(*p)->email, ODR_CONTEXT, 3, 1) &&
201 odr_implicit(o, z_InternationalString, &(*p)->phone, ODR_CONTEXT, 4, 1) &&
205 int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt)
207 if (!odr_sequence_begin(o, p, sizeof(**p)))
210 odr_implicit(o, z_InternationalString, &(*p)->hostAddress, ODR_CONTEXT, 0, 0) &&
211 odr_implicit(o, odr_integer, &(*p)->port, ODR_CONTEXT, 1, 0) &&
215 int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt)
217 if (!odr_sequence_begin(o, p, sizeof(**p)))
220 odr_implicit(o, z_InternationalString, &(*p)->pSel, ODR_CONTEXT, 0, 0) &&
221 odr_implicit(o, z_InternationalString, &(*p)->sSel, ODR_CONTEXT, 1, 1) &&
222 odr_implicit(o, z_InternationalString, &(*p)->tSel, ODR_CONTEXT, 2, 1) &&
223 odr_implicit(o, z_InternationalString, &(*p)->nSap, ODR_CONTEXT, 3, 0) &&
227 int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt)
229 if (!odr_sequence_begin(o, p, sizeof(**p)))
232 odr_implicit(o, z_InternationalString, &(*p)->type, ODR_CONTEXT, 0, 0) &&
233 odr_implicit(o, z_InternationalString, &(*p)->address, ODR_CONTEXT, 1, 0) &&
237 int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt)
239 static Odr_arm arm[] =
241 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_NetworkAddress_iA,
242 (Odr_fun)z_NetworkAddressIA},
243 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_NetworkAddress_oPA,
244 (Odr_fun)z_NetworkAddressOPA},
245 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_NetworkAddress_other,
246 (Odr_fun)z_NetworkAddressOther},
250 if (!odr_initmember(o, p, sizeof(**p)))
251 return opt && odr_ok(o);
252 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
255 return opt && odr_ok(o);
258 int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt)
260 if (!odr_sequence_begin(o, p, sizeof(**p)))
261 return opt && odr_ok(o);
263 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
264 (odr_sequence_of(o, (Odr_fun)z_QueryTypeDetails, &(*p)->queryTypesSupported,
265 &(*p)->num_queryTypesSupported) || odr_ok(o)) &&
266 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
267 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->diagnosticsSets,
268 &(*p)->num_diagnosticsSets) || odr_ok(o)) &&
269 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
270 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->attributeSetIds,
271 &(*p)->num_attributeSetIds) || odr_ok(o)) &&
272 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
273 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->schemas, &(*p)->num_schemas) ||
275 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
276 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->recordSyntaxes,
277 &(*p)->num_recordSyntaxes) || odr_ok(o)) &&
278 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
279 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->resourceChallenges,
280 &(*p)->num_resourceChallenges) || odr_ok(o)) &&
281 odr_implicit(o, z_AccessRestrictions, &(*p)->restrictedAccess,
282 ODR_CONTEXT, 6, 1) &&
283 odr_implicit(o, z_Costs, &(*p)->costInfo, ODR_CONTEXT, 8, 1) &&
284 odr_implicit_settag(o, ODR_CONTEXT, 9) &&
285 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->variantSets,
286 &(*p)->num_variantSets) || odr_ok(o)) &&
287 odr_implicit_settag(o, ODR_CONTEXT, 10) &&
288 (odr_sequence_of(o, (Odr_fun)z_ElementSetName, &(*p)->elementSetNames,
289 &(*p)->num_elementSetNames) || odr_ok(o)) &&
290 odr_implicit_settag(o, ODR_CONTEXT, 11) &&
291 (odr_sequence_of(o, (Odr_fun)z_InternationalString, &(*p)->unitSystems,
292 &(*p)->num_unitSystems) || odr_ok(o)) &&
296 int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt)
298 static Odr_arm arm[] =
300 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_QueryTypeDetails_private,
301 (Odr_fun)z_PrivateCapabilities},
302 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_QueryTypeDetails_rpn,
303 (Odr_fun)z_RpnCapabilities},
304 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_QueryTypeDetails_iso8777,
305 (Odr_fun)z_Iso8777Capabilities},
306 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_QueryTypeDetails_z3958,
307 (Odr_fun)z_HumanString},
308 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_QueryTypeDetails_erpn,
309 (Odr_fun)z_RpnCapabilities},
310 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_QueryTypeDetails_rankedList,
311 (Odr_fun)z_HumanString},
315 if (!odr_initmember(o, p, sizeof(**p)))
316 return opt && odr_ok(o);
317 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
320 return opt && odr_ok(o);
323 int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt)
325 if (!odr_sequence_begin(o, p, sizeof(**p)))
326 return opt && odr_ok(o);
328 odr_implicit(o, z_InternationalString, &(*p)->roperator, ODR_CONTEXT, 0, 0) &&
329 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
333 int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt)
335 if (!odr_sequence_begin(o, p, sizeof(**p)))
336 return opt && odr_ok(o);
338 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
339 (odr_sequence_of(o, (Odr_fun)z_PrivateCapOperator, &(*p)->operators,
340 &(*p)->num_operators) || odr_ok(o)) &&
341 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
342 (odr_sequence_of(o, (Odr_fun)z_SearchKey, &(*p)->searchKeys,
343 &(*p)->num_searchKeys) || odr_ok(o)) &&
344 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
345 (odr_sequence_of(o, (Odr_fun)z_HumanString, &(*p)->description,
346 &(*p)->num_description) || odr_ok(o)) &&
350 int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt)
352 if (!odr_sequence_begin(o, p, sizeof(**p)))
353 return opt && odr_ok(o);
355 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
356 (odr_sequence_of(o, (Odr_fun)odr_integer, &(*p)->operators, &(*p)->num_operators) || odr_ok(o)) &&
357 odr_implicit(o, odr_bool, &(*p)->resultSetAsOperandSupported,
358 ODR_CONTEXT, 1, 0) &&
359 odr_implicit(o, odr_bool, &(*p)->restrictionOperandSupported,
360 ODR_CONTEXT, 2, 0) &&
361 odr_implicit(o, z_ProximitySupport, &(*p)->proximity, ODR_CONTEXT,
366 int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt)
368 if (!odr_sequence_begin(o, p, sizeof(**p)))
369 return opt && odr_ok(o);
371 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
372 odr_sequence_of(o, (Odr_fun)z_SearchKey, &(*p)->searchKeys,
373 &(*p)->num_searchKeys) &&
374 odr_implicit(o, z_HumanString, &(*p)->restrictions, ODR_CONTEXT,
379 int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt)
381 if (!odr_sequence_begin(o, p, sizeof(**p)))
382 return opt && odr_ok(o);
384 odr_implicit(o, odr_integer, &(*p)->unit, ODR_CONTEXT, 0, 0) &&
385 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
389 int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt)
391 static Odr_arm arm[] =
393 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ProxSupportUnit_known,
394 (Odr_fun)odr_integer},
395 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ProxSupportUnit_private,
396 (Odr_fun)z_ProxSupportPrivate},
400 if (!odr_initmember(o, p, sizeof(**p)))
401 return opt && odr_ok(o);
402 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
405 return opt && odr_ok(o);
408 int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt)
410 if (!odr_sequence_begin(o, p, sizeof(**p)))
411 return opt && odr_ok(o);
413 odr_implicit(o, odr_bool, &(*p)->anySupport, ODR_CONTEXT, 0, 0) &&
414 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
415 (odr_sequence_of(o, (Odr_fun)z_ProxSupportUnit, &(*p)->unitsSupported,
416 &(*p)->num_unitsSupported) || odr_ok(o)) &&
420 int z_SearchKey(ODR o, Z_SearchKey **p, int opt)
422 if (!odr_sequence_begin(o, p, sizeof(**p)))
423 return opt && odr_ok(o);
425 odr_implicit(o, z_InternationalString, &(*p)->searchKey, ODR_CONTEXT, 0, 0) &&
426 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
430 int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt)
432 if (!odr_sequence_begin(o, p, sizeof(**p)))
433 return opt && odr_ok(o);
435 odr_explicit(o, odr_integer, &(*p)->accessType, ODR_CONTEXT, 0, 0) &&
436 odr_implicit(o, z_HumanString, &(*p)->accessText, ODR_CONTEXT, 1, 1) &&
437 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
438 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->accessChallenges,
439 &(*p)->num_accessChallenges) || odr_ok(o)) &&
443 int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt)
445 if (!odr_initmember(o, p, sizeof(**p)))
446 return opt && odr_ok(o);
447 if (odr_sequence_of(o, (Odr_fun)z_AccessRestrictionsUnit, &(*p)->restrictions,
448 &(*p)->num_restrictions))
451 return opt && odr_ok(o);
454 int z_CostsOtherCharge(ODR o, Z_CostsOtherCharge **p, int opt)
456 if (!odr_sequence_begin(o, p, sizeof(**p)))
457 return opt && odr_ok(o);
459 odr_implicit(o, z_HumanString, &(*p)->forWhat, ODR_CONTEXT, 1, 0) &&
460 odr_implicit(o, z_Charge, &(*p)->charge, ODR_CONTEXT, 2, 1) &&
464 int z_Costs(ODR o, Z_Costs **p, int opt)
466 if (!odr_sequence_begin(o, p, sizeof(**p)))
467 return opt && odr_ok(o);
469 odr_implicit(o, z_Charge, &(*p)->connectCharge, ODR_CONTEXT, 0, 1) &&
470 odr_implicit(o, z_Charge, &(*p)->connectTime, ODR_CONTEXT, 1, 1) &&
471 odr_implicit(o, z_Charge, &(*p)->displayCharge, ODR_CONTEXT, 2, 1) &&
472 odr_implicit(o, z_Charge, &(*p)->searchCharge, ODR_CONTEXT, 3, 1) &&
473 odr_implicit(o, z_Charge, &(*p)->subscriptCharge, ODR_CONTEXT, 4, 1) &&
474 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
475 (odr_sequence_of(o, (Odr_fun)z_CostsOtherCharge, &(*p)->otherCharges,
476 &(*p)->num_otherCharges) || odr_ok(o)) &&
480 int z_Charge(ODR o, Z_Charge **p, int opt)
482 if (!odr_sequence_begin(o, p, sizeof(**p)))
483 return opt && odr_ok(o);
485 odr_implicit(o, z_IntUnit, &(*p)->cost, ODR_CONTEXT, 1, 0) &&
486 odr_implicit(o, z_Unit, &(*p)->perWhat, ODR_CONTEXT, 2, 1) &&
487 odr_implicit(o, z_HumanString, &(*p)->text, ODR_CONTEXT, 3, 1) &&
491 int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt)
493 if (!odr_initmember(o, p, sizeof(**p)))
494 return opt && odr_ok(o);
495 if (odr_sequence_of(o, z_DatabaseName, &(*p)->databases,
496 &(*p)->num_databases))
499 return opt && odr_ok(o);
502 int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt)
504 if (!odr_sequence_begin(o, p, sizeof(**p)))
505 return opt && odr_ok(o);
507 odr_implicit(o, odr_oid, &(*p)->defaultAttributeSet,
508 ODR_CONTEXT, 0, 0) &&
509 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
510 odr_sequence_of(o, (Odr_fun)z_AttributeCombination, &(*p)->legalCombinations,
511 &(*p)->num_legalCombinations) &&
515 int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt)
517 if (!odr_initmember(o, p, sizeof(**p)))
518 return opt && odr_ok(o);
519 if (odr_sequence_of(o, (Odr_fun)z_AttributeOccurrence, &(*p)->occurrences,
520 &(*p)->num_occurrences))
523 return opt && odr_ok(o);
526 int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt)
528 if (!odr_initmember(o, p, sizeof(**p)))
529 return opt && odr_ok(o);
530 if (odr_sequence_of(o, (Odr_fun)z_StringOrNumeric, &(*p)->attributes,
531 &(*p)->num_attributes))
534 return opt && odr_ok(o);
537 int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt)
539 static Odr_arm arm[] =
541 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_AttributeOcc_anyOrNone, (Odr_fun)odr_null},
542 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_AttributeOcc_specific,
543 (Odr_fun)z_AttributeValueList},
547 if (!odr_sequence_begin(o, p, sizeof(**p)))
548 return opt && odr_ok(o);
550 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 0, 1) &&
551 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 1, 0) &&
552 odr_implicit(o, odr_null, &(*p)->mustBeSupplied, ODR_CONTEXT, 2, 1) &&
553 odr_choice(o, arm, &(*p)->attributeValues, &(*p)->which) &&
557 int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt)
559 if (!odr_sequence_begin(o, p, sizeof(**p)))
560 return opt && odr_ok(o);
562 odr_explicit(o, z_StringOrNumeric, &(*p)->value, ODR_CONTEXT, 0, 0) &&
563 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
564 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
565 (odr_sequence_of(o, (Odr_fun)z_StringOrNumeric, &(*p)->subAttributes,
566 &(*p)->num_subAttributes) || odr_ok(o)) &&
567 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
568 (odr_sequence_of(o, (Odr_fun)z_StringOrNumeric, &(*p)->superAttributes,
569 &(*p)->num_superAttributes) || odr_ok(o)) &&
570 odr_implicit(o, odr_null, &(*p)->partialSupport, ODR_CONTEXT, 4, 1) &&
576 int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt)
578 if (!odr_sequence_begin(o, p, sizeof(**p)))
579 return opt && odr_ok(o);
581 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
582 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
584 odr_implicit(o, z_HumanString, &(*p)->recentNews, ODR_CONTEXT, 2, 1) &&
585 odr_implicit(o, z_IconObject, &(*p)->icon, ODR_CONTEXT, 3, 1) &&
586 odr_implicit(o, odr_bool, &(*p)->namedResultSets, ODR_CONTEXT, 4, 0) &&
587 odr_implicit(o, odr_bool, &(*p)->multipleDBsearch, ODR_CONTEXT, 5, 0) &&
588 odr_implicit(o, odr_integer, &(*p)->maxResultSets, ODR_CONTEXT, 6, 1) &&
589 odr_implicit(o, odr_integer, &(*p)->maxResultSize, ODR_CONTEXT, 7, 1) &&
590 odr_implicit(o, odr_integer, &(*p)->maxTerms, ODR_CONTEXT, 8, 1) &&
591 odr_implicit(o, z_IntUnit, &(*p)->timeoutInterval, ODR_CONTEXT, 9, 1) &&
592 odr_implicit(o, z_HumanString, &(*p)->welcomeMessage, ODR_CONTEXT,
594 odr_implicit(o, z_ContactInfo, &(*p)->contactInfo, ODR_CONTEXT,
596 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
598 odr_implicit_settag(o, ODR_CONTEXT, 13) &&
599 (odr_sequence_of(o, z_InternationalString, &(*p)->nicknames,
600 &(*p)->num_nicknames) || odr_ok(o)) &&
601 odr_implicit(o, z_HumanString, &(*p)->usageRest, ODR_CONTEXT, 14, 1) &&
602 odr_implicit(o, z_HumanString, &(*p)->paymentAddr, ODR_CONTEXT,
604 odr_implicit(o, z_HumanString, &(*p)->hours, ODR_CONTEXT, 16, 1) &&
605 odr_implicit_settag(o, ODR_CONTEXT, 17) &&
606 (odr_sequence_of(o, (Odr_fun)z_DatabaseList, &(*p)->dbCombinations,
607 &(*p)->num_dbCombinations) || odr_ok(o)) &&
608 odr_implicit_settag(o, ODR_CONTEXT, 18) &&
609 (odr_sequence_of(o, (Odr_fun)z_NetworkAddress, &(*p)->addresses,
610 &(*p)->num_addresses) || odr_ok(o)) &&
611 odr_implicit(o, z_AccessInfo, &(*p)->commonAccessInfo, ODR_CONTEXT,
616 int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt)
618 static Odr_arm arm[] =
620 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Exp_RecordCount_actualNumber,
621 (Odr_fun)odr_integer},
622 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Exp_RecordCount_approxNumber,
623 (Odr_fun)odr_integer},
627 if (!odr_sequence_begin(o, p, sizeof(**p)))
628 return opt && odr_ok(o);
630 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
631 odr_implicit(o, z_DatabaseName, &(*p)->name, ODR_CONTEXT, 1, 0) &&
632 odr_implicit(o, odr_null, &(*p)->explainDatabase, ODR_CONTEXT, 2, 1) &&
633 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
634 (odr_sequence_of(o, z_DatabaseName, &(*p)->nicknames,
635 &(*p)->num_nicknames) || odr_ok(o)) &&
636 odr_implicit(o, z_IconObject, &(*p)->icon, ODR_CONTEXT, 4, 1) &&
637 odr_implicit(o, odr_bool, &(*p)->userFee, ODR_CONTEXT, 5, 0) &&
638 odr_implicit(o, odr_bool, &(*p)->available, ODR_CONTEXT, 6, 0) &&
639 odr_implicit(o, z_HumanString, &(*p)->titleString, ODR_CONTEXT, 7, 1) &&
640 odr_implicit_settag(o, ODR_CONTEXT, 8) &&
641 (odr_sequence_of(o, (Odr_fun)z_HumanString, &(*p)->keywords,
642 &(*p)->num_keywords) || odr_ok(o)) &&
643 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 9, 1) &&
644 odr_implicit(o, z_DatabaseList, &(*p)->associatedDbs, ODR_CONTEXT,
646 odr_implicit(o, z_DatabaseList, &(*p)->subDbs, ODR_CONTEXT, 11, 1) &&
647 odr_implicit(o, z_HumanString, &(*p)->disclaimers, ODR_CONTEXT,
649 odr_implicit(o, z_HumanString, &(*p)->news, ODR_CONTEXT, 13, 1) &&
650 ((odr_constructed_begin(o, &(*p)->recordCount, ODR_CONTEXT, 14) &&
651 odr_choice(o, arm, &(*p)->recordCount, &(*p)->recordCount_which) &&
652 odr_constructed_end(o)) || odr_ok(o)) &&
653 odr_implicit(o, z_HumanString, &(*p)->defaultOrder, ODR_CONTEXT,
655 odr_implicit(o, odr_integer, &(*p)->avRecordSize, ODR_CONTEXT, 16, 1) &&
656 odr_implicit(o, odr_integer, &(*p)->maxRecordSize, ODR_CONTEXT,
658 odr_implicit(o, z_HumanString, &(*p)->hours, ODR_CONTEXT, 18, 1) &&
659 odr_implicit(o, z_HumanString, &(*p)->bestTime, ODR_CONTEXT, 19, 1) &&
660 odr_implicit(o, odr_generalizedtime, &(*p)->lastUpdate, ODR_CONTEXT,
662 odr_implicit(o, z_IntUnit, &(*p)->updateInterval, ODR_CONTEXT, 21, 1) &&
663 odr_implicit(o, z_HumanString, &(*p)->coverage, ODR_CONTEXT, 22, 1) &&
664 odr_implicit(o, odr_bool, &(*p)->proprietary, ODR_CONTEXT, 23, 1) &&
665 odr_implicit(o, z_HumanString, &(*p)->copyrightText, ODR_CONTEXT,
667 odr_implicit(o, z_HumanString, &(*p)->copyrightNotice, ODR_CONTEXT,
669 odr_implicit(o, z_ContactInfo, &(*p)->producerContactInfo, ODR_CONTEXT,
671 odr_implicit(o, z_ContactInfo, &(*p)->supplierContactInfo, ODR_CONTEXT,
673 odr_implicit(o, z_ContactInfo, &(*p)->submissionContactInfo,
674 ODR_CONTEXT, 28, 1) &&
675 odr_implicit(o, z_AccessInfo, &(*p)->accessInfo, ODR_CONTEXT, 29, 1) &&
679 int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt)
681 if (!odr_sequence_begin(o, p, sizeof(**p)))
684 odr_implicit(o, odr_integer, &(*p)->tagType, ODR_CONTEXT, 0, 0) &&
685 odr_implicit(o, odr_oid, &(*p)->tagSet, ODR_CONTEXT, 1, 1) &&
686 odr_implicit(o, odr_null, &(*p)->defaultTagType, ODR_CONTEXT, 2, 1) &&
690 int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt)
692 if (!odr_sequence_begin(o, p, sizeof(**p)))
693 return opt && odr_ok(o);
695 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
696 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 1, 0) &&
697 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
699 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 3, 1) &&
700 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
701 (odr_sequence_of(o, (Odr_fun)z_TagTypeMapping, &(*p)->tagTypeMapping,
702 &(*p)->num_tagTypeMapping) || odr_ok(o)) &&
703 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
704 (odr_sequence_of(o, (Odr_fun)z_ElementInfo, &(*p)->recordStructure,
705 &(*p)->num_recordStructure) || odr_ok(o)) &&
709 int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt)
711 if (!odr_sequence_begin(o, p, sizeof(**p)))
712 return opt && odr_ok(o);
714 odr_implicit(o, z_InternationalString, &(*p)->elementName, ODR_CONTEXT, 1, 0) &&
715 odr_implicit(o, z_Path, &(*p)->elementTagPath, ODR_CONTEXT, 2, 0) &&
716 odr_explicit(o, z_ElementDataType, &(*p)->dataType, ODR_CONTEXT, 3, 1) &&
717 odr_implicit(o, odr_bool, &(*p)->required, ODR_CONTEXT, 4, 0) &&
718 odr_implicit(o, odr_bool, &(*p)->repeatable, ODR_CONTEXT, 5, 0) &&
719 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 6, 1) &&
723 int z_PathUnit(ODR o, Z_PathUnit **p, int opt)
725 if (!odr_sequence_begin(o, p, sizeof(**p)))
728 odr_implicit(o, odr_integer, &(*p)->tagType, ODR_CONTEXT, 1, 0) &&
729 odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue, ODR_CONTEXT,
734 int z_Path(ODR o, Z_Path **p, int opt)
736 if (!odr_initmember(o, p, sizeof(**p)))
737 return opt && odr_ok(o);
738 odr_implicit_settag(o, ODR_CONTEXT, 201);
739 if (odr_sequence_of(o, (Odr_fun)z_OtherInformationUnit, &(*p)->list,
743 return opt && odr_ok(o);
746 int z_ElementInfoList(ODR o, Z_Path **p, int opt)
748 if (!odr_initmember(o, p, sizeof(**p)))
749 return opt && odr_ok(o);
750 odr_implicit_settag(o, ODR_CONTEXT, 201);
751 if (odr_sequence_of(o, (Odr_fun)z_OtherInformationUnit, &(*p)->list,
755 return opt && odr_ok(o);
758 int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt)
760 static Odr_arm arm[] =
762 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ElementDataType_primitive,
763 (Odr_fun)odr_integer},
764 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ElementDataType_structured,
765 (Odr_fun)z_ElementInfoList},
769 if (!odr_initmember(o, p, sizeof(**p)))
770 return opt && odr_ok(o);
771 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
774 return opt && odr_ok(o);
777 int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt)
779 if (!odr_sequence_begin(o, p, sizeof(**p)))
782 odr_implicit(o, z_InternationalString, &(*p)->elementName,
783 ODR_CONTEXT, 1, 0) &&
784 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
785 (odr_sequence_of(o, z_InternationalString, &(*p)->nicknames,
786 &(*p)->num_nicknames) || odr_ok(o)) &&
787 odr_explicit(o, z_StringOrNumeric, &(*p)->elementTag, ODR_CONTEXT,
789 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
791 odr_implicit(o, odr_integer, &(*p)->dataType, ODR_CONTEXT, 5, 1) &&
792 z_OtherInformation(o, &(*p)->otherTagInfo, 1) &&
796 int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt)
798 if (!odr_sequence_begin(o, p, sizeof(**p)))
799 return opt && odr_ok(o);
801 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
802 odr_implicit(o, odr_oid, &(*p)->tagSet, ODR_CONTEXT, 1, 0) &&
803 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
805 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
807 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
808 (odr_sequence_of(o, (Odr_fun)z_TagSetInfoElements, &(*p)->elements,
809 &(*p)->num_elements) || odr_ok(o)) &&
813 int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt)
815 if (!odr_sequence_begin(o, p, sizeof(**p)))
816 return opt && odr_ok(o);
818 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
819 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 1, 0) &&
820 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
822 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
823 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->transferSyntaxes,
824 &(*p)->num_transferSyntaxes) || odr_ok(o)) &&
825 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
826 odr_implicit(o, z_InternationalString, &(*p)->asn1Module, ODR_CONTEXT,
828 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
829 (odr_sequence_of(o, (Odr_fun)z_ElementInfo, &(*p)->abstractStructure,
830 &(*p)->num_abstractStructure) || odr_ok(o)) &&
834 int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt)
836 if (!odr_sequence_begin(o, p, sizeof(**p)))
837 return opt && odr_ok(o);
839 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
840 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 1, 0) &&
841 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 2, 0) &&
842 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
843 (odr_sequence_of(o, (Odr_fun)z_AttributeType, &(*p)->attributes,
844 &(*p)->num_attributes) || odr_ok(o)) &&
845 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
849 int z_AttributeType(ODR o, Z_AttributeType **p, int opt)
851 if (!odr_sequence_begin(o, p, sizeof(**p)))
852 return opt && odr_ok(o);
854 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
855 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
856 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 2, 0) &&
857 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
858 odr_sequence_of(o, (Odr_fun)z_AttributeDescription, &(*p)->attributeValues,
859 &(*p)->num_attributeValues) &&
863 int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt)
865 if (!odr_sequence_begin(o, p, sizeof(**p)))
866 return opt && odr_ok(o);
868 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
869 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
870 odr_explicit(o, z_StringOrNumeric, &(*p)->attributeValue, ODR_CONTEXT, 2, 0) &&
871 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
872 (odr_sequence_of(o, (Odr_fun)z_StringOrNumeric, &(*p)->equivalentAttributes,
873 &(*p)->num_equivalentAttributes) || odr_ok(o)) &&
877 int z_TermListElement(ODR o, Z_TermListElement **p, int opt)
879 if (!odr_sequence_begin(o, p, sizeof(**p)))
880 return opt && odr_ok(o);
882 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 1, 0) &&
883 odr_implicit(o, z_HumanString, &(*p)->title, ODR_CONTEXT, 2, 1) &&
884 odr_implicit(o, odr_integer, &(*p)->searchCost, ODR_CONTEXT, 3, 1) &&
885 odr_implicit(o, odr_bool, &(*p)->scanable, ODR_CONTEXT, 4, 0) &&
886 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
887 (odr_sequence_of(o, z_InternationalString, &(*p)->broader,
888 &(*p)->num_broader) || odr_ok(o)) &&
889 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
890 (odr_sequence_of(o, z_InternationalString, &(*p)->narrower,
891 &(*p)->num_narrower) || odr_ok(o)) &&
895 int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt)
897 if (!odr_sequence_begin(o, p, sizeof(**p)))
898 return opt && odr_ok(o);
900 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
901 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
903 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
904 (odr_sequence_of(o, (Odr_fun)z_TermListElement, &(*p)->termLists,
905 &(*p)->num_termLists) || odr_ok(o)) &&
909 int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt)
911 if (!odr_sequence_begin(o, p, sizeof(**p)))
912 return opt && odr_ok(o);
914 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
915 odr_implicit(o, odr_oid, &(*p)->type, ODR_CONTEXT, 1, 0) &&
916 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 2, 1) &&
917 odr_implicit(o, odr_bool, &(*p)->privateType, ODR_CONTEXT, 3, 0) &&
918 odr_implicit(o, odr_bool, &(*p)->restrictionsApply, ODR_CONTEXT, 5, 0) &&
919 odr_implicit(o, odr_bool, &(*p)->feeApply, ODR_CONTEXT, 6, 0) &&
920 odr_implicit(o, odr_bool, &(*p)->available, ODR_CONTEXT, 7, 0) &&
921 odr_implicit(o, odr_bool, &(*p)->retentionSupported, ODR_CONTEXT, 8, 0) &&
922 odr_implicit(o, odr_integer, &(*p)->waitAction, ODR_CONTEXT, 9, 0) &&
923 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 10, 1) &&
924 odr_implicit(o, z_External, &(*p)->specificExplain, ODR_CONTEXT, 11, 1) &&
925 odr_implicit(o, z_InternationalString, &(*p)->esASN, ODR_CONTEXT, 12, 1) &&
929 int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt)
931 if (!odr_sequence_begin(o, p, sizeof(**p)))
932 return opt && odr_ok(o);
934 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
935 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) &&
936 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
937 (odr_sequence_of(o, (Odr_fun)z_AttributeSetDetails, &(*p)->attributesBySet,
938 &(*p)->num_attributesBySet) && odr_ok(o)) &&
939 odr_implicit(o, z_AttributeCombinations, &(*p)->attributeCombinations, ODR_CONTEXT, 3, 1) &&
943 int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt)
945 if (!odr_sequence_begin(o, p, sizeof(**p)))
946 return opt && odr_ok(o);
948 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT,
950 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
951 odr_sequence_of(o, (Odr_fun)z_AttributeTypeDetails, &(*p)->attributesByType,
952 &(*p)->num_attributesByType) &&
956 int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt)
958 if (!odr_sequence_begin(o, p, sizeof(**p)))
959 return opt && odr_ok(o);
961 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 0, 0) &&
962 odr_implicit(o, z_OmittedAttributeInterpretation, &(*p)->optionalType, ODR_CONTEXT, 1, 1) &&
963 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
964 (odr_sequence_of(o, (Odr_fun)z_AttributeValue, &(*p)->attributeValues,
965 &(*p)->num_attributeValues) || odr_ok(o)) &&
969 int z_OmittedAttributeInterpretation(ODR o, Z_OmittedAttributeInterpretation **p, int opt)
971 if (!odr_sequence_begin(o, p, sizeof(**p)))
972 return opt && odr_ok(o);
974 odr_explicit(o, z_StringOrNumeric, &(*p)->defaultValue, ODR_CONTEXT, 0, 1) &&
975 odr_implicit(o, z_HumanString, &(*p)->defaultDescription, ODR_CONTEXT, 1, 1) &&
979 int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt)
981 if (!odr_sequence_begin(o, p, sizeof(**p)))
982 return opt && odr_ok(o);
984 odr_implicit(o, odr_integer, &(*p)->maxStepSize, ODR_CONTEXT, 0, 1) &&
985 odr_implicit(o, z_HumanString, &(*p)->collatingSequence, ODR_CONTEXT, 1, 1) &&
986 odr_implicit(o, odr_bool, &(*p)->increasing, ODR_CONTEXT, 2, 1) &&
990 int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt)
992 if (!odr_sequence_begin(o, p, sizeof(**p)))
993 return opt && odr_ok(o);
995 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
996 odr_implicit(o, z_InternationalString, &(*p)->termListName, ODR_CONTEXT, 1, 0) &&
997 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 2, 1) &&
998 odr_implicit(o, z_AttributeCombinations, &(*p)->attributes, ODR_CONTEXT, 3, 1) &&
999 odr_implicit(o, z_EScanInfo, &(*p)->scanInfo, ODR_CONTEXT, 4, 1) &&
1000 odr_implicit(o, odr_integer, &(*p)->estNumberTerms, ODR_CONTEXT, 5, 1) &&
1001 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
1002 (odr_sequence_of(o, (Odr_fun)z_Term, &(*p)->sampleTerms,
1003 &(*p)->num_sampleTerms) || odr_ok(o)) &&
1004 odr_sequence_end(o);
1007 int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt)
1009 if (!odr_sequence_begin(o, p, sizeof(**p)))
1010 return opt && odr_ok(o);
1012 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1013 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) &&
1014 odr_implicit(o, z_ElementSetName, &(*p)->elementSetName, ODR_CONTEXT, 2, 0) &&
1015 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 3, 0) &&
1016 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 4, 0) &&
1017 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 5, 1) &&
1018 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
1019 (odr_sequence_of(o, (Odr_fun)z_PerElementDetails, &(*p)->detailsPerElement, &(*p)->num_detailsPerElement) || odr_ok(o)) &&
1020 odr_sequence_end(o);
1023 int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt)
1025 if (!odr_sequence_begin(o, p, sizeof(**p)))
1026 return opt && odr_ok(o);
1028 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1029 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) &&
1030 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 2, 0) &&
1031 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 3, 0) &&
1032 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
1033 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
1034 (odr_sequence_of(o, (Odr_fun)z_PerElementDetails, &(*p)->detailsPerElement,
1035 &(*p)->num_detailsPerElement) || odr_ok(o)) &&
1036 odr_sequence_end(o);
1039 int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt)
1041 if (!odr_sequence_begin(o, p, sizeof(**p)))
1042 return opt && odr_ok(o);
1044 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
1045 odr_implicit(o, z_RecordTag, &(*p)->recordTag, ODR_CONTEXT, 1, 1) &&
1046 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1047 (odr_sequence_of(o, (Odr_fun)z_Path, &(*p)->schemaTags, &(*p)->num_schemaTags) ||
1049 odr_implicit(o, odr_integer, &(*p)->maxSize, ODR_CONTEXT, 3, 1) &&
1050 odr_implicit(o, odr_integer, &(*p)->minSize, ODR_CONTEXT, 4, 1) &&
1051 odr_implicit(o, odr_integer, &(*p)->avgSize, ODR_CONTEXT, 5, 1) &&
1052 odr_implicit(o, odr_integer, &(*p)->fixedSize, ODR_CONTEXT, 6, 1) &&
1053 odr_implicit(o, odr_bool, &(*p)->repeatable, ODR_CONTEXT, 8, 0) &&
1054 odr_implicit(o, odr_bool, &(*p)->required, ODR_CONTEXT, 9, 0) &&
1055 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 12, 1) &&
1056 odr_implicit(o, z_HumanString, &(*p)->contents, ODR_CONTEXT, 13, 1) &&
1057 odr_implicit(o, z_HumanString, &(*p)->billingInfo, ODR_CONTEXT, 14, 1) &&
1058 odr_implicit(o, z_HumanString, &(*p)->restrictions, ODR_CONTEXT, 15, 1) &&
1059 odr_implicit_settag(o, ODR_CONTEXT, 16) &&
1060 (odr_sequence_of(o, z_InternationalString, &(*p)->alternateNames,
1061 &(*p)->num_alternateNames) || odr_ok(o)) &&
1062 odr_implicit_settag(o, ODR_CONTEXT, 17) &&
1063 (odr_sequence_of(o, z_InternationalString, &(*p)->genericNames,
1064 &(*p)->num_genericNames) || odr_ok(o)) &&
1065 odr_implicit(o, z_AttributeCombinations, &(*p)->searchAccess,
1066 ODR_CONTEXT, 18, 1) &&
1067 odr_sequence_end(o);
1070 int z_RecordTag(ODR o, Z_RecordTag **p, int opt)
1072 if (!odr_sequence_begin(o, p, sizeof(**p)))
1073 return opt && odr_ok(o);
1075 odr_explicit(o, z_StringOrNumeric, &(*p)->qualifier, ODR_CONTEXT,
1077 odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue, ODR_CONTEXT,
1079 odr_sequence_end(o);
1082 int z_SortDetails(ODR o, Z_SortDetails **p, int opt)
1084 if (!odr_sequence_begin(o, p, sizeof(**p)))
1085 return opt && odr_ok(o);
1087 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1088 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
1090 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1091 (odr_sequence_of(o, (Odr_fun)z_SortKeyDetails, &(*p)->sortKeys,
1092 &(*p)->num_sortKeys) || odr_ok(o)) &&
1093 odr_sequence_end(o);
1096 int z_SortKeyDetailsSortType(ODR o, Z_SortKeyDetailsSortType **p, int opt)
1098 static Odr_arm arm[] =
1100 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_character,
1102 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_numeric,
1104 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_structured,
1105 (Odr_fun)z_HumanString},
1109 if (!odr_initmember(o, p, sizeof(**p)))
1110 return opt && odr_ok(o);
1111 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1114 return opt && odr_ok(o);
1117 int z_SortKeyDetails(ODR o, Z_SortKeyDetails **p, int opt)
1119 if (!odr_sequence_begin(o, p, sizeof(**p)))
1120 return opt && odr_ok(o);
1122 odr_implicit(o, z_HumanString, &(*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, &(*p)->attributeSpecifications,
1127 ODR_CONTEXT, 2, 1) &&
1128 odr_explicit(o, z_SortKeyDetailsSortType, &(*p)->sortType, ODR_CONTEXT,
1130 odr_implicit(o, odr_integer, &(*p)->caseSensitivity, ODR_CONTEXT,
1132 odr_sequence_end(o);
1135 int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt)
1137 if (!odr_sequence_begin(o, p, sizeof(**p)))
1138 return opt && odr_ok(o);
1140 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1141 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
1143 odr_implicit(o, odr_integer, &(*p)->processingContext, ODR_CONTEXT,
1145 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1147 odr_implicit(o, odr_oid, &(*p)->oid, ODR_CONTEXT, 4, 0) &&
1148 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 5, 1) &&
1149 odr_implicit(o, z_External, &(*p)->instructions, ODR_CONTEXT, 6, 1) &&
1150 odr_sequence_end(o);
1153 int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt)
1155 if (!odr_sequence_begin(o, p, sizeof(**p)))
1156 return opt && odr_ok(o);
1158 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1159 odr_implicit(o, odr_oid, &(*p)->variantSet, ODR_CONTEXT, 1, 0) &&
1160 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1162 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1163 (odr_sequence_of(o, (Odr_fun)z_VariantClass, &(*p)->variants,
1164 &(*p)->num_variants) || odr_ok(o)) &&
1165 odr_sequence_end(o);
1168 int z_VariantClass(ODR o, Z_VariantClass **p, int opt)
1170 if (!odr_sequence_begin(o, p, sizeof(**p)))
1171 return opt && odr_ok(o);
1173 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1175 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1176 odr_implicit(o, odr_integer, &(*p)->variantClass, ODR_CONTEXT, 2, 0) &&
1177 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1178 odr_sequence_of(o, (Odr_fun)z_VariantType, &(*p)->variantTypes,
1179 &(*p)->num_variantTypes) &&
1180 odr_sequence_end(o);
1183 int z_VariantType(ODR o, Z_VariantType **p, int opt)
1185 if (!odr_sequence_begin(o, p, sizeof(**p)))
1186 return opt && odr_ok(o);
1188 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
1189 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1190 odr_implicit(o, odr_integer, &(*p)->variantType, ODR_CONTEXT, 2, 0) &&
1191 odr_implicit(o, z_VariantValue, &(*p)->variantValue, ODR_CONTEXT, 3, 1) &&
1192 odr_sequence_end(o);
1195 int z_VariantValue(ODR o, Z_VariantValue **p, int opt)
1197 if (!odr_sequence_begin(o, p, sizeof(**p)))
1198 return opt && odr_ok(o);
1200 odr_explicit(o, odr_integer, &(*p)->dataType, ODR_CONTEXT, 0, 0) &&
1201 odr_explicit(o, z_ValueSet, &(*p)->values, ODR_CONTEXT, 1, 1) &&
1202 odr_sequence_end(o);
1205 int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt)
1207 if (!odr_initmember(o, p, sizeof(**p)))
1208 return opt && odr_ok(o);
1209 if (odr_sequence_of(o, (Odr_fun)z_ValueDescription, &(*p)->enumerated,
1210 &(*p)->num_enumerated))
1213 return opt && odr_ok(o);
1216 int z_ValueSet(ODR o, Z_ValueSet **p, int opt)
1218 static Odr_arm arm[] =
1220 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ValueSet_range, (Odr_fun)z_ValueRange},
1221 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueSet_enumerated,
1222 (Odr_fun)z_ValueSetEnumerated},
1226 if (!odr_initmember(o, p, sizeof(**p)))
1227 return opt && odr_ok(o);
1228 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1231 return opt && odr_ok(o);
1234 int z_ValueRange(ODR o, Z_ValueRange **p, int opt)
1236 if (!odr_sequence_begin(o, p, sizeof(**p)))
1237 return opt && odr_ok(o);
1239 odr_explicit(o, z_ValueDescription, &(*p)->lower, ODR_CONTEXT, 0, 1) &&
1240 odr_explicit(o, z_ValueDescription, &(*p)->upper, ODR_CONTEXT, 1, 1) &&
1241 odr_sequence_end(o);
1244 int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt)
1246 static Odr_arm arm[] =
1248 {ODR_NONE, -1, -1, Z_ValueDescription_integer, (Odr_fun)odr_integer},
1249 {ODR_NONE, -1, -1, Z_ValueDescription_string, (Odr_fun)z_InternationalString},
1250 {ODR_NONE, -1, -1, Z_ValueDescription_octets, (Odr_fun)odr_octetstring},
1251 {ODR_NONE, -1, -1, Z_ValueDescription_oid, (Odr_fun)odr_oid},
1252 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueDescription_unit, (Odr_fun)z_Unit},
1253 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ValueDescription_valueAndUnit, (Odr_fun)z_IntUnit},
1257 if (!odr_initmember(o, p, sizeof(**p)))
1258 return opt && odr_ok(o);
1259 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1262 return opt && odr_ok(o);
1265 int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt)
1267 if (!odr_sequence_begin(o, p, sizeof(**p)))
1268 return opt && odr_ok(o);
1270 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1271 odr_implicit(o, z_InternationalString, &(*p)->unitSystem, ODR_CONTEXT,
1273 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 2, 1) &&
1274 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1275 (odr_sequence_of(o, (Odr_fun)z_UnitType, &(*p)->units, &(*p)->num_units) ||
1277 odr_sequence_end(o);
1280 int z_UnitType(ODR o, Z_UnitType **p, int opt)
1282 if (!odr_sequence_begin(o, p, sizeof(**p)))
1283 return opt && odr_ok(o);
1285 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1287 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1288 odr_explicit(o, z_StringOrNumeric, &(*p)->unitType, ODR_CONTEXT,
1290 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1291 odr_sequence_of(o, (Odr_fun)z_Units, &(*p)->units, &(*p)->num_units) &&
1292 odr_sequence_end(o);
1295 int z_Units(ODR o, Z_Units **p, int opt)
1297 if (!odr_sequence_begin(o, p, sizeof(**p)))
1298 return opt && odr_ok(o);
1300 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
1301 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1302 odr_explicit(o, z_StringOrNumeric, &(*p)->unit, ODR_CONTEXT, 2, 0) &&
1303 odr_sequence_end(o);
1306 int z_CategoryList(ODR o, Z_CategoryList **p, int opt)
1308 if (!odr_sequence_begin(o, p, sizeof(**p)))
1309 return opt && odr_ok(o);
1311 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1312 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
1313 odr_sequence_of(o, (Odr_fun)z_CategoryInfo, &(*p)->categories,
1314 &(*p)->num_categories) &&
1315 odr_sequence_end(o);
1318 int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt)
1320 if (!odr_sequence_begin(o, p, sizeof(**p)))
1321 return opt && odr_ok(o);
1323 odr_implicit(o, z_InternationalString, &(*p)->category, ODR_CONTEXT,
1325 odr_implicit(o, z_InternationalString, &(*p)->originalCategory,
1326 ODR_CONTEXT, 2, 1) &&
1327 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 3, 1) &&
1328 odr_implicit(o, z_InternationalString, &(*p)->asn1Module, ODR_CONTEXT,
1330 odr_sequence_end(o);
1333 int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt)
1335 static Odr_arm arm[] =
1337 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Explain_targetInfo, (Odr_fun)z_TargetInfo},
1338 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Explain_databaseInfo, (Odr_fun)z_DatabaseInfo},
1339 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_Explain_schemaInfo, (Odr_fun)z_SchemaInfo},
1340 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_Explain_tagSetInfo, (Odr_fun)z_TagSetInfo},
1341 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_Explain_recordSyntaxInfo,
1342 (Odr_fun)z_RecordSyntaxInfo},
1343 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_Explain_attributeSetInfo,
1344 (Odr_fun)z_AttributeSetInfo},
1345 {ODR_IMPLICIT, ODR_CONTEXT, 6, Z_Explain_termListInfo,
1346 (Odr_fun)z_TermListInfo},
1347 {ODR_IMPLICIT, ODR_CONTEXT, 7, Z_Explain_extendedServicesInfo,
1348 (Odr_fun)z_ExtendedServicesInfo},
1349 {ODR_IMPLICIT, ODR_CONTEXT, 8, Z_Explain_attributeDetails,
1350 (Odr_fun)z_AttributeDetails},
1351 {ODR_IMPLICIT, ODR_CONTEXT, 9, Z_Explain_termListDetails,
1352 (Odr_fun)z_TermListDetails},
1353 {ODR_IMPLICIT, ODR_CONTEXT, 10, Z_Explain_elementSetDetails,
1354 (Odr_fun)z_ElementSetDetails},
1355 {ODR_IMPLICIT, ODR_CONTEXT, 11, Z_Explain_retrievalRecordDetails,
1356 (Odr_fun)z_RetrievalRecordDetails},
1357 {ODR_IMPLICIT, ODR_CONTEXT, 12, Z_Explain_sortDetails,
1358 (Odr_fun)z_SortDetails},
1359 {ODR_IMPLICIT, ODR_CONTEXT, 13, Z_Explain_processing,
1360 (Odr_fun)z_ProcessingInformation},
1361 {ODR_IMPLICIT, ODR_CONTEXT, 14, Z_Explain_variants,
1362 (Odr_fun)z_VariantSetInfo},
1363 {ODR_IMPLICIT, ODR_CONTEXT, 15, Z_Explain_units, (Odr_fun)z_UnitInfo},
1364 {ODR_IMPLICIT, ODR_CONTEXT, 100, Z_Explain_categoryList,
1365 (Odr_fun)z_CategoryList},
1369 if (!odr_initmember(o, p, sizeof(**p)))
1370 return opt && odr_ok(o);
1371 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1374 return opt && odr_ok(o);