2 * Copyright (c) 1995-1999, Index Data.
3 * See the file LICENSE for details.
4 * Sebastian Hammer, Adam Dickmeiss
7 * Revision 1.12 1999-04-20 09:56:48 adam
8 * Added 'name' paramter to encoder/decoder routines (typedef Odr_fun).
9 * Modified all encoders/decoders to reflect this change.
11 * Revision 1.11 1999/03/18 12:57:13 adam
12 * Fixed bug in TargetInfo encoder/decoder.
14 * Revision 1.10 1998/05/18 13:06:52 adam
15 * Changed the way attribute sets are handled by the retriaval module.
16 * Extended Explain conversion / schema.
17 * Modified server and client to work with ASN.1 compiled protocol handlers.
19 * Revision 1.9 1998/02/11 11:53:32 adam
20 * Changed code so that it compiles as C++.
22 * Revision 1.8 1996/01/02 11:46:41 quinn
23 * Changed 'operator' to 'roperator' to avoid C++ conflict.
25 * Revision 1.7 1995/12/14 16:28:07 quinn
28 * Revision 1.6 1995/12/14 11:09:09 quinn
29 * Fixed bug in tagging.
31 * Revision 1.5 1995/12/05 11:15:50 quinn
34 * Revision 1.4 1995/09/29 17:11:54 quinn
37 * Revision 1.3 1995/09/27 15:02:42 quinn
38 * Modified function heads & prototypes.
40 * Revision 1.2 1995/08/15 11:59:43 quinn
43 * Revision 1.1 1995/08/10 08:54:02 quinn
51 int z_LanguageCode(ODR o, char **p, int opt, const char *name);
52 int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt, const char *name);
53 int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt, const char *name);
54 int z_HumanString(ODR o, Z_HumanString **p, int opt, const char *name);
55 int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt, const char *name);
56 int z_IconObject(ODR o, Z_IconObject **p, int opt, const char *name);
57 int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt, const char *name);
58 int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt,
60 int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt,
62 int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt,
64 int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt, const char *name);
65 int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt, const char *name);
66 int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt,
68 int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt,
70 int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt,
72 int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt, const char *name);
73 int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt,
75 int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt,
77 int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt, const char *name);
78 int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt,
80 int z_SearchKey(ODR o, Z_SearchKey **p, int opt, const char *name);
81 int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt,
83 int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt,
85 int z_CostsOtherCharge(ODR o, Z_CostsOtherCharge **p, int opt,
87 int z_Costs(ODR o, Z_Costs **p, int opt, const char *name);
88 int z_Charge(ODR o, Z_Charge **p, int opt, const char *name);
89 int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt, const char *name);
90 int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt,
92 int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt,
94 int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt,
96 int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt,
98 int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt, const char *name);
99 int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt, const char *name);
100 int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt, const char *name);
101 int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt, const char *name);
102 int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt, const char *name);
103 int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt, const char *name);
104 int z_PathUnit(ODR o, Z_PathUnit **p, int opt, const char *name);
105 int z_Path(ODR o, Z_Path **p, int opt, const char *name);
106 int z_ElementInfoList(ODR o, Z_Path **p, int opt, const char *name);
107 int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt, const char *name);
108 int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt,
110 int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt, const char *name);
111 int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt,
113 int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt,
115 int z_AttributeType(ODR o, Z_AttributeType **p, int opt, const char *name);
116 int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt,
118 int z_TermListElement(ODR o, Z_TermListElement **p, int opt, const char *name);
119 int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt, const char *name);
120 int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt,
122 int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt,
124 int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt,
126 int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt,
128 int z_OmittedAttributeInterpretation(ODR o,
129 Z_OmittedAttributeInterpretation **p,
130 int opt, const char *name);
131 int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt, const char *name);
132 int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt, const char *name);
133 int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt,
135 int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt,
137 int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt,
139 int z_RecordTag(ODR o, Z_RecordTag **p, int opt, const char *name);
140 int z_SortDetails(ODR o, Z_SortDetails **p, int opt, const char *name);
141 int z_SortKeyDetails(ODR o, Z_SortKeyDetails **p, int opt, const char *name);
142 int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt,
144 int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt, const char *name);
145 int z_VariantClass(ODR o, Z_VariantClass **p, int opt, const char *name);
146 int z_VariantType(ODR o, Z_VariantType **p, int opt, const char *name);
147 int z_VariantValue(ODR o, Z_VariantValue **p, int opt, const char *name);
148 int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt,
150 int z_ValueSet(ODR o, Z_ValueSet **p, int opt, const char *name);
151 int z_ValueRange(ODR o, Z_ValueRange **p, int opt, const char *name);
152 int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt,
154 int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt, const char *name);
155 int z_UnitType(ODR o, Z_UnitType **p, int opt, const char *name);
156 int z_Units(ODR o, Z_Units **p, int opt, const char *name);
157 int z_CategoryList(ODR o, Z_CategoryList **p, int opt, const char *name);
158 int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt, const char *name);
159 int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt, const char *name);
161 int z_LanguageCode(ODR o, char **p, int opt, const char *name)
163 return z_InternationalString(o, p, opt, 0);
166 int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt, const char *name)
168 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
169 return opt && odr_ok(o);
171 odr_implicit(o, odr_generalizedtime, &(*p)->dateAdded,
172 ODR_CONTEXT, 0, 1) &&
173 odr_implicit(o, odr_generalizedtime, &(*p)->dateChanged,
174 ODR_CONTEXT, 1, 1) &&
175 odr_implicit(o, odr_generalizedtime, &(*p)->expiry,
176 ODR_CONTEXT, 2, 1) &&
177 odr_implicit(o, z_LanguageCode, &(*p)->humanStringLanguage,
178 ODR_CONTEXT, 3, 1) &&
179 z_OtherInformation(o, &(*p)->otherInfo, 1, 0) &&
183 int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt, const char *name)
185 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
186 return opt && odr_ok(o);
188 odr_implicit(o, z_LanguageCode, &(*p)->language, ODR_CONTEXT, 0, 1) &&
189 odr_implicit(o, z_InternationalString, &(*p)->text, ODR_CONTEXT,
194 int z_HumanString(ODR o, Z_HumanString **p, int opt, const char *name)
196 if (!odr_initmember(o, p, sizeof(**p)))
197 return opt && odr_ok(o);
198 if (odr_sequence_of(o, (Odr_fun)z_HumanStringUnit, &(*p)->strings,
199 &(*p)->num_strings, 0))
202 return opt && odr_ok(o);
205 int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt, const char *name)
207 static Odr_arm arm[] =
209 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IconObjectUnit_ianaType,
210 z_InternationalString, 0},
211 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IconObjectUnit_z3950type,
212 z_InternationalString, 0},
213 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IconObjectUnit_otherType,
214 z_InternationalString, 0},
215 {-1, -1, -1, -1, 0, 0}
218 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
219 return opt && odr_ok(o);
221 odr_constructed_begin(o, &(*p)->bodyType, ODR_CONTEXT, 1, 0) &&
222 odr_choice(o, arm, &(*p)->bodyType, &(*p)->which, 0) &&
223 odr_constructed_end(o) &&
224 odr_implicit(o, odr_octetstring, &(*p)->content, ODR_CONTEXT, 2, 0) &&
228 int z_IconObject(ODR o, Z_IconObject **p, int opt, const char *name)
230 if (!odr_initmember(o, p, sizeof(**p)))
231 return opt && odr_ok(o);
232 if (odr_sequence_of(o, (Odr_fun)z_IconObjectUnit, &(*p)->elements,
236 return opt && odr_ok(o);
239 int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt, const char *name)
241 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
242 return opt && odr_ok(o);
244 odr_implicit(o, z_InternationalString, &(*p)->name,
245 ODR_CONTEXT, 0, 1) &&
246 odr_implicit(o, z_HumanString, &(*p)->description,
247 ODR_CONTEXT, 1, 1) &&
248 odr_implicit(o, z_HumanString, &(*p)->address,
249 ODR_CONTEXT, 2, 1) &&
250 odr_implicit(o, z_InternationalString, &(*p)->email,
251 ODR_CONTEXT, 3, 1) &&
252 odr_implicit(o, z_InternationalString, &(*p)->phone,
253 ODR_CONTEXT, 4, 1) &&
257 int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt,
260 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
263 odr_implicit(o, z_InternationalString, &(*p)->hostAddress,
264 ODR_CONTEXT, 0, 0) &&
265 odr_implicit(o, odr_integer, &(*p)->port, ODR_CONTEXT, 1, 0) &&
269 int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt,
272 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
275 odr_implicit(o, z_InternationalString, &(*p)->pSel,
276 ODR_CONTEXT, 0, 0) &&
277 odr_implicit(o, z_InternationalString, &(*p)->sSel,
278 ODR_CONTEXT, 1, 1) &&
279 odr_implicit(o, z_InternationalString, &(*p)->tSel,
280 ODR_CONTEXT, 2, 1) &&
281 odr_implicit(o, z_InternationalString, &(*p)->nSap,
282 ODR_CONTEXT, 3, 0) &&
286 int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt,
289 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
292 odr_implicit(o, z_InternationalString, &(*p)->type,
293 ODR_CONTEXT, 0, 0) &&
294 odr_implicit(o, z_InternationalString, &(*p)->address,
295 ODR_CONTEXT, 1, 0) &&
299 int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt, const char *name)
301 static Odr_arm arm[] =
303 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_NetworkAddress_iA,
304 (Odr_fun)z_NetworkAddressIA, 0},
305 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_NetworkAddress_oPA,
306 (Odr_fun)z_NetworkAddressOPA, 0},
307 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_NetworkAddress_other,
308 (Odr_fun)z_NetworkAddressOther, 0},
309 {-1, -1, -1, -1, 0, 0}
312 if (!odr_initmember(o, p, sizeof(**p)))
313 return opt && odr_ok(o);
314 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
317 return opt && odr_ok(o);
320 int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt, const char *name)
322 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
323 return opt && odr_ok(o);
325 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
326 (odr_sequence_of(o, (Odr_fun)z_QueryTypeDetails,
327 &(*p)->queryTypesSupported,
328 &(*p)->num_queryTypesSupported, 0) || odr_ok(o)) &&
329 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
330 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->diagnosticsSets,
331 &(*p)->num_diagnosticsSets, 0) || odr_ok(o)) &&
332 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
333 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->attributeSetIds,
334 &(*p)->num_attributeSetIds, 0) || odr_ok(o)) &&
335 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
336 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->schemas,
337 &(*p)->num_schemas, 0) ||
339 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
340 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->recordSyntaxes,
341 &(*p)->num_recordSyntaxes, 0) || odr_ok(o)) &&
342 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
343 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->resourceChallenges,
344 &(*p)->num_resourceChallenges, 0) || odr_ok(o)) &&
345 odr_implicit(o, z_AccessRestrictions, &(*p)->restrictedAccess,
346 ODR_CONTEXT, 6, 1) &&
347 odr_implicit(o, z_Costs, &(*p)->costInfo, ODR_CONTEXT, 8, 1) &&
348 odr_implicit_settag(o, ODR_CONTEXT, 9) &&
349 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->variantSets,
350 &(*p)->num_variantSets, 0) || odr_ok(o)) &&
351 odr_implicit_settag(o, ODR_CONTEXT, 10) &&
352 (odr_sequence_of(o, (Odr_fun)z_ElementSetName, &(*p)->elementSetNames,
353 &(*p)->num_elementSetNames, 0) || odr_ok(o)) &&
354 odr_implicit_settag(o, ODR_CONTEXT, 11) &&
355 (odr_sequence_of(o, (Odr_fun)z_InternationalString, &(*p)->unitSystems,
356 &(*p)->num_unitSystems, 0) || odr_ok(o)) &&
360 int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt,
363 static Odr_arm arm[] =
365 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_QueryTypeDetails_private,
366 (Odr_fun)z_PrivateCapabilities, 0},
367 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_QueryTypeDetails_rpn,
368 (Odr_fun)z_RpnCapabilities, 0},
369 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_QueryTypeDetails_iso8777,
370 (Odr_fun)z_Iso8777Capabilities, 0},
371 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_QueryTypeDetails_z39_58,
372 (Odr_fun)z_HumanString, 0},
373 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_QueryTypeDetails_erpn,
374 (Odr_fun)z_RpnCapabilities, 0},
375 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_QueryTypeDetails_rankedList,
376 (Odr_fun)z_HumanString, 0},
377 {-1, -1, -1, -1, 0, 0}
380 if (!odr_initmember(o, p, sizeof(**p)))
381 return opt && odr_ok(o);
382 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
385 return opt && odr_ok(o);
388 int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt,
391 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
392 return opt && odr_ok(o);
394 odr_implicit(o, z_InternationalString, &(*p)->roperator,
395 ODR_CONTEXT, 0, 0) &&
396 odr_implicit(o, z_HumanString, &(*p)->description,
397 ODR_CONTEXT, 1, 1) &&
401 int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt,
404 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
405 return opt && odr_ok(o);
407 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
408 (odr_sequence_of(o, (Odr_fun)z_PrivateCapOperator, &(*p)->operators,
409 &(*p)->num_operators, 0) || odr_ok(o)) &&
410 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
411 (odr_sequence_of(o, (Odr_fun)z_SearchKey, &(*p)->searchKeys,
412 &(*p)->num_searchKeys, 0) || odr_ok(o)) &&
413 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
414 (odr_sequence_of(o, (Odr_fun)z_HumanString, &(*p)->description,
415 &(*p)->num_description, 0) || odr_ok(o)) &&
419 int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt, const char *name)
421 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
422 return opt && odr_ok(o);
424 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
425 (odr_sequence_of(o, (Odr_fun)odr_integer, &(*p)->operators,
426 &(*p)->num_operators, 0) || odr_ok(o)) &&
427 odr_implicit(o, odr_bool, &(*p)->resultSetAsOperandSupported,
428 ODR_CONTEXT, 1, 0) &&
429 odr_implicit(o, odr_bool, &(*p)->restrictionOperandSupported,
430 ODR_CONTEXT, 2, 0) &&
431 odr_implicit(o, z_ProximitySupport, &(*p)->proximity, ODR_CONTEXT,
436 int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt,
439 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
440 return opt && odr_ok(o);
442 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
443 odr_sequence_of(o, (Odr_fun)z_SearchKey, &(*p)->searchKeys,
444 &(*p)->num_searchKeys, 0) &&
445 odr_implicit(o, z_HumanString, &(*p)->restrictions, ODR_CONTEXT,
450 int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt,
453 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
454 return opt && odr_ok(o);
456 odr_implicit(o, odr_integer, &(*p)->unit, ODR_CONTEXT, 0, 0) &&
457 odr_implicit(o, z_HumanString, &(*p)->description,
458 ODR_CONTEXT, 1, 1) &&
462 int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt, const char *name)
464 static Odr_arm arm[] =
466 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ProxSupportUnit_known,
467 (Odr_fun)odr_integer, 0},
468 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ProxSupportUnit_private,
469 (Odr_fun)z_ProxSupportPrivate, 0},
470 {-1, -1, -1, -1, 0, 0}
473 if (!odr_initmember(o, p, sizeof(**p)))
474 return opt && odr_ok(o);
475 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
478 return opt && odr_ok(o);
481 int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt,
484 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
485 return opt && odr_ok(o);
487 odr_implicit(o, odr_bool, &(*p)->anySupport, ODR_CONTEXT, 0, 0) &&
488 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
489 (odr_sequence_of(o, (Odr_fun)z_ProxSupportUnit, &(*p)->unitsSupported,
490 &(*p)->num_unitsSupported, 0) || odr_ok(o)) &&
494 int z_SearchKey(ODR o, Z_SearchKey **p, int opt, const char *name)
496 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
497 return opt && odr_ok(o);
499 odr_implicit(o, z_InternationalString, &(*p)->searchKey,
500 ODR_CONTEXT, 0, 0) &&
501 odr_implicit(o, z_HumanString, &(*p)->description,
502 ODR_CONTEXT, 1, 1) &&
506 int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt,
509 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
510 return opt && odr_ok(o);
512 odr_explicit(o, odr_integer, &(*p)->accessType, ODR_CONTEXT, 0, 0) &&
513 odr_implicit(o, z_HumanString, &(*p)->accessText, ODR_CONTEXT, 1, 1) &&
514 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
515 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->accessChallenges,
516 &(*p)->num_accessChallenges, 0) || odr_ok(o)) &&
520 int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt,
523 if (!odr_initmember(o, p, sizeof(**p)))
524 return opt && odr_ok(o);
525 if (odr_sequence_of(o, (Odr_fun)z_AccessRestrictionsUnit, &(*p)->elements,
529 return opt && odr_ok(o);
532 int z_CostsOtherCharge(ODR o, Z_CostsOtherCharge **p, int opt,
535 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
536 return opt && odr_ok(o);
538 odr_implicit(o, z_HumanString, &(*p)->forWhat, ODR_CONTEXT, 1, 0) &&
539 odr_implicit(o, z_Charge, &(*p)->charge, ODR_CONTEXT, 2, 1) &&
543 int z_Costs(ODR o, Z_Costs **p, int opt, const char *name)
545 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
546 return opt && odr_ok(o);
548 odr_implicit(o, z_Charge, &(*p)->connectCharge, ODR_CONTEXT, 0, 1) &&
549 odr_implicit(o, z_Charge, &(*p)->connectTime, ODR_CONTEXT, 1, 1) &&
550 odr_implicit(o, z_Charge, &(*p)->displayCharge, ODR_CONTEXT, 2, 1) &&
551 odr_implicit(o, z_Charge, &(*p)->searchCharge, ODR_CONTEXT, 3, 1) &&
552 odr_implicit(o, z_Charge, &(*p)->subscriptCharge, ODR_CONTEXT, 4, 1) &&
553 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
554 (odr_sequence_of(o, (Odr_fun)z_CostsOtherCharge, &(*p)->otherCharges,
555 &(*p)->num_otherCharges, 0) || odr_ok(o)) &&
559 int z_Charge(ODR o, Z_Charge **p, int opt, const char *name)
561 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
562 return opt && odr_ok(o);
564 odr_implicit(o, z_IntUnit, &(*p)->cost, ODR_CONTEXT, 1, 0) &&
565 odr_implicit(o, z_Unit, &(*p)->perWhat, ODR_CONTEXT, 2, 1) &&
566 odr_implicit(o, z_HumanString, &(*p)->text, ODR_CONTEXT, 3, 1) &&
570 int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt, const char *name)
572 if (!odr_initmember(o, p, sizeof(**p)))
573 return opt && odr_ok(o);
574 if (odr_sequence_of(o, z_DatabaseName, &(*p)->databases,
575 &(*p)->num_databases, 0))
578 return opt && odr_ok(o);
581 int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt,
584 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
585 return opt && odr_ok(o);
587 odr_implicit(o, odr_oid, &(*p)->defaultAttributeSet,
588 ODR_CONTEXT, 0, 0) &&
589 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
590 odr_sequence_of(o, (Odr_fun)z_AttributeCombination,
591 &(*p)->legalCombinations,
592 &(*p)->num_legalCombinations, 0) &&
596 int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt,
599 if (!odr_initmember(o, p, sizeof(**p)))
600 return opt && odr_ok(o);
601 if (odr_sequence_of(o, (Odr_fun)z_AttributeOccurrence, &(*p)->occurrences,
602 &(*p)->num_occurrences, 0))
605 return opt && odr_ok(o);
608 int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt,
611 if (!odr_initmember(o, p, sizeof(**p)))
612 return opt && odr_ok(o);
613 if (odr_sequence_of(o, (Odr_fun)z_StringOrNumeric, &(*p)->attributes,
614 &(*p)->num_attributes, 0))
617 return opt && odr_ok(o);
620 int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt,
623 static Odr_arm arm[] =
625 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_AttributeOcc_any_or_none,
626 (Odr_fun)odr_null, 0},
627 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_AttributeOcc_specific,
628 (Odr_fun)z_AttributeValueList, 0},
629 {-1, -1, -1, -1, 0, 0}
632 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
633 return opt && odr_ok(o);
635 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 0, 1) &&
636 odr_implicit(o, odr_integer, &(*p)->attributeType,
637 ODR_CONTEXT, 1, 0) &&
638 odr_implicit(o, odr_null, &(*p)->mustBeSupplied, ODR_CONTEXT, 2, 1) &&
639 odr_choice(o, arm, &(*p)->attributeValues, &(*p)->which, 0) &&
643 int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt, const char *name)
645 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
646 return opt && odr_ok(o);
648 odr_explicit(o, z_StringOrNumeric, &(*p)->value, ODR_CONTEXT, 0, 0) &&
649 odr_implicit(o, z_HumanString, &(*p)->description,
650 ODR_CONTEXT, 1, 1) &&
651 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
652 (odr_sequence_of(o, (Odr_fun)z_StringOrNumeric, &(*p)->subAttributes,
653 &(*p)->num_subAttributes, 0) || odr_ok(o)) &&
654 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
655 (odr_sequence_of(o, (Odr_fun)z_StringOrNumeric, &(*p)->superAttributes,
656 &(*p)->num_superAttributes, 0) || odr_ok(o)) &&
657 odr_implicit(o, odr_null, &(*p)->partialSupport, ODR_CONTEXT, 4, 1) &&
663 int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt, const char *name)
665 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
666 return opt && odr_ok(o);
668 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo,
669 ODR_CONTEXT, 0, 1) &&
670 odr_implicit(o, z_InternationalString, &(*p)->name,
671 ODR_CONTEXT, 1, 0) &&
672 odr_implicit(o, z_HumanString, &(*p)->recentNews,
673 ODR_CONTEXT, 2, 1) &&
674 odr_implicit(o, z_IconObject, &(*p)->icon,
675 ODR_CONTEXT, 3, 1) &&
676 odr_implicit(o, odr_bool, &(*p)->namedResultSets,
677 ODR_CONTEXT, 4, 0) &&
678 odr_implicit(o, odr_bool, &(*p)->multipleDBsearch,
679 ODR_CONTEXT, 5, 0) &&
680 odr_implicit(o, odr_integer, &(*p)->maxResultSets,
681 ODR_CONTEXT, 6, 1) &&
682 odr_implicit(o, odr_integer, &(*p)->maxResultSize,
683 ODR_CONTEXT, 7, 1) &&
684 odr_implicit(o, odr_integer, &(*p)->maxTerms,
685 ODR_CONTEXT, 8, 1) &&
686 odr_implicit(o, z_IntUnit, &(*p)->timeoutInterval,
687 ODR_CONTEXT, 9, 1) &&
688 odr_implicit(o, z_HumanString, &(*p)->welcomeMessage,
689 ODR_CONTEXT, 10, 1) &&
690 odr_implicit(o, z_ContactInfo, &(*p)->contactInfo,
691 ODR_CONTEXT, 11, 1) &&
692 odr_implicit(o, z_HumanString, &(*p)->description,
693 ODR_CONTEXT, 12, 1) &&
694 odr_implicit_settag(o, ODR_CONTEXT, 13) &&
695 (odr_sequence_of(o, z_InternationalString, &(*p)->nicknames,
696 &(*p)->num_nicknames, 0) || odr_ok(o)) &&
697 odr_implicit(o, z_HumanString, &(*p)->usageRest,
698 ODR_CONTEXT, 14, 1) &&
699 odr_implicit(o, z_HumanString, &(*p)->paymentAddr,
700 ODR_CONTEXT, 15, 1) &&
701 odr_implicit(o, z_HumanString, &(*p)->hours, ODR_CONTEXT, 16, 1) &&
702 odr_implicit_settag(o, ODR_CONTEXT, 17) &&
703 (odr_sequence_of(o, (Odr_fun)z_DatabaseList, &(*p)->dbCombinations,
704 &(*p)->num_dbCombinations, 0) || odr_ok(o)) &&
705 odr_implicit_settag(o, ODR_CONTEXT, 18) &&
706 (odr_sequence_of(o, (Odr_fun)z_NetworkAddress, &(*p)->addresses,
707 &(*p)->num_addresses, 0) || odr_ok(o)) &&
708 odr_implicit_settag (o, ODR_CONTEXT, 101) &&
709 (odr_sequence_of(o, (Odr_fun) z_InternationalString, &(*p)->languages,
710 &(*p)->num_languages, 0) || odr_ok(o)) &&
711 odr_implicit(o, z_AccessInfo, &(*p)->commonAccessInfo,
712 ODR_CONTEXT, 19, 1) &&
716 int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt, const char *name)
718 static Odr_arm arm[] =
720 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_DatabaseInfo_actualNumber,
721 (Odr_fun)odr_integer, 0},
722 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_DatabaseInfo_approxNumber,
723 (Odr_fun)odr_integer, 0},
724 {-1, -1, -1, -1, 0, 0}
727 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
728 return opt && odr_ok(o);
730 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
731 odr_implicit(o, z_DatabaseName, &(*p)->name, ODR_CONTEXT, 1, 0) &&
732 odr_implicit(o, odr_null, &(*p)->explainDatabase, ODR_CONTEXT, 2, 1) &&
733 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
734 (odr_sequence_of(o, z_DatabaseName, &(*p)->nicknames,
735 &(*p)->num_nicknames, 0) || odr_ok(o)) &&
736 odr_implicit(o, z_IconObject, &(*p)->icon, ODR_CONTEXT, 4, 1) &&
737 odr_implicit(o, odr_bool, &(*p)->userFee, ODR_CONTEXT, 5, 0) &&
738 odr_implicit(o, odr_bool, &(*p)->available, ODR_CONTEXT, 6, 0) &&
739 odr_implicit(o, z_HumanString, &(*p)->titleString,
740 ODR_CONTEXT, 7, 1) &&
741 odr_implicit_settag(o, ODR_CONTEXT, 8) &&
742 (odr_sequence_of(o, (Odr_fun)z_HumanString, &(*p)->keywords,
743 &(*p)->num_keywords, 0) || odr_ok(o)) &&
744 odr_implicit(o, z_HumanString, &(*p)->description,
745 ODR_CONTEXT, 9, 1) &&
746 odr_implicit(o, z_DatabaseList, &(*p)->associatedDbs,
747 ODR_CONTEXT, 10, 1) &&
748 odr_implicit(o, z_DatabaseList, &(*p)->subDbs, ODR_CONTEXT, 11, 1) &&
749 odr_implicit(o, z_HumanString, &(*p)->disclaimers,
750 ODR_CONTEXT, 12, 1) &&
751 odr_implicit(o, z_HumanString, &(*p)->news, ODR_CONTEXT, 13, 1) &&
752 ((odr_constructed_begin(o, &(*p)->u.actualNumber,
753 ODR_CONTEXT, 14, 0) &&
754 odr_choice(o, arm, &(*p)->u.actualNumber, &(*p)->which, 0) &&
755 odr_constructed_end(o)) || odr_ok(o)) &&
756 odr_implicit(o, z_HumanString, &(*p)->defaultOrder,
757 ODR_CONTEXT, 15, 1) &&
758 odr_implicit(o, odr_integer, &(*p)->avRecordSize,
759 ODR_CONTEXT, 16, 1) &&
760 odr_implicit(o, odr_integer, &(*p)->maxRecordSize,
761 ODR_CONTEXT, 17, 1) &&
762 odr_implicit(o, z_HumanString, &(*p)->hours, ODR_CONTEXT, 18, 1) &&
763 odr_implicit(o, z_HumanString, &(*p)->bestTime, ODR_CONTEXT, 19, 1) &&
764 odr_implicit(o, odr_generalizedtime, &(*p)->lastUpdate,
765 ODR_CONTEXT, 20, 1) &&
766 odr_implicit(o, z_IntUnit, &(*p)->updateInterval,
767 ODR_CONTEXT, 21, 1) &&
768 odr_implicit(o, z_HumanString, &(*p)->coverage, ODR_CONTEXT, 22, 1) &&
769 odr_implicit(o, odr_bool, &(*p)->proprietary, ODR_CONTEXT, 23, 1) &&
770 odr_implicit(o, z_HumanString, &(*p)->copyrightText,
771 ODR_CONTEXT, 24, 1) &&
772 odr_implicit(o, z_HumanString, &(*p)->copyrightNotice,
773 ODR_CONTEXT, 25, 1) &&
774 odr_implicit(o, z_ContactInfo, &(*p)->producerContactInfo,
775 ODR_CONTEXT, 26, 1) &&
776 odr_implicit(o, z_ContactInfo, &(*p)->supplierContactInfo,
777 ODR_CONTEXT, 27, 1) &&
778 odr_implicit(o, z_ContactInfo, &(*p)->submissionContactInfo,
779 ODR_CONTEXT, 28, 1) &&
780 odr_implicit(o, z_AccessInfo, &(*p)->accessInfo, ODR_CONTEXT, 29, 1) &&
784 int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt, const char *name)
786 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
789 odr_implicit(o, odr_integer, &(*p)->tagType, ODR_CONTEXT, 0, 0) &&
790 odr_implicit(o, odr_oid, &(*p)->tagSet, ODR_CONTEXT, 1, 1) &&
791 odr_implicit(o, odr_null, &(*p)->defaultTagType, ODR_CONTEXT, 2, 1) &&
795 int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt, const char *name)
797 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
798 return opt && odr_ok(o);
800 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
801 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 1, 0) &&
802 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
804 odr_implicit(o, z_HumanString, &(*p)->description,
805 ODR_CONTEXT, 3, 1) &&
806 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
807 (odr_sequence_of(o, (Odr_fun)z_TagTypeMapping, &(*p)->tagTypeMapping,
808 &(*p)->num_tagTypeMapping, 0) || odr_ok(o)) &&
809 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
810 (odr_sequence_of(o, (Odr_fun)z_ElementInfo, &(*p)->recordStructure,
811 &(*p)->num_recordStructure, 0) || odr_ok(o)) &&
815 int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt, const char *name)
817 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
818 return opt && odr_ok(o);
820 odr_implicit(o, z_InternationalString, &(*p)->elementName,
821 ODR_CONTEXT, 1, 0) &&
822 odr_implicit(o, z_Path, &(*p)->elementTagPath, ODR_CONTEXT, 2, 0) &&
823 odr_explicit(o, z_ElementDataType, &(*p)->dataType,
824 ODR_CONTEXT, 3, 1) &&
825 odr_implicit(o, odr_bool, &(*p)->required, ODR_CONTEXT, 4, 0) &&
826 odr_implicit(o, odr_bool, &(*p)->repeatable, ODR_CONTEXT, 5, 0) &&
827 odr_implicit(o, z_HumanString, &(*p)->description,
828 ODR_CONTEXT, 6, 1) &&
832 int z_PathUnit(ODR o, Z_PathUnit **p, int opt, const char *name)
834 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
837 odr_implicit(o, odr_integer, &(*p)->tagType, ODR_CONTEXT, 1, 0) &&
838 odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue,
839 ODR_CONTEXT, 2, 0) &&
843 int z_Path(ODR o, Z_Path **p, int opt, const char *name)
845 if (!odr_initmember(o, p, sizeof(**p)))
846 return opt && odr_ok(o);
847 odr_implicit_settag(o, ODR_CONTEXT, 201);
848 if (odr_sequence_of(o, (Odr_fun)z_OtherInformationUnit, &(*p)->list,
852 return opt && odr_ok(o);
855 int z_ElementInfoList(ODR o, Z_Path **p, int opt, const char *name)
857 if (!odr_initmember(o, p, sizeof(**p)))
858 return opt && odr_ok(o);
859 odr_implicit_settag(o, ODR_CONTEXT, 201);
860 if (odr_sequence_of(o, (Odr_fun)z_OtherInformationUnit, &(*p)->list,
864 return opt && odr_ok(o);
867 int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt, const char *name)
869 static Odr_arm arm[] =
871 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ElementDataType_primitive,
872 (Odr_fun)odr_integer, 0},
873 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ElementDataType_structured,
874 (Odr_fun)z_ElementInfoList, 0},
875 {-1, -1, -1, -1, 0, 0}
878 if (!odr_initmember(o, p, sizeof(**p)))
879 return opt && odr_ok(o);
880 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
883 return opt && odr_ok(o);
886 int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt,
889 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
892 odr_implicit(o, z_InternationalString, &(*p)->elementname,
893 ODR_CONTEXT, 1, 0) &&
894 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
895 (odr_sequence_of(o, z_InternationalString, &(*p)->nicknames,
896 &(*p)->num_nicknames, 0) || odr_ok(o)) &&
897 odr_explicit(o, z_StringOrNumeric, &(*p)->elementTag,
898 ODR_CONTEXT, 3, 0) &&
899 odr_implicit(o, z_HumanString, &(*p)->description,
900 ODR_CONTEXT, 4, 1) &&
901 odr_implicit(o, odr_integer, &(*p)->dataType, ODR_CONTEXT, 5, 1) &&
902 z_OtherInformation(o, &(*p)->otherTagInfo, 1, 0) &&
906 int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt, const char *name)
908 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
909 return opt && odr_ok(o);
911 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
912 odr_implicit(o, odr_oid, &(*p)->tagSet, ODR_CONTEXT, 1, 0) &&
913 odr_implicit(o, z_InternationalString, &(*p)->name,
914 ODR_CONTEXT, 2, 0) &&
915 odr_implicit(o, z_HumanString, &(*p)->description,
916 ODR_CONTEXT, 3, 1) &&
917 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
918 (odr_sequence_of(o, (Odr_fun)z_TagSetInfoElements, &(*p)->elements,
919 &(*p)->num_elements, 0) || odr_ok(o)) &&
923 int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt,
926 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
927 return opt && odr_ok(o);
929 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
930 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 1, 0) &&
931 odr_implicit(o, z_InternationalString, &(*p)->name,
932 ODR_CONTEXT, 2, 0) &&
933 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
934 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->transferSyntaxes,
935 &(*p)->num_transferSyntaxes, 0) || odr_ok(o)) &&
936 odr_implicit(o, z_HumanString, &(*p)->description,
937 ODR_CONTEXT, 4, 1) &&
938 odr_implicit(o, z_InternationalString, &(*p)->asn1Module,
939 ODR_CONTEXT, 5, 1) &&
940 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
941 (odr_sequence_of(o, (Odr_fun)z_ElementInfo, &(*p)->abstractStructure,
942 &(*p)->num_abstractStructure, 0) || odr_ok(o)) &&
946 int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt,
949 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
950 return opt && odr_ok(o);
952 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
953 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 1, 0) &&
954 odr_implicit(o, z_InternationalString, &(*p)->name,
955 ODR_CONTEXT, 2, 0) &&
956 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
957 (odr_sequence_of(o, (Odr_fun)z_AttributeType, &(*p)->attributes,
958 &(*p)->num_attributes, 0) || odr_ok(o)) &&
959 odr_implicit(o, z_HumanString, &(*p)->description,
960 ODR_CONTEXT, 4, 1) &&
964 int z_AttributeType(ODR o, Z_AttributeType **p, int opt, const char *name)
966 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
967 return opt && odr_ok(o);
969 odr_implicit(o, z_InternationalString, &(*p)->name,
970 ODR_CONTEXT, 0, 1) &&
971 odr_implicit(o, z_HumanString, &(*p)->description,
972 ODR_CONTEXT, 1, 1) &&
973 odr_implicit(o, odr_integer, &(*p)->attributeType,
974 ODR_CONTEXT, 2, 0) &&
975 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
976 odr_sequence_of(o, (Odr_fun)z_AttributeDescription,
977 &(*p)->attributeValues,
978 &(*p)->num_attributeValues, 0) &&
982 int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt,
985 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
986 return opt && odr_ok(o);
988 odr_implicit(o, z_InternationalString, &(*p)->name,
989 ODR_CONTEXT, 0, 1) &&
990 odr_implicit(o, z_HumanString, &(*p)->description,
991 ODR_CONTEXT, 1, 1) &&
992 odr_explicit(o, z_StringOrNumeric, &(*p)->attributeValue,
993 ODR_CONTEXT, 2, 0) &&
994 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
995 (odr_sequence_of(o, (Odr_fun)z_StringOrNumeric,
996 &(*p)->equivalentAttributes,
997 &(*p)->num_equivalentAttributes, 0) || odr_ok(o)) &&
1001 int z_TermListElement(ODR o, Z_TermListElement **p, int opt, const char *name)
1003 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1004 return opt && odr_ok(o);
1006 odr_implicit(o, z_InternationalString, &(*p)->name,
1007 ODR_CONTEXT, 1, 0) &&
1008 odr_implicit(o, z_HumanString, &(*p)->title, ODR_CONTEXT, 2, 1) &&
1009 odr_implicit(o, odr_integer, &(*p)->searchCost, ODR_CONTEXT, 3, 1) &&
1010 odr_implicit(o, odr_bool, &(*p)->scanable, ODR_CONTEXT, 4, 0) &&
1011 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
1012 (odr_sequence_of(o, z_InternationalString, &(*p)->broader,
1013 &(*p)->num_broader, 0) || odr_ok(o)) &&
1014 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
1015 (odr_sequence_of(o, z_InternationalString, &(*p)->narrower,
1016 &(*p)->num_narrower, 0) || odr_ok(o)) &&
1017 odr_sequence_end(o);
1020 int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt, const char *name)
1022 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1023 return opt && odr_ok(o);
1025 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1026 odr_implicit(o, z_DatabaseName, &(*p)->databaseName,
1027 ODR_CONTEXT, 1, 0) &&
1028 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1029 (odr_sequence_of(o, (Odr_fun)z_TermListElement, &(*p)->termLists,
1030 &(*p)->num_termLists, 0) || odr_ok(o)) &&
1031 odr_sequence_end(o);
1034 int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt,
1037 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1038 return opt && odr_ok(o);
1040 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1041 odr_implicit(o, odr_oid, &(*p)->type, ODR_CONTEXT, 1, 0) &&
1042 odr_implicit(o, z_InternationalString, &(*p)->name,
1043 ODR_CONTEXT, 2, 1) &&
1044 odr_implicit(o, odr_bool, &(*p)->privateType, ODR_CONTEXT, 3, 0) &&
1045 odr_implicit(o, odr_bool, &(*p)->restrictionsApply,
1046 ODR_CONTEXT, 5, 0) &&
1047 odr_implicit(o, odr_bool, &(*p)->feeApply, ODR_CONTEXT, 6, 0) &&
1048 odr_implicit(o, odr_bool, &(*p)->available, ODR_CONTEXT, 7, 0) &&
1049 odr_implicit(o, odr_bool, &(*p)->retentionSupported,
1050 ODR_CONTEXT, 8, 0) &&
1051 odr_implicit(o, odr_integer, &(*p)->waitAction, ODR_CONTEXT, 9, 0) &&
1052 odr_implicit(o, z_HumanString, &(*p)->description,
1053 ODR_CONTEXT, 10, 1) &&
1054 odr_implicit(o, z_External, &(*p)->specificExplain,
1055 ODR_CONTEXT, 11, 1) &&
1056 odr_implicit(o, z_InternationalString, &(*p)->esASN,
1057 ODR_CONTEXT, 12, 1) &&
1058 odr_sequence_end(o);
1061 int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt,
1064 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1065 return opt && odr_ok(o);
1067 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1068 odr_implicit(o, z_DatabaseName, &(*p)->databaseName,
1069 ODR_CONTEXT, 1, 0) &&
1070 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1071 (odr_sequence_of(o, (Odr_fun)z_AttributeSetDetails,
1072 &(*p)->attributesBySet,
1073 &(*p)->num_attributesBySet, 0) && odr_ok(o)) &&
1074 odr_implicit(o, z_AttributeCombinations, &(*p)->attributeCombinations,
1075 ODR_CONTEXT, 3, 1) &&
1076 odr_sequence_end(o);
1079 int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt,
1082 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1083 return opt && odr_ok(o);
1085 odr_implicit(o, odr_oid, &(*p)->attributeSet,
1086 ODR_CONTEXT, 0, 0) &&
1087 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
1088 odr_sequence_of(o, (Odr_fun)z_AttributeTypeDetails,
1089 &(*p)->attributesByType,
1090 &(*p)->num_attributesByType, 0) &&
1091 odr_sequence_end(o);
1094 int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt,
1097 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1098 return opt && odr_ok(o);
1100 odr_implicit(o, odr_integer, &(*p)->attributeType,
1101 ODR_CONTEXT, 0, 0) &&
1102 odr_implicit(o, z_OmittedAttributeInterpretation,
1103 &(*p)->defaultIfOmitted,
1104 ODR_CONTEXT, 1, 1) &&
1105 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1106 (odr_sequence_of(o, (Odr_fun)z_AttributeValue, &(*p)->attributeValues,
1107 &(*p)->num_attributeValues, 0) || odr_ok(o)) &&
1108 odr_sequence_end(o);
1111 int z_OmittedAttributeInterpretation(ODR o,
1112 Z_OmittedAttributeInterpretation **p,
1113 int opt, const char *name)
1115 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1116 return opt && odr_ok(o);
1118 odr_explicit(o, z_StringOrNumeric, &(*p)->defaultValue,
1119 ODR_CONTEXT, 0, 1) &&
1120 odr_implicit(o, z_HumanString, &(*p)->defaultDescription,
1121 ODR_CONTEXT, 1, 1) &&
1122 odr_sequence_end(o);
1125 int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt, const char *name)
1127 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1128 return opt && odr_ok(o);
1130 odr_implicit(o, odr_integer, &(*p)->maxStepSize, ODR_CONTEXT, 0, 1) &&
1131 odr_implicit(o, z_HumanString, &(*p)->collatingSequence,
1132 ODR_CONTEXT, 1, 1) &&
1133 odr_implicit(o, odr_bool, &(*p)->increasing, ODR_CONTEXT, 2, 1) &&
1134 odr_sequence_end(o);
1137 int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt, const char *name)
1139 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1140 return opt && odr_ok(o);
1142 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1143 odr_implicit(o, z_InternationalString, &(*p)->termListName,
1144 ODR_CONTEXT, 1, 0) &&
1145 odr_implicit(o, z_HumanString, &(*p)->description,
1146 ODR_CONTEXT, 2, 1) &&
1147 odr_implicit(o, z_AttributeCombinations, &(*p)->attributes,
1148 ODR_CONTEXT, 3, 1) &&
1149 odr_implicit(o, z_EScanInfo, &(*p)->scanInfo, ODR_CONTEXT, 4, 1) &&
1150 odr_implicit(o, odr_integer, &(*p)->estNumberTerms,
1151 ODR_CONTEXT, 5, 1) &&
1152 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
1153 (odr_sequence_of(o, (Odr_fun)z_Term, &(*p)->sampleTerms,
1154 &(*p)->num_sampleTerms, 0) || odr_ok(o)) &&
1155 odr_sequence_end(o);
1158 int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt,
1161 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1162 return opt && odr_ok(o);
1164 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1165 odr_implicit(o, z_DatabaseName, &(*p)->databaseName,
1166 ODR_CONTEXT, 1, 0) &&
1167 odr_implicit(o, z_ElementSetName, &(*p)->elementSetName,
1168 ODR_CONTEXT, 2, 0) &&
1169 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 3, 0) &&
1170 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 4, 0) &&
1171 odr_implicit(o, z_HumanString, &(*p)->description,
1172 ODR_CONTEXT, 5, 1) &&
1173 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
1174 (odr_sequence_of(o, (Odr_fun)z_PerElementDetails,
1175 &(*p)->detailsPerElement,
1176 &(*p)->num_detailsPerElement, 0) || odr_ok(o)) &&
1177 odr_sequence_end(o);
1180 int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt,
1183 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1184 return opt && odr_ok(o);
1186 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1187 odr_implicit(o, z_DatabaseName, &(*p)->databaseName,
1188 ODR_CONTEXT, 1, 0) &&
1189 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 2, 0) &&
1190 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 3, 0) &&
1191 odr_implicit(o, z_HumanString, &(*p)->description,
1192 ODR_CONTEXT, 4, 1) &&
1193 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
1194 (odr_sequence_of(o, (Odr_fun)z_PerElementDetails,
1195 &(*p)->detailsPerElement,
1196 &(*p)->num_detailsPerElement, 0) || odr_ok(o)) &&
1197 odr_sequence_end(o);
1200 int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt,
1203 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1204 return opt && odr_ok(o);
1206 odr_implicit(o, z_InternationalString, &(*p)->name,
1207 ODR_CONTEXT, 0, 1) &&
1208 odr_implicit(o, z_RecordTag, &(*p)->recordTag, ODR_CONTEXT, 1, 1) &&
1209 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1210 (odr_sequence_of(o, (Odr_fun)z_Path, &(*p)->schemaTags,
1211 &(*p)->num_schemaTags, 0) ||
1213 odr_implicit(o, odr_integer, &(*p)->maxSize, ODR_CONTEXT, 3, 1) &&
1214 odr_implicit(o, odr_integer, &(*p)->minSize, ODR_CONTEXT, 4, 1) &&
1215 odr_implicit(o, odr_integer, &(*p)->avgSize, ODR_CONTEXT, 5, 1) &&
1216 odr_implicit(o, odr_integer, &(*p)->fixedSize, ODR_CONTEXT, 6, 1) &&
1217 odr_implicit(o, odr_bool, &(*p)->repeatable, ODR_CONTEXT, 8, 0) &&
1218 odr_implicit(o, odr_bool, &(*p)->required, ODR_CONTEXT, 9, 0) &&
1219 odr_implicit(o, z_HumanString, &(*p)->description,
1220 ODR_CONTEXT, 12, 1) &&
1221 odr_implicit(o, z_HumanString, &(*p)->contents, ODR_CONTEXT, 13, 1) &&
1222 odr_implicit(o, z_HumanString, &(*p)->billingInfo,
1223 ODR_CONTEXT, 14, 1) &&
1224 odr_implicit(o, z_HumanString, &(*p)->restrictions,
1225 ODR_CONTEXT, 15, 1) &&
1226 odr_implicit_settag(o, ODR_CONTEXT, 16) &&
1227 (odr_sequence_of(o, z_InternationalString, &(*p)->alternateNames,
1228 &(*p)->num_alternateNames, 0) || odr_ok(o)) &&
1229 odr_implicit_settag(o, ODR_CONTEXT, 17) &&
1230 (odr_sequence_of(o, z_InternationalString, &(*p)->genericNames,
1231 &(*p)->num_genericNames, 0) || odr_ok(o)) &&
1232 odr_implicit(o, z_AttributeCombinations, &(*p)->searchAccess,
1233 ODR_CONTEXT, 18, 1) &&
1234 odr_sequence_end(o);
1237 int z_RecordTag(ODR o, Z_RecordTag **p, int opt, const char *name)
1239 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1240 return opt && odr_ok(o);
1242 odr_explicit(o, z_StringOrNumeric, &(*p)->qualifier,
1243 ODR_CONTEXT, 0, 1) &&
1244 odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue,
1245 ODR_CONTEXT, 1, 0) &&
1246 odr_sequence_end(o);
1249 int z_SortDetails(ODR o, Z_SortDetails **p, int opt, const char *name)
1251 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1252 return opt && odr_ok(o);
1254 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1255 odr_implicit(o, z_DatabaseName, &(*p)->databaseName,
1256 ODR_CONTEXT, 1, 0) &&
1257 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1258 (odr_sequence_of(o, (Odr_fun)z_SortKeyDetails, &(*p)->sortKeys,
1259 &(*p)->num_sortKeys, 0) || odr_ok(o)) &&
1260 odr_sequence_end(o);
1263 int z_SortKeyDetails (ODR o, Z_SortKeyDetails **p, int opt, const char *name)
1265 static Odr_arm arm[] = {
1266 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetails_character,
1267 (Odr_fun) odr_null, 0},
1268 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_SortKeyDetails_numeric,
1269 (Odr_fun) odr_null, 0},
1270 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_SortKeyDetails_structured,
1271 (Odr_fun) z_HumanString, 0},
1272 {-1, -1, -1, -1, (Odr_fun) 0, 0}
1274 if (!odr_sequence_begin (o, p, sizeof(**p), 0))
1275 return opt && odr_ok (o);
1277 odr_implicit (o, z_HumanString,
1278 &(*p)->description, ODR_CONTEXT, 0, 1) &&
1279 odr_implicit_settag (o, ODR_CONTEXT, 1) &&
1280 (odr_sequence_of(o, (Odr_fun) z_Specification,
1281 &(*p)->elementSpecifications,
1282 &(*p)->num_elementSpecifications, 0) || odr_ok(o)) &&
1283 odr_implicit (o, z_AttributeCombinations,
1284 &(*p)->attributeSpecifications, ODR_CONTEXT, 2, 1) &&
1285 ((odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 3, 0) &&
1286 odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) &&
1287 odr_constructed_end (o)) || odr_ok(o)) &&
1288 odr_implicit (o, odr_integer,
1289 &(*p)->caseSensitivity, ODR_CONTEXT, 4, 1) &&
1290 odr_sequence_end (o);
1293 int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt,
1296 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1297 return opt && odr_ok(o);
1299 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1300 odr_implicit(o, z_DatabaseName, &(*p)->databaseName,
1301 ODR_CONTEXT, 1, 0) &&
1302 odr_implicit(o, odr_integer, &(*p)->processingContext,
1303 ODR_CONTEXT, 2, 0) &&
1304 odr_implicit(o, z_InternationalString, &(*p)->name,
1305 ODR_CONTEXT, 3, 0) &&
1306 odr_implicit(o, odr_oid, &(*p)->oid, ODR_CONTEXT, 4, 0) &&
1307 odr_implicit(o, z_HumanString, &(*p)->description,
1308 ODR_CONTEXT, 5, 1) &&
1309 odr_implicit(o, z_External, &(*p)->instructions, ODR_CONTEXT, 6, 1) &&
1310 odr_sequence_end(o);
1313 int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt, const char *name)
1315 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1316 return opt && odr_ok(o);
1318 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1319 odr_implicit(o, odr_oid, &(*p)->variantSet, ODR_CONTEXT, 1, 0) &&
1320 odr_implicit(o, z_InternationalString, &(*p)->name,
1321 ODR_CONTEXT, 2, 0) &&
1322 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1323 (odr_sequence_of(o, (Odr_fun)z_VariantClass, &(*p)->variants,
1324 &(*p)->num_variants, 0) || odr_ok(o)) &&
1325 odr_sequence_end(o);
1328 int z_VariantClass(ODR o, Z_VariantClass **p, int opt, const char *name)
1330 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1331 return opt && odr_ok(o);
1333 odr_implicit(o, z_InternationalString, &(*p)->name,
1334 ODR_CONTEXT, 0, 1) &&
1335 odr_implicit(o, z_HumanString, &(*p)->description,
1336 ODR_CONTEXT, 1, 1) &&
1337 odr_implicit(o, odr_integer, &(*p)->variantClass, ODR_CONTEXT, 2, 0) &&
1338 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1339 odr_sequence_of(o, (Odr_fun)z_VariantType, &(*p)->variantTypes,
1340 &(*p)->num_variantTypes, 0) &&
1341 odr_sequence_end(o);
1344 int z_VariantType(ODR o, Z_VariantType **p, int opt, const char *name)
1346 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1347 return opt && odr_ok(o);
1349 odr_implicit(o, z_InternationalString, &(*p)->name,
1350 ODR_CONTEXT, 0, 1) &&
1351 odr_implicit(o, z_HumanString, &(*p)->description,
1352 ODR_CONTEXT, 1, 1) &&
1353 odr_implicit(o, odr_integer, &(*p)->variantType,
1354 ODR_CONTEXT, 2, 0) &&
1355 odr_implicit(o, z_VariantValue, &(*p)->variantValue,
1356 ODR_CONTEXT, 3, 1) &&
1357 odr_sequence_end(o);
1360 int z_VariantValue(ODR o, Z_VariantValue **p, int opt, const char *name)
1362 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1363 return opt && odr_ok(o);
1365 odr_explicit(o, odr_integer, &(*p)->dataType, ODR_CONTEXT, 0, 0) &&
1366 odr_explicit(o, z_ValueSet, &(*p)->values, ODR_CONTEXT, 1, 1) &&
1367 odr_sequence_end(o);
1370 int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt,
1373 if (!odr_initmember(o, p, sizeof(**p)))
1374 return opt && odr_ok(o);
1375 if (odr_sequence_of(o, (Odr_fun)z_ValueDescription, &(*p)->elements,
1379 return opt && odr_ok(o);
1382 int z_ValueSet(ODR o, Z_ValueSet **p, int opt, const char *name)
1384 static Odr_arm arm[] =
1386 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ValueSet_range,
1387 (Odr_fun)z_ValueRange, 0},
1388 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueSet_enumerated,
1389 (Odr_fun)z_ValueSetEnumerated, 0},
1390 {-1, -1, -1, -1, 0, 0}
1393 if (!odr_initmember(o, p, sizeof(**p)))
1394 return opt && odr_ok(o);
1395 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
1398 return opt && odr_ok(o);
1401 int z_ValueRange(ODR o, Z_ValueRange **p, int opt, const char *name)
1403 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1404 return opt && odr_ok(o);
1406 odr_explicit(o, z_ValueDescription, &(*p)->lower, ODR_CONTEXT, 0, 1) &&
1407 odr_explicit(o, z_ValueDescription, &(*p)->upper, ODR_CONTEXT, 1, 1) &&
1408 odr_sequence_end(o);
1411 int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt,
1414 static Odr_arm arm[] =
1416 {ODR_NONE, -1, -1, Z_ValueDescription_integer,
1417 (Odr_fun)odr_integer, 0},
1418 {ODR_NONE, -1, -1, Z_ValueDescription_string,
1419 (Odr_fun)z_InternationalString, 0},
1420 {ODR_NONE, -1, -1, Z_ValueDescription_octets,
1421 (Odr_fun)odr_octetstring, 0},
1422 {ODR_NONE, -1, -1, Z_ValueDescription_oid,
1423 (Odr_fun)odr_oid, 0},
1424 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueDescription_unit,
1425 (Odr_fun)z_Unit, 0},
1426 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ValueDescription_valueAndUnit,
1427 (Odr_fun)z_IntUnit, 0},
1428 {-1, -1, -1, -1, 0, 0}
1431 if (!odr_initmember(o, p, sizeof(**p)))
1432 return opt && odr_ok(o);
1433 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
1436 return opt && odr_ok(o);
1439 int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt, const char *name)
1441 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1442 return opt && odr_ok(o);
1444 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1445 odr_implicit(o, z_InternationalString, &(*p)->unitSystem,
1446 ODR_CONTEXT, 1, 0) &&
1447 odr_implicit(o, z_HumanString, &(*p)->description,
1448 ODR_CONTEXT, 2, 1) &&
1449 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1450 (odr_sequence_of(o, (Odr_fun)z_UnitType, &(*p)->units,
1451 &(*p)->num_units, 0) ||
1453 odr_sequence_end(o);
1456 int z_UnitType(ODR o, Z_UnitType **p, int opt, const char *name)
1458 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1459 return opt && odr_ok(o);
1461 odr_implicit(o, z_InternationalString, &(*p)->name,
1462 ODR_CONTEXT, 0, 1) &&
1463 odr_implicit(o, z_HumanString, &(*p)->description,
1464 ODR_CONTEXT, 1, 1) &&
1465 odr_explicit(o, z_StringOrNumeric, &(*p)->unitType,
1466 ODR_CONTEXT, 2, 0) &&
1467 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1468 odr_sequence_of(o, (Odr_fun)z_Units, &(*p)->units,
1469 &(*p)->num_units, 0) &&
1470 odr_sequence_end(o);
1473 int z_Units(ODR o, Z_Units **p, int opt, const char *name)
1475 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1476 return opt && odr_ok(o);
1478 odr_implicit(o, z_InternationalString, &(*p)->name,
1479 ODR_CONTEXT, 0, 1) &&
1480 odr_implicit(o, z_HumanString, &(*p)->description,
1481 ODR_CONTEXT, 1, 1) &&
1482 odr_explicit(o, z_StringOrNumeric, &(*p)->unit,
1483 ODR_CONTEXT, 2, 0) &&
1484 odr_sequence_end(o);
1487 int z_CategoryList(ODR o, Z_CategoryList **p, int opt, const char *name)
1489 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1490 return opt && odr_ok(o);
1492 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1493 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
1494 odr_sequence_of(o, (Odr_fun)z_CategoryInfo, &(*p)->categories,
1495 &(*p)->num_categories, 0) &&
1496 odr_sequence_end(o);
1499 int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt, const char *name)
1501 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1502 return opt && odr_ok(o);
1504 odr_implicit(o, z_InternationalString, &(*p)->category,
1505 ODR_CONTEXT, 1, 0) &&
1506 odr_implicit(o, z_InternationalString, &(*p)->originalCategory,
1507 ODR_CONTEXT, 2, 1) &&
1508 odr_implicit(o, z_HumanString, &(*p)->description,
1509 ODR_CONTEXT, 3, 1) &&
1510 odr_implicit(o, z_InternationalString, &(*p)->asn1Module,
1511 ODR_CONTEXT, 4, 1) &&
1512 odr_sequence_end(o);
1515 int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt, const char *name)
1517 static Odr_arm arm[] =
1519 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Explain_targetInfo,
1520 (Odr_fun)z_TargetInfo, 0},
1521 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Explain_databaseInfo,
1522 (Odr_fun)z_DatabaseInfo, 0},
1523 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_Explain_schemaInfo,
1524 (Odr_fun)z_SchemaInfo, 0},
1525 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_Explain_tagSetInfo,
1526 (Odr_fun)z_TagSetInfo, 0},
1527 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_Explain_recordSyntaxInfo,
1528 (Odr_fun)z_RecordSyntaxInfo, 0},
1529 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_Explain_attributeSetInfo,
1530 (Odr_fun)z_AttributeSetInfo, 0},
1531 {ODR_IMPLICIT, ODR_CONTEXT, 6, Z_Explain_termListInfo,
1532 (Odr_fun)z_TermListInfo, 0},
1533 {ODR_IMPLICIT, ODR_CONTEXT, 7, Z_Explain_extendedServicesInfo,
1534 (Odr_fun)z_ExtendedServicesInfo, 0},
1535 {ODR_IMPLICIT, ODR_CONTEXT, 8, Z_Explain_attributeDetails,
1536 (Odr_fun)z_AttributeDetails, 0},
1537 {ODR_IMPLICIT, ODR_CONTEXT, 9, Z_Explain_termListDetails,
1538 (Odr_fun)z_TermListDetails, 0},
1539 {ODR_IMPLICIT, ODR_CONTEXT, 10, Z_Explain_elementSetDetails,
1540 (Odr_fun)z_ElementSetDetails, 0},
1541 {ODR_IMPLICIT, ODR_CONTEXT, 11, Z_Explain_retrievalRecordDetails,
1542 (Odr_fun)z_RetrievalRecordDetails, 0},
1543 {ODR_IMPLICIT, ODR_CONTEXT, 12, Z_Explain_sortDetails,
1544 (Odr_fun)z_SortDetails, 0},
1545 {ODR_IMPLICIT, ODR_CONTEXT, 13, Z_Explain_processing,
1546 (Odr_fun)z_ProcessingInformation, 0},
1547 {ODR_IMPLICIT, ODR_CONTEXT, 14, Z_Explain_variants,
1548 (Odr_fun)z_VariantSetInfo, 0},
1549 {ODR_IMPLICIT, ODR_CONTEXT, 15, Z_Explain_units,
1550 (Odr_fun)z_UnitInfo, 0},
1551 {ODR_IMPLICIT, ODR_CONTEXT, 100, Z_Explain_categoryList,
1552 (Odr_fun)z_CategoryList, 0},
1553 {-1, -1, -1, -1, 0, 0}
1556 if (!odr_initmember(o, p, sizeof(**p)))
1557 return opt && odr_ok(o);
1558 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
1561 return opt && odr_ok(o);