2 * Copyright (c) 1995-1999, Index Data.
3 * See the file LICENSE for details.
4 * Sebastian Hammer, Adam Dickmeiss
7 * Revision 1.13 1999-11-30 13:47:11 adam
8 * Improved installation. Moved header files to include/yaz.
10 * Revision 1.12 1999/04/20 09:56:48 adam
11 * Added 'name' paramter to encoder/decoder routines (typedef Odr_fun).
12 * Modified all encoders/decoders to reflect this change.
14 * Revision 1.11 1999/03/18 12:57:13 adam
15 * Fixed bug in TargetInfo encoder/decoder.
17 * Revision 1.10 1998/05/18 13:06:52 adam
18 * Changed the way attribute sets are handled by the retriaval module.
19 * Extended Explain conversion / schema.
20 * Modified server and client to work with ASN.1 compiled protocol handlers.
22 * Revision 1.9 1998/02/11 11:53:32 adam
23 * Changed code so that it compiles as C++.
25 * Revision 1.8 1996/01/02 11:46:41 quinn
26 * Changed 'operator' to 'roperator' to avoid C++ conflict.
28 * Revision 1.7 1995/12/14 16:28:07 quinn
31 * Revision 1.6 1995/12/14 11:09:09 quinn
32 * Fixed bug in tagging.
34 * Revision 1.5 1995/12/05 11:15:50 quinn
37 * Revision 1.4 1995/09/29 17:11:54 quinn
40 * Revision 1.3 1995/09/27 15:02:42 quinn
41 * Modified function heads & prototypes.
43 * Revision 1.2 1995/08/15 11:59:43 quinn
46 * Revision 1.1 1995/08/10 08:54:02 quinn
52 #include <yaz/proto.h>
54 int z_LanguageCode(ODR o, char **p, int opt, const char *name);
55 int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt, const char *name);
56 int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt, const char *name);
57 int z_HumanString(ODR o, Z_HumanString **p, int opt, const char *name);
58 int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt, const char *name);
59 int z_IconObject(ODR o, Z_IconObject **p, int opt, const char *name);
60 int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt, const char *name);
61 int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt,
63 int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt,
65 int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt,
67 int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt, const char *name);
68 int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt, const char *name);
69 int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt,
71 int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt,
73 int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt,
75 int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt, const char *name);
76 int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt,
78 int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt,
80 int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt, const char *name);
81 int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt,
83 int z_SearchKey(ODR o, Z_SearchKey **p, int opt, const char *name);
84 int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt,
86 int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt,
88 int z_CostsOtherCharge(ODR o, Z_CostsOtherCharge **p, int opt,
90 int z_Costs(ODR o, Z_Costs **p, int opt, const char *name);
91 int z_Charge(ODR o, Z_Charge **p, int opt, const char *name);
92 int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt, const char *name);
93 int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt,
95 int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt,
97 int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt,
99 int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt,
101 int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt, const char *name);
102 int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt, const char *name);
103 int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt, const char *name);
104 int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt, const char *name);
105 int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt, const char *name);
106 int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt, const char *name);
107 int z_PathUnit(ODR o, Z_PathUnit **p, int opt, const char *name);
108 int z_Path(ODR o, Z_Path **p, int opt, const char *name);
109 int z_ElementInfoList(ODR o, Z_Path **p, int opt, const char *name);
110 int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt, const char *name);
111 int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt,
113 int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt, const char *name);
114 int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt,
116 int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt,
118 int z_AttributeType(ODR o, Z_AttributeType **p, int opt, const char *name);
119 int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt,
121 int z_TermListElement(ODR o, Z_TermListElement **p, int opt, const char *name);
122 int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt, const char *name);
123 int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt,
125 int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt,
127 int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt,
129 int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt,
131 int z_OmittedAttributeInterpretation(ODR o,
132 Z_OmittedAttributeInterpretation **p,
133 int opt, const char *name);
134 int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt, const char *name);
135 int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt, const char *name);
136 int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt,
138 int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt,
140 int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt,
142 int z_RecordTag(ODR o, Z_RecordTag **p, int opt, const char *name);
143 int z_SortDetails(ODR o, Z_SortDetails **p, int opt, const char *name);
144 int z_SortKeyDetails(ODR o, Z_SortKeyDetails **p, int opt, const char *name);
145 int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt,
147 int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt, const char *name);
148 int z_VariantClass(ODR o, Z_VariantClass **p, int opt, const char *name);
149 int z_VariantType(ODR o, Z_VariantType **p, int opt, const char *name);
150 int z_VariantValue(ODR o, Z_VariantValue **p, int opt, const char *name);
151 int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt,
153 int z_ValueSet(ODR o, Z_ValueSet **p, int opt, const char *name);
154 int z_ValueRange(ODR o, Z_ValueRange **p, int opt, const char *name);
155 int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt,
157 int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt, const char *name);
158 int z_UnitType(ODR o, Z_UnitType **p, int opt, const char *name);
159 int z_Units(ODR o, Z_Units **p, int opt, const char *name);
160 int z_CategoryList(ODR o, Z_CategoryList **p, int opt, const char *name);
161 int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt, const char *name);
162 int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt, const char *name);
164 int z_LanguageCode(ODR o, char **p, int opt, const char *name)
166 return z_InternationalString(o, p, opt, 0);
169 int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt, const char *name)
171 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
172 return opt && odr_ok(o);
174 odr_implicit(o, odr_generalizedtime, &(*p)->dateAdded,
175 ODR_CONTEXT, 0, 1) &&
176 odr_implicit(o, odr_generalizedtime, &(*p)->dateChanged,
177 ODR_CONTEXT, 1, 1) &&
178 odr_implicit(o, odr_generalizedtime, &(*p)->expiry,
179 ODR_CONTEXT, 2, 1) &&
180 odr_implicit(o, z_LanguageCode, &(*p)->humanStringLanguage,
181 ODR_CONTEXT, 3, 1) &&
182 z_OtherInformation(o, &(*p)->otherInfo, 1, 0) &&
186 int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt, const char *name)
188 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
189 return opt && odr_ok(o);
191 odr_implicit(o, z_LanguageCode, &(*p)->language, ODR_CONTEXT, 0, 1) &&
192 odr_implicit(o, z_InternationalString, &(*p)->text, ODR_CONTEXT,
197 int z_HumanString(ODR o, Z_HumanString **p, int opt, const char *name)
199 if (!odr_initmember(o, p, sizeof(**p)))
200 return opt && odr_ok(o);
201 if (odr_sequence_of(o, (Odr_fun)z_HumanStringUnit, &(*p)->strings,
202 &(*p)->num_strings, 0))
205 return opt && odr_ok(o);
208 int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt, const char *name)
210 static Odr_arm arm[] =
212 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IconObjectUnit_ianaType,
213 z_InternationalString, 0},
214 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IconObjectUnit_z3950type,
215 z_InternationalString, 0},
216 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IconObjectUnit_otherType,
217 z_InternationalString, 0},
218 {-1, -1, -1, -1, 0, 0}
221 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
222 return opt && odr_ok(o);
224 odr_constructed_begin(o, &(*p)->bodyType, ODR_CONTEXT, 1, 0) &&
225 odr_choice(o, arm, &(*p)->bodyType, &(*p)->which, 0) &&
226 odr_constructed_end(o) &&
227 odr_implicit(o, odr_octetstring, &(*p)->content, ODR_CONTEXT, 2, 0) &&
231 int z_IconObject(ODR o, Z_IconObject **p, int opt, const char *name)
233 if (!odr_initmember(o, p, sizeof(**p)))
234 return opt && odr_ok(o);
235 if (odr_sequence_of(o, (Odr_fun)z_IconObjectUnit, &(*p)->elements,
239 return opt && odr_ok(o);
242 int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt, const char *name)
244 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
245 return opt && odr_ok(o);
247 odr_implicit(o, z_InternationalString, &(*p)->name,
248 ODR_CONTEXT, 0, 1) &&
249 odr_implicit(o, z_HumanString, &(*p)->description,
250 ODR_CONTEXT, 1, 1) &&
251 odr_implicit(o, z_HumanString, &(*p)->address,
252 ODR_CONTEXT, 2, 1) &&
253 odr_implicit(o, z_InternationalString, &(*p)->email,
254 ODR_CONTEXT, 3, 1) &&
255 odr_implicit(o, z_InternationalString, &(*p)->phone,
256 ODR_CONTEXT, 4, 1) &&
260 int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt,
263 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
266 odr_implicit(o, z_InternationalString, &(*p)->hostAddress,
267 ODR_CONTEXT, 0, 0) &&
268 odr_implicit(o, odr_integer, &(*p)->port, ODR_CONTEXT, 1, 0) &&
272 int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt,
275 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
278 odr_implicit(o, z_InternationalString, &(*p)->pSel,
279 ODR_CONTEXT, 0, 0) &&
280 odr_implicit(o, z_InternationalString, &(*p)->sSel,
281 ODR_CONTEXT, 1, 1) &&
282 odr_implicit(o, z_InternationalString, &(*p)->tSel,
283 ODR_CONTEXT, 2, 1) &&
284 odr_implicit(o, z_InternationalString, &(*p)->nSap,
285 ODR_CONTEXT, 3, 0) &&
289 int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt,
292 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
295 odr_implicit(o, z_InternationalString, &(*p)->type,
296 ODR_CONTEXT, 0, 0) &&
297 odr_implicit(o, z_InternationalString, &(*p)->address,
298 ODR_CONTEXT, 1, 0) &&
302 int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt, const char *name)
304 static Odr_arm arm[] =
306 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_NetworkAddress_iA,
307 (Odr_fun)z_NetworkAddressIA, 0},
308 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_NetworkAddress_oPA,
309 (Odr_fun)z_NetworkAddressOPA, 0},
310 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_NetworkAddress_other,
311 (Odr_fun)z_NetworkAddressOther, 0},
312 {-1, -1, -1, -1, 0, 0}
315 if (!odr_initmember(o, p, sizeof(**p)))
316 return opt && odr_ok(o);
317 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
320 return opt && odr_ok(o);
323 int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt, const char *name)
325 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
326 return opt && odr_ok(o);
328 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
329 (odr_sequence_of(o, (Odr_fun)z_QueryTypeDetails,
330 &(*p)->queryTypesSupported,
331 &(*p)->num_queryTypesSupported, 0) || odr_ok(o)) &&
332 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
333 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->diagnosticsSets,
334 &(*p)->num_diagnosticsSets, 0) || odr_ok(o)) &&
335 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
336 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->attributeSetIds,
337 &(*p)->num_attributeSetIds, 0) || odr_ok(o)) &&
338 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
339 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->schemas,
340 &(*p)->num_schemas, 0) ||
342 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
343 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->recordSyntaxes,
344 &(*p)->num_recordSyntaxes, 0) || odr_ok(o)) &&
345 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
346 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->resourceChallenges,
347 &(*p)->num_resourceChallenges, 0) || odr_ok(o)) &&
348 odr_implicit(o, z_AccessRestrictions, &(*p)->restrictedAccess,
349 ODR_CONTEXT, 6, 1) &&
350 odr_implicit(o, z_Costs, &(*p)->costInfo, ODR_CONTEXT, 8, 1) &&
351 odr_implicit_settag(o, ODR_CONTEXT, 9) &&
352 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->variantSets,
353 &(*p)->num_variantSets, 0) || odr_ok(o)) &&
354 odr_implicit_settag(o, ODR_CONTEXT, 10) &&
355 (odr_sequence_of(o, (Odr_fun)z_ElementSetName, &(*p)->elementSetNames,
356 &(*p)->num_elementSetNames, 0) || odr_ok(o)) &&
357 odr_implicit_settag(o, ODR_CONTEXT, 11) &&
358 (odr_sequence_of(o, (Odr_fun)z_InternationalString, &(*p)->unitSystems,
359 &(*p)->num_unitSystems, 0) || odr_ok(o)) &&
363 int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt,
366 static Odr_arm arm[] =
368 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_QueryTypeDetails_private,
369 (Odr_fun)z_PrivateCapabilities, 0},
370 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_QueryTypeDetails_rpn,
371 (Odr_fun)z_RpnCapabilities, 0},
372 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_QueryTypeDetails_iso8777,
373 (Odr_fun)z_Iso8777Capabilities, 0},
374 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_QueryTypeDetails_z39_58,
375 (Odr_fun)z_HumanString, 0},
376 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_QueryTypeDetails_erpn,
377 (Odr_fun)z_RpnCapabilities, 0},
378 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_QueryTypeDetails_rankedList,
379 (Odr_fun)z_HumanString, 0},
380 {-1, -1, -1, -1, 0, 0}
383 if (!odr_initmember(o, p, sizeof(**p)))
384 return opt && odr_ok(o);
385 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
388 return opt && odr_ok(o);
391 int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt,
394 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
395 return opt && odr_ok(o);
397 odr_implicit(o, z_InternationalString, &(*p)->roperator,
398 ODR_CONTEXT, 0, 0) &&
399 odr_implicit(o, z_HumanString, &(*p)->description,
400 ODR_CONTEXT, 1, 1) &&
404 int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt,
407 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
408 return opt && odr_ok(o);
410 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
411 (odr_sequence_of(o, (Odr_fun)z_PrivateCapOperator, &(*p)->operators,
412 &(*p)->num_operators, 0) || odr_ok(o)) &&
413 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
414 (odr_sequence_of(o, (Odr_fun)z_SearchKey, &(*p)->searchKeys,
415 &(*p)->num_searchKeys, 0) || odr_ok(o)) &&
416 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
417 (odr_sequence_of(o, (Odr_fun)z_HumanString, &(*p)->description,
418 &(*p)->num_description, 0) || odr_ok(o)) &&
422 int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt, const char *name)
424 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
425 return opt && odr_ok(o);
427 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
428 (odr_sequence_of(o, (Odr_fun)odr_integer, &(*p)->operators,
429 &(*p)->num_operators, 0) || odr_ok(o)) &&
430 odr_implicit(o, odr_bool, &(*p)->resultSetAsOperandSupported,
431 ODR_CONTEXT, 1, 0) &&
432 odr_implicit(o, odr_bool, &(*p)->restrictionOperandSupported,
433 ODR_CONTEXT, 2, 0) &&
434 odr_implicit(o, z_ProximitySupport, &(*p)->proximity, ODR_CONTEXT,
439 int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt,
442 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
443 return opt && odr_ok(o);
445 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
446 odr_sequence_of(o, (Odr_fun)z_SearchKey, &(*p)->searchKeys,
447 &(*p)->num_searchKeys, 0) &&
448 odr_implicit(o, z_HumanString, &(*p)->restrictions, ODR_CONTEXT,
453 int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt,
456 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
457 return opt && odr_ok(o);
459 odr_implicit(o, odr_integer, &(*p)->unit, ODR_CONTEXT, 0, 0) &&
460 odr_implicit(o, z_HumanString, &(*p)->description,
461 ODR_CONTEXT, 1, 1) &&
465 int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt, const char *name)
467 static Odr_arm arm[] =
469 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ProxSupportUnit_known,
470 (Odr_fun)odr_integer, 0},
471 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ProxSupportUnit_private,
472 (Odr_fun)z_ProxSupportPrivate, 0},
473 {-1, -1, -1, -1, 0, 0}
476 if (!odr_initmember(o, p, sizeof(**p)))
477 return opt && odr_ok(o);
478 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
481 return opt && odr_ok(o);
484 int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt,
487 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
488 return opt && odr_ok(o);
490 odr_implicit(o, odr_bool, &(*p)->anySupport, ODR_CONTEXT, 0, 0) &&
491 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
492 (odr_sequence_of(o, (Odr_fun)z_ProxSupportUnit, &(*p)->unitsSupported,
493 &(*p)->num_unitsSupported, 0) || odr_ok(o)) &&
497 int z_SearchKey(ODR o, Z_SearchKey **p, int opt, const char *name)
499 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
500 return opt && odr_ok(o);
502 odr_implicit(o, z_InternationalString, &(*p)->searchKey,
503 ODR_CONTEXT, 0, 0) &&
504 odr_implicit(o, z_HumanString, &(*p)->description,
505 ODR_CONTEXT, 1, 1) &&
509 int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt,
512 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
513 return opt && odr_ok(o);
515 odr_explicit(o, odr_integer, &(*p)->accessType, ODR_CONTEXT, 0, 0) &&
516 odr_implicit(o, z_HumanString, &(*p)->accessText, ODR_CONTEXT, 1, 1) &&
517 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
518 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->accessChallenges,
519 &(*p)->num_accessChallenges, 0) || odr_ok(o)) &&
523 int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt,
526 if (!odr_initmember(o, p, sizeof(**p)))
527 return opt && odr_ok(o);
528 if (odr_sequence_of(o, (Odr_fun)z_AccessRestrictionsUnit, &(*p)->elements,
532 return opt && odr_ok(o);
535 int z_CostsOtherCharge(ODR o, Z_CostsOtherCharge **p, int opt,
538 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
539 return opt && odr_ok(o);
541 odr_implicit(o, z_HumanString, &(*p)->forWhat, ODR_CONTEXT, 1, 0) &&
542 odr_implicit(o, z_Charge, &(*p)->charge, ODR_CONTEXT, 2, 1) &&
546 int z_Costs(ODR o, Z_Costs **p, int opt, const char *name)
548 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
549 return opt && odr_ok(o);
551 odr_implicit(o, z_Charge, &(*p)->connectCharge, ODR_CONTEXT, 0, 1) &&
552 odr_implicit(o, z_Charge, &(*p)->connectTime, ODR_CONTEXT, 1, 1) &&
553 odr_implicit(o, z_Charge, &(*p)->displayCharge, ODR_CONTEXT, 2, 1) &&
554 odr_implicit(o, z_Charge, &(*p)->searchCharge, ODR_CONTEXT, 3, 1) &&
555 odr_implicit(o, z_Charge, &(*p)->subscriptCharge, ODR_CONTEXT, 4, 1) &&
556 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
557 (odr_sequence_of(o, (Odr_fun)z_CostsOtherCharge, &(*p)->otherCharges,
558 &(*p)->num_otherCharges, 0) || odr_ok(o)) &&
562 int z_Charge(ODR o, Z_Charge **p, int opt, const char *name)
564 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
565 return opt && odr_ok(o);
567 odr_implicit(o, z_IntUnit, &(*p)->cost, ODR_CONTEXT, 1, 0) &&
568 odr_implicit(o, z_Unit, &(*p)->perWhat, ODR_CONTEXT, 2, 1) &&
569 odr_implicit(o, z_HumanString, &(*p)->text, ODR_CONTEXT, 3, 1) &&
573 int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt, const char *name)
575 if (!odr_initmember(o, p, sizeof(**p)))
576 return opt && odr_ok(o);
577 if (odr_sequence_of(o, z_DatabaseName, &(*p)->databases,
578 &(*p)->num_databases, 0))
581 return opt && odr_ok(o);
584 int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt,
587 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
588 return opt && odr_ok(o);
590 odr_implicit(o, odr_oid, &(*p)->defaultAttributeSet,
591 ODR_CONTEXT, 0, 0) &&
592 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
593 odr_sequence_of(o, (Odr_fun)z_AttributeCombination,
594 &(*p)->legalCombinations,
595 &(*p)->num_legalCombinations, 0) &&
599 int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt,
602 if (!odr_initmember(o, p, sizeof(**p)))
603 return opt && odr_ok(o);
604 if (odr_sequence_of(o, (Odr_fun)z_AttributeOccurrence, &(*p)->occurrences,
605 &(*p)->num_occurrences, 0))
608 return opt && odr_ok(o);
611 int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt,
614 if (!odr_initmember(o, p, sizeof(**p)))
615 return opt && odr_ok(o);
616 if (odr_sequence_of(o, (Odr_fun)z_StringOrNumeric, &(*p)->attributes,
617 &(*p)->num_attributes, 0))
620 return opt && odr_ok(o);
623 int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt,
626 static Odr_arm arm[] =
628 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_AttributeOcc_any_or_none,
629 (Odr_fun)odr_null, 0},
630 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_AttributeOcc_specific,
631 (Odr_fun)z_AttributeValueList, 0},
632 {-1, -1, -1, -1, 0, 0}
635 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
636 return opt && odr_ok(o);
638 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 0, 1) &&
639 odr_implicit(o, odr_integer, &(*p)->attributeType,
640 ODR_CONTEXT, 1, 0) &&
641 odr_implicit(o, odr_null, &(*p)->mustBeSupplied, ODR_CONTEXT, 2, 1) &&
642 odr_choice(o, arm, &(*p)->attributeValues, &(*p)->which, 0) &&
646 int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt, const char *name)
648 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
649 return opt && odr_ok(o);
651 odr_explicit(o, z_StringOrNumeric, &(*p)->value, ODR_CONTEXT, 0, 0) &&
652 odr_implicit(o, z_HumanString, &(*p)->description,
653 ODR_CONTEXT, 1, 1) &&
654 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
655 (odr_sequence_of(o, (Odr_fun)z_StringOrNumeric, &(*p)->subAttributes,
656 &(*p)->num_subAttributes, 0) || odr_ok(o)) &&
657 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
658 (odr_sequence_of(o, (Odr_fun)z_StringOrNumeric, &(*p)->superAttributes,
659 &(*p)->num_superAttributes, 0) || odr_ok(o)) &&
660 odr_implicit(o, odr_null, &(*p)->partialSupport, ODR_CONTEXT, 4, 1) &&
666 int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt, const char *name)
668 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
669 return opt && odr_ok(o);
671 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo,
672 ODR_CONTEXT, 0, 1) &&
673 odr_implicit(o, z_InternationalString, &(*p)->name,
674 ODR_CONTEXT, 1, 0) &&
675 odr_implicit(o, z_HumanString, &(*p)->recentNews,
676 ODR_CONTEXT, 2, 1) &&
677 odr_implicit(o, z_IconObject, &(*p)->icon,
678 ODR_CONTEXT, 3, 1) &&
679 odr_implicit(o, odr_bool, &(*p)->namedResultSets,
680 ODR_CONTEXT, 4, 0) &&
681 odr_implicit(o, odr_bool, &(*p)->multipleDBsearch,
682 ODR_CONTEXT, 5, 0) &&
683 odr_implicit(o, odr_integer, &(*p)->maxResultSets,
684 ODR_CONTEXT, 6, 1) &&
685 odr_implicit(o, odr_integer, &(*p)->maxResultSize,
686 ODR_CONTEXT, 7, 1) &&
687 odr_implicit(o, odr_integer, &(*p)->maxTerms,
688 ODR_CONTEXT, 8, 1) &&
689 odr_implicit(o, z_IntUnit, &(*p)->timeoutInterval,
690 ODR_CONTEXT, 9, 1) &&
691 odr_implicit(o, z_HumanString, &(*p)->welcomeMessage,
692 ODR_CONTEXT, 10, 1) &&
693 odr_implicit(o, z_ContactInfo, &(*p)->contactInfo,
694 ODR_CONTEXT, 11, 1) &&
695 odr_implicit(o, z_HumanString, &(*p)->description,
696 ODR_CONTEXT, 12, 1) &&
697 odr_implicit_settag(o, ODR_CONTEXT, 13) &&
698 (odr_sequence_of(o, z_InternationalString, &(*p)->nicknames,
699 &(*p)->num_nicknames, 0) || odr_ok(o)) &&
700 odr_implicit(o, z_HumanString, &(*p)->usageRest,
701 ODR_CONTEXT, 14, 1) &&
702 odr_implicit(o, z_HumanString, &(*p)->paymentAddr,
703 ODR_CONTEXT, 15, 1) &&
704 odr_implicit(o, z_HumanString, &(*p)->hours, ODR_CONTEXT, 16, 1) &&
705 odr_implicit_settag(o, ODR_CONTEXT, 17) &&
706 (odr_sequence_of(o, (Odr_fun)z_DatabaseList, &(*p)->dbCombinations,
707 &(*p)->num_dbCombinations, 0) || odr_ok(o)) &&
708 odr_implicit_settag(o, ODR_CONTEXT, 18) &&
709 (odr_sequence_of(o, (Odr_fun)z_NetworkAddress, &(*p)->addresses,
710 &(*p)->num_addresses, 0) || odr_ok(o)) &&
711 odr_implicit_settag (o, ODR_CONTEXT, 101) &&
712 (odr_sequence_of(o, (Odr_fun) z_InternationalString, &(*p)->languages,
713 &(*p)->num_languages, 0) || odr_ok(o)) &&
714 odr_implicit(o, z_AccessInfo, &(*p)->commonAccessInfo,
715 ODR_CONTEXT, 19, 1) &&
719 int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt, const char *name)
721 static Odr_arm arm[] =
723 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_DatabaseInfo_actualNumber,
724 (Odr_fun)odr_integer, 0},
725 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_DatabaseInfo_approxNumber,
726 (Odr_fun)odr_integer, 0},
727 {-1, -1, -1, -1, 0, 0}
730 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
731 return opt && odr_ok(o);
733 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
734 odr_implicit(o, z_DatabaseName, &(*p)->name, ODR_CONTEXT, 1, 0) &&
735 odr_implicit(o, odr_null, &(*p)->explainDatabase, ODR_CONTEXT, 2, 1) &&
736 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
737 (odr_sequence_of(o, z_DatabaseName, &(*p)->nicknames,
738 &(*p)->num_nicknames, 0) || odr_ok(o)) &&
739 odr_implicit(o, z_IconObject, &(*p)->icon, ODR_CONTEXT, 4, 1) &&
740 odr_implicit(o, odr_bool, &(*p)->userFee, ODR_CONTEXT, 5, 0) &&
741 odr_implicit(o, odr_bool, &(*p)->available, ODR_CONTEXT, 6, 0) &&
742 odr_implicit(o, z_HumanString, &(*p)->titleString,
743 ODR_CONTEXT, 7, 1) &&
744 odr_implicit_settag(o, ODR_CONTEXT, 8) &&
745 (odr_sequence_of(o, (Odr_fun)z_HumanString, &(*p)->keywords,
746 &(*p)->num_keywords, 0) || odr_ok(o)) &&
747 odr_implicit(o, z_HumanString, &(*p)->description,
748 ODR_CONTEXT, 9, 1) &&
749 odr_implicit(o, z_DatabaseList, &(*p)->associatedDbs,
750 ODR_CONTEXT, 10, 1) &&
751 odr_implicit(o, z_DatabaseList, &(*p)->subDbs, ODR_CONTEXT, 11, 1) &&
752 odr_implicit(o, z_HumanString, &(*p)->disclaimers,
753 ODR_CONTEXT, 12, 1) &&
754 odr_implicit(o, z_HumanString, &(*p)->news, ODR_CONTEXT, 13, 1) &&
755 ((odr_constructed_begin(o, &(*p)->u.actualNumber,
756 ODR_CONTEXT, 14, 0) &&
757 odr_choice(o, arm, &(*p)->u.actualNumber, &(*p)->which, 0) &&
758 odr_constructed_end(o)) || odr_ok(o)) &&
759 odr_implicit(o, z_HumanString, &(*p)->defaultOrder,
760 ODR_CONTEXT, 15, 1) &&
761 odr_implicit(o, odr_integer, &(*p)->avRecordSize,
762 ODR_CONTEXT, 16, 1) &&
763 odr_implicit(o, odr_integer, &(*p)->maxRecordSize,
764 ODR_CONTEXT, 17, 1) &&
765 odr_implicit(o, z_HumanString, &(*p)->hours, ODR_CONTEXT, 18, 1) &&
766 odr_implicit(o, z_HumanString, &(*p)->bestTime, ODR_CONTEXT, 19, 1) &&
767 odr_implicit(o, odr_generalizedtime, &(*p)->lastUpdate,
768 ODR_CONTEXT, 20, 1) &&
769 odr_implicit(o, z_IntUnit, &(*p)->updateInterval,
770 ODR_CONTEXT, 21, 1) &&
771 odr_implicit(o, z_HumanString, &(*p)->coverage, ODR_CONTEXT, 22, 1) &&
772 odr_implicit(o, odr_bool, &(*p)->proprietary, ODR_CONTEXT, 23, 1) &&
773 odr_implicit(o, z_HumanString, &(*p)->copyrightText,
774 ODR_CONTEXT, 24, 1) &&
775 odr_implicit(o, z_HumanString, &(*p)->copyrightNotice,
776 ODR_CONTEXT, 25, 1) &&
777 odr_implicit(o, z_ContactInfo, &(*p)->producerContactInfo,
778 ODR_CONTEXT, 26, 1) &&
779 odr_implicit(o, z_ContactInfo, &(*p)->supplierContactInfo,
780 ODR_CONTEXT, 27, 1) &&
781 odr_implicit(o, z_ContactInfo, &(*p)->submissionContactInfo,
782 ODR_CONTEXT, 28, 1) &&
783 odr_implicit(o, z_AccessInfo, &(*p)->accessInfo, ODR_CONTEXT, 29, 1) &&
787 int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt, const char *name)
789 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
792 odr_implicit(o, odr_integer, &(*p)->tagType, ODR_CONTEXT, 0, 0) &&
793 odr_implicit(o, odr_oid, &(*p)->tagSet, ODR_CONTEXT, 1, 1) &&
794 odr_implicit(o, odr_null, &(*p)->defaultTagType, ODR_CONTEXT, 2, 1) &&
798 int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt, const char *name)
800 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
801 return opt && odr_ok(o);
803 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
804 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 1, 0) &&
805 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
807 odr_implicit(o, z_HumanString, &(*p)->description,
808 ODR_CONTEXT, 3, 1) &&
809 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
810 (odr_sequence_of(o, (Odr_fun)z_TagTypeMapping, &(*p)->tagTypeMapping,
811 &(*p)->num_tagTypeMapping, 0) || odr_ok(o)) &&
812 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
813 (odr_sequence_of(o, (Odr_fun)z_ElementInfo, &(*p)->recordStructure,
814 &(*p)->num_recordStructure, 0) || odr_ok(o)) &&
818 int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt, const char *name)
820 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
821 return opt && odr_ok(o);
823 odr_implicit(o, z_InternationalString, &(*p)->elementName,
824 ODR_CONTEXT, 1, 0) &&
825 odr_implicit(o, z_Path, &(*p)->elementTagPath, ODR_CONTEXT, 2, 0) &&
826 odr_explicit(o, z_ElementDataType, &(*p)->dataType,
827 ODR_CONTEXT, 3, 1) &&
828 odr_implicit(o, odr_bool, &(*p)->required, ODR_CONTEXT, 4, 0) &&
829 odr_implicit(o, odr_bool, &(*p)->repeatable, ODR_CONTEXT, 5, 0) &&
830 odr_implicit(o, z_HumanString, &(*p)->description,
831 ODR_CONTEXT, 6, 1) &&
835 int z_PathUnit(ODR o, Z_PathUnit **p, int opt, const char *name)
837 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
840 odr_implicit(o, odr_integer, &(*p)->tagType, ODR_CONTEXT, 1, 0) &&
841 odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue,
842 ODR_CONTEXT, 2, 0) &&
846 int z_Path(ODR o, Z_Path **p, int opt, const char *name)
848 if (!odr_initmember(o, p, sizeof(**p)))
849 return opt && odr_ok(o);
850 odr_implicit_settag(o, ODR_CONTEXT, 201);
851 if (odr_sequence_of(o, (Odr_fun)z_OtherInformationUnit, &(*p)->list,
855 return opt && odr_ok(o);
858 int z_ElementInfoList(ODR o, Z_Path **p, int opt, const char *name)
860 if (!odr_initmember(o, p, sizeof(**p)))
861 return opt && odr_ok(o);
862 odr_implicit_settag(o, ODR_CONTEXT, 201);
863 if (odr_sequence_of(o, (Odr_fun)z_OtherInformationUnit, &(*p)->list,
867 return opt && odr_ok(o);
870 int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt, const char *name)
872 static Odr_arm arm[] =
874 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ElementDataType_primitive,
875 (Odr_fun)odr_integer, 0},
876 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ElementDataType_structured,
877 (Odr_fun)z_ElementInfoList, 0},
878 {-1, -1, -1, -1, 0, 0}
881 if (!odr_initmember(o, p, sizeof(**p)))
882 return opt && odr_ok(o);
883 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
886 return opt && odr_ok(o);
889 int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt,
892 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
895 odr_implicit(o, z_InternationalString, &(*p)->elementname,
896 ODR_CONTEXT, 1, 0) &&
897 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
898 (odr_sequence_of(o, z_InternationalString, &(*p)->nicknames,
899 &(*p)->num_nicknames, 0) || odr_ok(o)) &&
900 odr_explicit(o, z_StringOrNumeric, &(*p)->elementTag,
901 ODR_CONTEXT, 3, 0) &&
902 odr_implicit(o, z_HumanString, &(*p)->description,
903 ODR_CONTEXT, 4, 1) &&
904 odr_implicit(o, odr_integer, &(*p)->dataType, ODR_CONTEXT, 5, 1) &&
905 z_OtherInformation(o, &(*p)->otherTagInfo, 1, 0) &&
909 int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt, const char *name)
911 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
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)->tagSet, ODR_CONTEXT, 1, 0) &&
916 odr_implicit(o, z_InternationalString, &(*p)->name,
917 ODR_CONTEXT, 2, 0) &&
918 odr_implicit(o, z_HumanString, &(*p)->description,
919 ODR_CONTEXT, 3, 1) &&
920 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
921 (odr_sequence_of(o, (Odr_fun)z_TagSetInfoElements, &(*p)->elements,
922 &(*p)->num_elements, 0) || odr_ok(o)) &&
926 int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt,
929 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
930 return opt && odr_ok(o);
932 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
933 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 1, 0) &&
934 odr_implicit(o, z_InternationalString, &(*p)->name,
935 ODR_CONTEXT, 2, 0) &&
936 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
937 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->transferSyntaxes,
938 &(*p)->num_transferSyntaxes, 0) || odr_ok(o)) &&
939 odr_implicit(o, z_HumanString, &(*p)->description,
940 ODR_CONTEXT, 4, 1) &&
941 odr_implicit(o, z_InternationalString, &(*p)->asn1Module,
942 ODR_CONTEXT, 5, 1) &&
943 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
944 (odr_sequence_of(o, (Odr_fun)z_ElementInfo, &(*p)->abstractStructure,
945 &(*p)->num_abstractStructure, 0) || odr_ok(o)) &&
949 int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt,
952 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
953 return opt && odr_ok(o);
955 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
956 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 1, 0) &&
957 odr_implicit(o, z_InternationalString, &(*p)->name,
958 ODR_CONTEXT, 2, 0) &&
959 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
960 (odr_sequence_of(o, (Odr_fun)z_AttributeType, &(*p)->attributes,
961 &(*p)->num_attributes, 0) || odr_ok(o)) &&
962 odr_implicit(o, z_HumanString, &(*p)->description,
963 ODR_CONTEXT, 4, 1) &&
967 int z_AttributeType(ODR o, Z_AttributeType **p, int opt, const char *name)
969 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
970 return opt && odr_ok(o);
972 odr_implicit(o, z_InternationalString, &(*p)->name,
973 ODR_CONTEXT, 0, 1) &&
974 odr_implicit(o, z_HumanString, &(*p)->description,
975 ODR_CONTEXT, 1, 1) &&
976 odr_implicit(o, odr_integer, &(*p)->attributeType,
977 ODR_CONTEXT, 2, 0) &&
978 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
979 odr_sequence_of(o, (Odr_fun)z_AttributeDescription,
980 &(*p)->attributeValues,
981 &(*p)->num_attributeValues, 0) &&
985 int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt,
988 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
989 return opt && odr_ok(o);
991 odr_implicit(o, z_InternationalString, &(*p)->name,
992 ODR_CONTEXT, 0, 1) &&
993 odr_implicit(o, z_HumanString, &(*p)->description,
994 ODR_CONTEXT, 1, 1) &&
995 odr_explicit(o, z_StringOrNumeric, &(*p)->attributeValue,
996 ODR_CONTEXT, 2, 0) &&
997 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
998 (odr_sequence_of(o, (Odr_fun)z_StringOrNumeric,
999 &(*p)->equivalentAttributes,
1000 &(*p)->num_equivalentAttributes, 0) || odr_ok(o)) &&
1001 odr_sequence_end(o);
1004 int z_TermListElement(ODR o, Z_TermListElement **p, int opt, const char *name)
1006 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1007 return opt && odr_ok(o);
1009 odr_implicit(o, z_InternationalString, &(*p)->name,
1010 ODR_CONTEXT, 1, 0) &&
1011 odr_implicit(o, z_HumanString, &(*p)->title, ODR_CONTEXT, 2, 1) &&
1012 odr_implicit(o, odr_integer, &(*p)->searchCost, ODR_CONTEXT, 3, 1) &&
1013 odr_implicit(o, odr_bool, &(*p)->scanable, ODR_CONTEXT, 4, 0) &&
1014 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
1015 (odr_sequence_of(o, z_InternationalString, &(*p)->broader,
1016 &(*p)->num_broader, 0) || odr_ok(o)) &&
1017 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
1018 (odr_sequence_of(o, z_InternationalString, &(*p)->narrower,
1019 &(*p)->num_narrower, 0) || odr_ok(o)) &&
1020 odr_sequence_end(o);
1023 int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt, const char *name)
1025 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
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,
1030 ODR_CONTEXT, 1, 0) &&
1031 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1032 (odr_sequence_of(o, (Odr_fun)z_TermListElement, &(*p)->termLists,
1033 &(*p)->num_termLists, 0) || odr_ok(o)) &&
1034 odr_sequence_end(o);
1037 int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt,
1040 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1041 return opt && odr_ok(o);
1043 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1044 odr_implicit(o, odr_oid, &(*p)->type, ODR_CONTEXT, 1, 0) &&
1045 odr_implicit(o, z_InternationalString, &(*p)->name,
1046 ODR_CONTEXT, 2, 1) &&
1047 odr_implicit(o, odr_bool, &(*p)->privateType, ODR_CONTEXT, 3, 0) &&
1048 odr_implicit(o, odr_bool, &(*p)->restrictionsApply,
1049 ODR_CONTEXT, 5, 0) &&
1050 odr_implicit(o, odr_bool, &(*p)->feeApply, ODR_CONTEXT, 6, 0) &&
1051 odr_implicit(o, odr_bool, &(*p)->available, ODR_CONTEXT, 7, 0) &&
1052 odr_implicit(o, odr_bool, &(*p)->retentionSupported,
1053 ODR_CONTEXT, 8, 0) &&
1054 odr_implicit(o, odr_integer, &(*p)->waitAction, ODR_CONTEXT, 9, 0) &&
1055 odr_implicit(o, z_HumanString, &(*p)->description,
1056 ODR_CONTEXT, 10, 1) &&
1057 odr_implicit(o, z_External, &(*p)->specificExplain,
1058 ODR_CONTEXT, 11, 1) &&
1059 odr_implicit(o, z_InternationalString, &(*p)->esASN,
1060 ODR_CONTEXT, 12, 1) &&
1061 odr_sequence_end(o);
1064 int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt,
1067 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1068 return opt && odr_ok(o);
1070 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1071 odr_implicit(o, z_DatabaseName, &(*p)->databaseName,
1072 ODR_CONTEXT, 1, 0) &&
1073 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1074 (odr_sequence_of(o, (Odr_fun)z_AttributeSetDetails,
1075 &(*p)->attributesBySet,
1076 &(*p)->num_attributesBySet, 0) && odr_ok(o)) &&
1077 odr_implicit(o, z_AttributeCombinations, &(*p)->attributeCombinations,
1078 ODR_CONTEXT, 3, 1) &&
1079 odr_sequence_end(o);
1082 int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt,
1085 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1086 return opt && odr_ok(o);
1088 odr_implicit(o, odr_oid, &(*p)->attributeSet,
1089 ODR_CONTEXT, 0, 0) &&
1090 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
1091 odr_sequence_of(o, (Odr_fun)z_AttributeTypeDetails,
1092 &(*p)->attributesByType,
1093 &(*p)->num_attributesByType, 0) &&
1094 odr_sequence_end(o);
1097 int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt,
1100 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1101 return opt && odr_ok(o);
1103 odr_implicit(o, odr_integer, &(*p)->attributeType,
1104 ODR_CONTEXT, 0, 0) &&
1105 odr_implicit(o, z_OmittedAttributeInterpretation,
1106 &(*p)->defaultIfOmitted,
1107 ODR_CONTEXT, 1, 1) &&
1108 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1109 (odr_sequence_of(o, (Odr_fun)z_AttributeValue, &(*p)->attributeValues,
1110 &(*p)->num_attributeValues, 0) || odr_ok(o)) &&
1111 odr_sequence_end(o);
1114 int z_OmittedAttributeInterpretation(ODR o,
1115 Z_OmittedAttributeInterpretation **p,
1116 int opt, const char *name)
1118 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1119 return opt && odr_ok(o);
1121 odr_explicit(o, z_StringOrNumeric, &(*p)->defaultValue,
1122 ODR_CONTEXT, 0, 1) &&
1123 odr_implicit(o, z_HumanString, &(*p)->defaultDescription,
1124 ODR_CONTEXT, 1, 1) &&
1125 odr_sequence_end(o);
1128 int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt, const char *name)
1130 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1131 return opt && odr_ok(o);
1133 odr_implicit(o, odr_integer, &(*p)->maxStepSize, ODR_CONTEXT, 0, 1) &&
1134 odr_implicit(o, z_HumanString, &(*p)->collatingSequence,
1135 ODR_CONTEXT, 1, 1) &&
1136 odr_implicit(o, odr_bool, &(*p)->increasing, ODR_CONTEXT, 2, 1) &&
1137 odr_sequence_end(o);
1140 int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt, const char *name)
1142 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1143 return opt && odr_ok(o);
1145 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1146 odr_implicit(o, z_InternationalString, &(*p)->termListName,
1147 ODR_CONTEXT, 1, 0) &&
1148 odr_implicit(o, z_HumanString, &(*p)->description,
1149 ODR_CONTEXT, 2, 1) &&
1150 odr_implicit(o, z_AttributeCombinations, &(*p)->attributes,
1151 ODR_CONTEXT, 3, 1) &&
1152 odr_implicit(o, z_EScanInfo, &(*p)->scanInfo, ODR_CONTEXT, 4, 1) &&
1153 odr_implicit(o, odr_integer, &(*p)->estNumberTerms,
1154 ODR_CONTEXT, 5, 1) &&
1155 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
1156 (odr_sequence_of(o, (Odr_fun)z_Term, &(*p)->sampleTerms,
1157 &(*p)->num_sampleTerms, 0) || odr_ok(o)) &&
1158 odr_sequence_end(o);
1161 int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt,
1164 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1165 return opt && odr_ok(o);
1167 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1168 odr_implicit(o, z_DatabaseName, &(*p)->databaseName,
1169 ODR_CONTEXT, 1, 0) &&
1170 odr_implicit(o, z_ElementSetName, &(*p)->elementSetName,
1171 ODR_CONTEXT, 2, 0) &&
1172 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 3, 0) &&
1173 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 4, 0) &&
1174 odr_implicit(o, z_HumanString, &(*p)->description,
1175 ODR_CONTEXT, 5, 1) &&
1176 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
1177 (odr_sequence_of(o, (Odr_fun)z_PerElementDetails,
1178 &(*p)->detailsPerElement,
1179 &(*p)->num_detailsPerElement, 0) || odr_ok(o)) &&
1180 odr_sequence_end(o);
1183 int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt,
1186 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1187 return opt && odr_ok(o);
1189 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1190 odr_implicit(o, z_DatabaseName, &(*p)->databaseName,
1191 ODR_CONTEXT, 1, 0) &&
1192 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 2, 0) &&
1193 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 3, 0) &&
1194 odr_implicit(o, z_HumanString, &(*p)->description,
1195 ODR_CONTEXT, 4, 1) &&
1196 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
1197 (odr_sequence_of(o, (Odr_fun)z_PerElementDetails,
1198 &(*p)->detailsPerElement,
1199 &(*p)->num_detailsPerElement, 0) || odr_ok(o)) &&
1200 odr_sequence_end(o);
1203 int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt,
1206 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1207 return opt && odr_ok(o);
1209 odr_implicit(o, z_InternationalString, &(*p)->name,
1210 ODR_CONTEXT, 0, 1) &&
1211 odr_implicit(o, z_RecordTag, &(*p)->recordTag, ODR_CONTEXT, 1, 1) &&
1212 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1213 (odr_sequence_of(o, (Odr_fun)z_Path, &(*p)->schemaTags,
1214 &(*p)->num_schemaTags, 0) ||
1216 odr_implicit(o, odr_integer, &(*p)->maxSize, ODR_CONTEXT, 3, 1) &&
1217 odr_implicit(o, odr_integer, &(*p)->minSize, ODR_CONTEXT, 4, 1) &&
1218 odr_implicit(o, odr_integer, &(*p)->avgSize, ODR_CONTEXT, 5, 1) &&
1219 odr_implicit(o, odr_integer, &(*p)->fixedSize, ODR_CONTEXT, 6, 1) &&
1220 odr_implicit(o, odr_bool, &(*p)->repeatable, ODR_CONTEXT, 8, 0) &&
1221 odr_implicit(o, odr_bool, &(*p)->required, ODR_CONTEXT, 9, 0) &&
1222 odr_implicit(o, z_HumanString, &(*p)->description,
1223 ODR_CONTEXT, 12, 1) &&
1224 odr_implicit(o, z_HumanString, &(*p)->contents, ODR_CONTEXT, 13, 1) &&
1225 odr_implicit(o, z_HumanString, &(*p)->billingInfo,
1226 ODR_CONTEXT, 14, 1) &&
1227 odr_implicit(o, z_HumanString, &(*p)->restrictions,
1228 ODR_CONTEXT, 15, 1) &&
1229 odr_implicit_settag(o, ODR_CONTEXT, 16) &&
1230 (odr_sequence_of(o, z_InternationalString, &(*p)->alternateNames,
1231 &(*p)->num_alternateNames, 0) || odr_ok(o)) &&
1232 odr_implicit_settag(o, ODR_CONTEXT, 17) &&
1233 (odr_sequence_of(o, z_InternationalString, &(*p)->genericNames,
1234 &(*p)->num_genericNames, 0) || odr_ok(o)) &&
1235 odr_implicit(o, z_AttributeCombinations, &(*p)->searchAccess,
1236 ODR_CONTEXT, 18, 1) &&
1237 odr_sequence_end(o);
1240 int z_RecordTag(ODR o, Z_RecordTag **p, int opt, const char *name)
1242 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1243 return opt && odr_ok(o);
1245 odr_explicit(o, z_StringOrNumeric, &(*p)->qualifier,
1246 ODR_CONTEXT, 0, 1) &&
1247 odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue,
1248 ODR_CONTEXT, 1, 0) &&
1249 odr_sequence_end(o);
1252 int z_SortDetails(ODR o, Z_SortDetails **p, int opt, const char *name)
1254 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1255 return opt && odr_ok(o);
1257 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1258 odr_implicit(o, z_DatabaseName, &(*p)->databaseName,
1259 ODR_CONTEXT, 1, 0) &&
1260 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1261 (odr_sequence_of(o, (Odr_fun)z_SortKeyDetails, &(*p)->sortKeys,
1262 &(*p)->num_sortKeys, 0) || odr_ok(o)) &&
1263 odr_sequence_end(o);
1266 int z_SortKeyDetails (ODR o, Z_SortKeyDetails **p, int opt, const char *name)
1268 static Odr_arm arm[] = {
1269 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetails_character,
1270 (Odr_fun) odr_null, 0},
1271 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_SortKeyDetails_numeric,
1272 (Odr_fun) odr_null, 0},
1273 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_SortKeyDetails_structured,
1274 (Odr_fun) z_HumanString, 0},
1275 {-1, -1, -1, -1, (Odr_fun) 0, 0}
1277 if (!odr_sequence_begin (o, p, sizeof(**p), 0))
1278 return opt && odr_ok (o);
1280 odr_implicit (o, z_HumanString,
1281 &(*p)->description, ODR_CONTEXT, 0, 1) &&
1282 odr_implicit_settag (o, ODR_CONTEXT, 1) &&
1283 (odr_sequence_of(o, (Odr_fun) z_Specification,
1284 &(*p)->elementSpecifications,
1285 &(*p)->num_elementSpecifications, 0) || odr_ok(o)) &&
1286 odr_implicit (o, z_AttributeCombinations,
1287 &(*p)->attributeSpecifications, ODR_CONTEXT, 2, 1) &&
1288 ((odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 3, 0) &&
1289 odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) &&
1290 odr_constructed_end (o)) || odr_ok(o)) &&
1291 odr_implicit (o, odr_integer,
1292 &(*p)->caseSensitivity, ODR_CONTEXT, 4, 1) &&
1293 odr_sequence_end (o);
1296 int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt,
1299 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1300 return opt && odr_ok(o);
1302 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1303 odr_implicit(o, z_DatabaseName, &(*p)->databaseName,
1304 ODR_CONTEXT, 1, 0) &&
1305 odr_implicit(o, odr_integer, &(*p)->processingContext,
1306 ODR_CONTEXT, 2, 0) &&
1307 odr_implicit(o, z_InternationalString, &(*p)->name,
1308 ODR_CONTEXT, 3, 0) &&
1309 odr_implicit(o, odr_oid, &(*p)->oid, ODR_CONTEXT, 4, 0) &&
1310 odr_implicit(o, z_HumanString, &(*p)->description,
1311 ODR_CONTEXT, 5, 1) &&
1312 odr_implicit(o, z_External, &(*p)->instructions, ODR_CONTEXT, 6, 1) &&
1313 odr_sequence_end(o);
1316 int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt, const char *name)
1318 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1319 return opt && odr_ok(o);
1321 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1322 odr_implicit(o, odr_oid, &(*p)->variantSet, ODR_CONTEXT, 1, 0) &&
1323 odr_implicit(o, z_InternationalString, &(*p)->name,
1324 ODR_CONTEXT, 2, 0) &&
1325 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1326 (odr_sequence_of(o, (Odr_fun)z_VariantClass, &(*p)->variants,
1327 &(*p)->num_variants, 0) || odr_ok(o)) &&
1328 odr_sequence_end(o);
1331 int z_VariantClass(ODR o, Z_VariantClass **p, int opt, const char *name)
1333 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1334 return opt && odr_ok(o);
1336 odr_implicit(o, z_InternationalString, &(*p)->name,
1337 ODR_CONTEXT, 0, 1) &&
1338 odr_implicit(o, z_HumanString, &(*p)->description,
1339 ODR_CONTEXT, 1, 1) &&
1340 odr_implicit(o, odr_integer, &(*p)->variantClass, ODR_CONTEXT, 2, 0) &&
1341 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1342 odr_sequence_of(o, (Odr_fun)z_VariantType, &(*p)->variantTypes,
1343 &(*p)->num_variantTypes, 0) &&
1344 odr_sequence_end(o);
1347 int z_VariantType(ODR o, Z_VariantType **p, int opt, const char *name)
1349 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1350 return opt && odr_ok(o);
1352 odr_implicit(o, z_InternationalString, &(*p)->name,
1353 ODR_CONTEXT, 0, 1) &&
1354 odr_implicit(o, z_HumanString, &(*p)->description,
1355 ODR_CONTEXT, 1, 1) &&
1356 odr_implicit(o, odr_integer, &(*p)->variantType,
1357 ODR_CONTEXT, 2, 0) &&
1358 odr_implicit(o, z_VariantValue, &(*p)->variantValue,
1359 ODR_CONTEXT, 3, 1) &&
1360 odr_sequence_end(o);
1363 int z_VariantValue(ODR o, Z_VariantValue **p, int opt, const char *name)
1365 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1366 return opt && odr_ok(o);
1368 odr_explicit(o, odr_integer, &(*p)->dataType, ODR_CONTEXT, 0, 0) &&
1369 odr_explicit(o, z_ValueSet, &(*p)->values, ODR_CONTEXT, 1, 1) &&
1370 odr_sequence_end(o);
1373 int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt,
1376 if (!odr_initmember(o, p, sizeof(**p)))
1377 return opt && odr_ok(o);
1378 if (odr_sequence_of(o, (Odr_fun)z_ValueDescription, &(*p)->elements,
1382 return opt && odr_ok(o);
1385 int z_ValueSet(ODR o, Z_ValueSet **p, int opt, const char *name)
1387 static Odr_arm arm[] =
1389 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ValueSet_range,
1390 (Odr_fun)z_ValueRange, 0},
1391 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueSet_enumerated,
1392 (Odr_fun)z_ValueSetEnumerated, 0},
1393 {-1, -1, -1, -1, 0, 0}
1396 if (!odr_initmember(o, p, sizeof(**p)))
1397 return opt && odr_ok(o);
1398 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
1401 return opt && odr_ok(o);
1404 int z_ValueRange(ODR o, Z_ValueRange **p, int opt, const char *name)
1406 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1407 return opt && odr_ok(o);
1409 odr_explicit(o, z_ValueDescription, &(*p)->lower, ODR_CONTEXT, 0, 1) &&
1410 odr_explicit(o, z_ValueDescription, &(*p)->upper, ODR_CONTEXT, 1, 1) &&
1411 odr_sequence_end(o);
1414 int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt,
1417 static Odr_arm arm[] =
1419 {ODR_NONE, -1, -1, Z_ValueDescription_integer,
1420 (Odr_fun)odr_integer, 0},
1421 {ODR_NONE, -1, -1, Z_ValueDescription_string,
1422 (Odr_fun)z_InternationalString, 0},
1423 {ODR_NONE, -1, -1, Z_ValueDescription_octets,
1424 (Odr_fun)odr_octetstring, 0},
1425 {ODR_NONE, -1, -1, Z_ValueDescription_oid,
1426 (Odr_fun)odr_oid, 0},
1427 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueDescription_unit,
1428 (Odr_fun)z_Unit, 0},
1429 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ValueDescription_valueAndUnit,
1430 (Odr_fun)z_IntUnit, 0},
1431 {-1, -1, -1, -1, 0, 0}
1434 if (!odr_initmember(o, p, sizeof(**p)))
1435 return opt && odr_ok(o);
1436 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
1439 return opt && odr_ok(o);
1442 int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt, const char *name)
1444 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1445 return opt && odr_ok(o);
1447 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1448 odr_implicit(o, z_InternationalString, &(*p)->unitSystem,
1449 ODR_CONTEXT, 1, 0) &&
1450 odr_implicit(o, z_HumanString, &(*p)->description,
1451 ODR_CONTEXT, 2, 1) &&
1452 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1453 (odr_sequence_of(o, (Odr_fun)z_UnitType, &(*p)->units,
1454 &(*p)->num_units, 0) ||
1456 odr_sequence_end(o);
1459 int z_UnitType(ODR o, Z_UnitType **p, int opt, const char *name)
1461 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1462 return opt && odr_ok(o);
1464 odr_implicit(o, z_InternationalString, &(*p)->name,
1465 ODR_CONTEXT, 0, 1) &&
1466 odr_implicit(o, z_HumanString, &(*p)->description,
1467 ODR_CONTEXT, 1, 1) &&
1468 odr_explicit(o, z_StringOrNumeric, &(*p)->unitType,
1469 ODR_CONTEXT, 2, 0) &&
1470 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1471 odr_sequence_of(o, (Odr_fun)z_Units, &(*p)->units,
1472 &(*p)->num_units, 0) &&
1473 odr_sequence_end(o);
1476 int z_Units(ODR o, Z_Units **p, int opt, const char *name)
1478 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1479 return opt && odr_ok(o);
1481 odr_implicit(o, z_InternationalString, &(*p)->name,
1482 ODR_CONTEXT, 0, 1) &&
1483 odr_implicit(o, z_HumanString, &(*p)->description,
1484 ODR_CONTEXT, 1, 1) &&
1485 odr_explicit(o, z_StringOrNumeric, &(*p)->unit,
1486 ODR_CONTEXT, 2, 0) &&
1487 odr_sequence_end(o);
1490 int z_CategoryList(ODR o, Z_CategoryList **p, int opt, const char *name)
1492 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1493 return opt && odr_ok(o);
1495 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1496 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
1497 odr_sequence_of(o, (Odr_fun)z_CategoryInfo, &(*p)->categories,
1498 &(*p)->num_categories, 0) &&
1499 odr_sequence_end(o);
1502 int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt, const char *name)
1504 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1505 return opt && odr_ok(o);
1507 odr_implicit(o, z_InternationalString, &(*p)->category,
1508 ODR_CONTEXT, 1, 0) &&
1509 odr_implicit(o, z_InternationalString, &(*p)->originalCategory,
1510 ODR_CONTEXT, 2, 1) &&
1511 odr_implicit(o, z_HumanString, &(*p)->description,
1512 ODR_CONTEXT, 3, 1) &&
1513 odr_implicit(o, z_InternationalString, &(*p)->asn1Module,
1514 ODR_CONTEXT, 4, 1) &&
1515 odr_sequence_end(o);
1518 int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt, const char *name)
1520 static Odr_arm arm[] =
1522 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Explain_targetInfo,
1523 (Odr_fun)z_TargetInfo, 0},
1524 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Explain_databaseInfo,
1525 (Odr_fun)z_DatabaseInfo, 0},
1526 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_Explain_schemaInfo,
1527 (Odr_fun)z_SchemaInfo, 0},
1528 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_Explain_tagSetInfo,
1529 (Odr_fun)z_TagSetInfo, 0},
1530 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_Explain_recordSyntaxInfo,
1531 (Odr_fun)z_RecordSyntaxInfo, 0},
1532 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_Explain_attributeSetInfo,
1533 (Odr_fun)z_AttributeSetInfo, 0},
1534 {ODR_IMPLICIT, ODR_CONTEXT, 6, Z_Explain_termListInfo,
1535 (Odr_fun)z_TermListInfo, 0},
1536 {ODR_IMPLICIT, ODR_CONTEXT, 7, Z_Explain_extendedServicesInfo,
1537 (Odr_fun)z_ExtendedServicesInfo, 0},
1538 {ODR_IMPLICIT, ODR_CONTEXT, 8, Z_Explain_attributeDetails,
1539 (Odr_fun)z_AttributeDetails, 0},
1540 {ODR_IMPLICIT, ODR_CONTEXT, 9, Z_Explain_termListDetails,
1541 (Odr_fun)z_TermListDetails, 0},
1542 {ODR_IMPLICIT, ODR_CONTEXT, 10, Z_Explain_elementSetDetails,
1543 (Odr_fun)z_ElementSetDetails, 0},
1544 {ODR_IMPLICIT, ODR_CONTEXT, 11, Z_Explain_retrievalRecordDetails,
1545 (Odr_fun)z_RetrievalRecordDetails, 0},
1546 {ODR_IMPLICIT, ODR_CONTEXT, 12, Z_Explain_sortDetails,
1547 (Odr_fun)z_SortDetails, 0},
1548 {ODR_IMPLICIT, ODR_CONTEXT, 13, Z_Explain_processing,
1549 (Odr_fun)z_ProcessingInformation, 0},
1550 {ODR_IMPLICIT, ODR_CONTEXT, 14, Z_Explain_variants,
1551 (Odr_fun)z_VariantSetInfo, 0},
1552 {ODR_IMPLICIT, ODR_CONTEXT, 15, Z_Explain_units,
1553 (Odr_fun)z_UnitInfo, 0},
1554 {ODR_IMPLICIT, ODR_CONTEXT, 100, Z_Explain_categoryList,
1555 (Odr_fun)z_CategoryList, 0},
1556 {-1, -1, -1, -1, 0, 0}
1559 if (!odr_initmember(o, p, sizeof(**p)))
1560 return opt && odr_ok(o);
1561 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
1564 return opt && odr_ok(o);