2 * Copyright (c) 1995, Index Data.
3 * See the file LICENSE for details.
4 * Sebastian Hammer, Adam Dickmeiss
7 * Revision 1.2 1995-08-15 11:59:43 quinn
10 * Revision 1.1 1995/08/10 08:54:02 quinn
18 int z_LanguageCode(ODR o, char **p, int opt);
19 int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt);
20 int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt);
21 int z_HumanString(ODR o, Z_HumanString **p, int opt);
22 int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt);
23 int z_IconObject(ODR o, Z_IconObject **p, int opt);
24 int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt);
25 int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt);
26 int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt);
27 int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt);
28 int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt);
29 int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt);
30 int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt);
31 int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt);
32 int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt);
33 int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt);
34 int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt);
35 int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt);
36 int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt);
37 int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt);
38 int z_SearchKey(ODR o, Z_SearchKey **p, int opt);
39 int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt);
40 int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt);
41 int z_CostsOtherCharge(ODR o, Z_CostsOtherCharge **p, int opt);
42 int z_Costs(ODR o, Z_Costs **p, int opt);
43 int z_Charge(ODR o, Z_Charge **p, int opt);
44 int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt);
45 int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt);
46 int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt);
47 int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt);
48 int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt);
49 int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt);
50 int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt);
51 int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt);
52 int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt);
53 int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt);
54 int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt);
55 int z_PathUnit(ODR o, Z_PathUnit **p, int opt);
56 int z_Path(ODR o, Z_Path **p, int opt);
57 int z_ElementInfoList(ODR o, Z_Path **p, int opt);
58 int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt);
59 int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt);
60 int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt);
61 int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt);
62 int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt);
63 int z_AttributeType(ODR o, Z_AttributeType **p, int opt);
64 int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt);
65 int z_TermListElement(ODR o, Z_TermListElement **p, int opt);
66 int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt);
67 int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt);
68 int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt);
69 int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt);
70 int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt);
71 int z_OmittedAttributeInterpretation(ODR o, Z_OmittedAttributeInterpretation **p, int opt);
72 int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt);
73 int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt);
74 int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt);
75 int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt);
76 int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt);
77 int z_RecordTag(ODR o, Z_RecordTag **p, int opt);
78 int z_SortDetails(ODR o, Z_SortDetails **p, int opt);
79 int z_SortKeyDetailsSortType(ODR o, Z_SortKeyDetailsSortType **p, int opt);
80 int z_SortKeyDetails(ODR o, Z_SortKeyDetails **p, int opt);
81 int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt);
82 int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt);
83 int z_VariantClass(ODR o, Z_VariantClass **p, int opt);
84 int z_VariantType(ODR o, Z_VariantType **p, int opt);
85 int z_VariantValue(ODR o, Z_VariantValue **p, int opt);
86 int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt);
87 int z_ValueSet(ODR o, Z_ValueSet **p, int opt);
88 int z_ValueRange(ODR o, Z_ValueRange **p, int opt);
89 int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt);
90 int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt);
91 int z_UnitType(ODR o, Z_UnitType **p, int opt);
92 int z_Units(ODR o, Z_Units **p, int opt);
93 int z_CategoryList(ODR o, Z_CategoryList **p, int opt);
94 int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt);
95 int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt);
97 int z_LanguageCode(ODR o, char **p, int opt)
99 return z_InternationalString(o, p, opt);
102 int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt)
104 if (!odr_sequence_begin(o, p, sizeof(**p)))
105 return opt && odr_ok(o);
107 odr_implicit(o, odr_generalizedtime, &(*p)->dateAdded, ODR_CONTEXT, 0, 1) &&
108 odr_implicit(o, odr_generalizedtime, &(*p)->dateChanged, ODR_CONTEXT, 1, 1) &&
109 odr_implicit(o, odr_generalizedtime, &(*p)->expiry, ODR_CONTEXT, 2, 1) &&
110 odr_implicit(o, z_LanguageCode, &(*p)->humanStringLanguage, ODR_CONTEXT, 3, 1) &&
111 z_OtherInformation(o, &(*p)->otherInfo, 1) &&
115 int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt)
117 if (!odr_sequence_begin(o, p, sizeof(**p)))
118 return opt && odr_ok(o);
120 odr_implicit(o, z_LanguageCode, &(*p)->language, ODR_CONTEXT, 0, 1) &&
121 odr_implicit(o, z_InternationalString, &(*p)->text, ODR_CONTEXT,
126 int z_HumanString(ODR o, Z_HumanString **p, int opt)
128 if (o->direction == ODR_DECODE)
129 *p = odr_malloc(o, sizeof(**p));
131 return opt && odr_ok(o);
132 if (odr_sequence_of(o, z_HumanStringUnit, &(*p)->strings,
136 return opt && odr_ok(o);
139 int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt)
141 static Odr_arm arm[] =
143 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IconObject_ianaType,
144 z_InternationalString},
145 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IconObject_z3950type,
146 z_InternationalString},
147 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IconObject_otherType,
148 z_InternationalString},
152 if (!odr_sequence_begin(o, p, sizeof(**p)))
153 return opt && odr_ok(o);
155 odr_constructed_begin(o, &(*p)->bodyType, ODR_CONTEXT, 1) &&
156 odr_choice(o, arm, &(*p)->bodyType, &(*p)->which) &&
157 odr_constructed_end(o) &&
158 odr_implicit(o, odr_octetstring, &(*p)->content, ODR_CONTEXT, 2, 0) &&
162 int z_IconObject(ODR o, Z_IconObject **p, int opt)
164 if (o->direction == ODR_DECODE)
165 *p = odr_malloc(o, sizeof(**p));
168 if (odr_sequence_of(o, z_IconObjectUnit, &(*p)->iconUnits,
169 &(*p)->num_iconUnits))
172 return opt && odr_ok(o);
175 int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt)
177 if (!odr_sequence_begin(o, p, sizeof(**p)))
178 return opt && odr_ok(o);
180 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
181 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
182 odr_implicit(o, z_HumanString, &(*p)->address, ODR_CONTEXT, 2, 1) &&
183 odr_implicit(o, z_InternationalString, &(*p)->email, ODR_CONTEXT, 3, 1) &&
184 odr_implicit(o, z_InternationalString, &(*p)->phone, ODR_CONTEXT, 4, 1) &&
188 int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt)
190 if (!odr_sequence_begin(o, p, sizeof(**p)))
193 odr_implicit(o, z_InternationalString, &(*p)->hostAddress, ODR_CONTEXT, 0, 0) &&
194 odr_implicit(o, odr_integer, &(*p)->port, ODR_CONTEXT, 1, 0) &&
198 int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt)
200 if (!odr_sequence_begin(o, p, sizeof(**p)))
203 odr_implicit(o, z_InternationalString, &(*p)->pSel, ODR_CONTEXT, 0, 0) &&
204 odr_implicit(o, z_InternationalString, &(*p)->sSel, ODR_CONTEXT, 1, 1) &&
205 odr_implicit(o, z_InternationalString, &(*p)->tSel, ODR_CONTEXT, 2, 1) &&
206 odr_implicit(o, z_InternationalString, &(*p)->nSap, ODR_CONTEXT, 3, 0) &&
210 int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt)
212 if (!odr_sequence_begin(o, p, sizeof(**p)))
215 odr_implicit(o, z_InternationalString, &(*p)->type, ODR_CONTEXT, 0, 0) &&
216 odr_implicit(o, z_InternationalString, &(*p)->address, ODR_CONTEXT, 1, 0) &&
220 int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt)
222 static Odr_arm arm[] =
224 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_NetworkAddress_iA,
226 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_NetworkAddress_oPA,
227 z_NetworkAddressOPA},
228 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_NetworkAddress_other,
229 z_NetworkAddressOther},
233 if (o->direction == ODR_DECODE)
234 *p = odr_malloc(o, sizeof(**p));
237 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
240 return opt && odr_ok(o);
243 int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt)
245 if (!odr_sequence_begin(o, p, sizeof(**p)))
246 return opt && odr_ok(o);
248 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
249 (odr_sequence_of(o, z_QueryTypeDetails, &(*p)->queryTypesSupported,
250 &(*p)->num_queryTypesSupported) || odr_ok(o)) &&
251 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
252 (odr_sequence_of(o, odr_oid, &(*p)->diagnosticsSets,
253 &(*p)->num_diagnosticsSets) || odr_ok(o)) &&
254 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
255 (odr_sequence_of(o, odr_oid, &(*p)->attributeSetIds,
256 &(*p)->num_attributeSetIds) || odr_ok(o)) &&
257 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
258 (odr_sequence_of(o, odr_oid, &(*p)->schemas, &(*p)->num_schemas) ||
260 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
261 (odr_sequence_of(o, odr_oid, &(*p)->recordSyntaxes,
262 &(*p)->num_recordSyntaxes) || odr_ok(o)) &&
263 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
264 (odr_sequence_of(o, odr_oid, &(*p)->resourceChallenges,
265 &(*p)->num_resourceChallenges) || odr_ok(o)) &&
266 odr_implicit(o, z_AccessRestrictions, &(*p)->restrictedAccess,
267 ODR_CONTEXT, 6, 1) &&
268 odr_implicit(o, z_Costs, &(*p)->costInfo, ODR_CONTEXT, 8, 1) &&
269 odr_implicit_settag(o, ODR_CONTEXT, 9) &&
270 (odr_sequence_of(o, odr_oid, &(*p)->variantSets,
271 &(*p)->num_variantSets) || odr_ok(o)) &&
272 odr_implicit_settag(o, ODR_CONTEXT, 10) &&
273 (odr_sequence_of(o, z_ElementSetName, &(*p)->elementSetNames,
274 &(*p)->num_elementSetNames) || odr_ok(o)) &&
275 odr_implicit_settag(o, ODR_CONTEXT, 11) &&
276 (odr_sequence_of(o, z_InternationalString, &(*p)->unitSystems,
277 &(*p)->num_unitSystems) || odr_ok(o)) &&
281 int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt)
283 static Odr_arm arm[] =
285 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_QueryTypeDetails_private,
286 z_PrivateCapabilities},
287 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_QueryTypeDetails_rpn,
289 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_QueryTypeDetails_iso8777,
290 z_Iso8777Capabilities},
291 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_QueryTypeDetails_z3958,
293 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_QueryTypeDetails_erpn,
295 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_QueryTypeDetails_rankedList,
300 if (o->direction == ODR_DECODE)
301 *p = odr_malloc(o, sizeof(**p));
304 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
307 return opt && odr_ok(o);
310 int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt)
312 if (!odr_sequence_begin(o, p, sizeof(**p)))
313 return opt && odr_ok(o);
315 odr_implicit(o, z_InternationalString, &(*p)->operator, ODR_CONTEXT, 0, 0) &&
316 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
320 int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt)
322 if (!odr_sequence_begin(o, p, sizeof(**p)))
323 return opt && odr_ok(o);
325 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
326 (odr_sequence_of(o, z_PrivateCapOperator, &(*p)->operators,
327 &(*p)->num_operators) || odr_ok(o)) &&
328 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
329 (odr_sequence_of(o, z_SearchKey, &(*p)->searchKeys,
330 &(*p)->num_searchKeys) || odr_ok(o)) &&
331 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
332 (odr_sequence_of(o, z_HumanString, &(*p)->description,
333 &(*p)->num_description) || odr_ok(o)) &&
337 int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt)
339 if (!odr_sequence_begin(o, p, sizeof(**p)))
340 return opt && odr_ok(o);
342 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
343 (odr_sequence_of(o, odr_integer, &(*p)->operators, &(*p)->num_operators) || odr_ok(o)) &&
344 odr_implicit(o, odr_bool, &(*p)->resultSetAsOperandSupported,
345 ODR_CONTEXT, 1, 0) &&
346 odr_implicit(o, odr_bool, &(*p)->restrictionOperandSupported,
347 ODR_CONTEXT, 2, 0) &&
348 odr_implicit(o, z_ProximitySupport, &(*p)->proximity, ODR_CONTEXT,
353 int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt)
355 if (!odr_sequence_begin(o, p, sizeof(**p)))
356 return opt && odr_ok(o);
358 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
359 odr_sequence_of(o, z_SearchKey, &(*p)->searchKeys,
360 &(*p)->num_searchKeys) &&
361 odr_implicit(o, z_HumanString, &(*p)->restrictions, ODR_CONTEXT,
366 int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt)
368 if (!odr_sequence_begin(o, p, sizeof(**p)))
369 return opt && odr_ok(o);
371 odr_implicit(o, odr_integer, &(*p)->unit, ODR_CONTEXT, 0, 0) &&
372 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
376 int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt)
378 static Odr_arm arm[] =
380 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ProxSupportUnit_known,
382 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ProxSupportUnit_private,
383 z_ProxSupportPrivate},
387 if (o->direction == ODR_DECODE)
388 *p = odr_malloc(o, sizeof(**p));
391 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
394 return opt && odr_ok(o);
397 int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt)
399 if (!odr_sequence_begin(o, p, sizeof(**p)))
400 return opt && odr_ok(o);
402 odr_implicit(o, odr_bool, &(*p)->anySupport, ODR_CONTEXT, 0, 0) &&
403 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
404 (odr_sequence_of(o, z_ProxSupportUnit, &(*p)->unitsSupported,
405 &(*p)->num_unitsSupported) || odr_ok(o)) &&
409 int z_SearchKey(ODR o, Z_SearchKey **p, int opt)
411 if (!odr_sequence_begin(o, p, sizeof(**p)))
412 return opt && odr_ok(o);
414 odr_implicit(o, z_InternationalString, &(*p)->searchKey, ODR_CONTEXT, 0, 0) &&
415 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
419 int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt)
421 if (!odr_sequence_begin(o, p, sizeof(**p)))
422 return opt && odr_ok(o);
424 odr_explicit(o, odr_integer, &(*p)->accessType, ODR_CONTEXT, 0, 0) &&
425 odr_implicit(o, z_HumanString, &(*p)->accessText, ODR_CONTEXT, 1, 1) &&
426 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
427 (odr_sequence_of(o, odr_oid, &(*p)->accessChallenges,
428 &(*p)->num_accessChallenges) || odr_ok(o)) &&
432 int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt)
434 if (o->direction == ODR_DECODE)
435 *p = odr_malloc(o, sizeof(**p));
438 if (odr_sequence_of(o, z_AccessRestrictionsUnit, &(*p)->restrictions,
439 &(*p)->num_restrictions))
442 return opt && odr_ok(o);
445 int z_CostsOtherCharge(ODR o, Z_CostsOtherCharge **p, int opt)
447 if (!odr_sequence_begin(o, p, sizeof(**p)))
448 return opt && odr_ok(o);
450 odr_implicit(o, z_HumanString, &(*p)->forWhat, ODR_CONTEXT, 1, 0) &&
451 odr_implicit(o, z_Charge, &(*p)->charge, ODR_CONTEXT, 2, 1) &&
455 int z_Costs(ODR o, Z_Costs **p, int opt)
457 if (!odr_sequence_begin(o, p, sizeof(**p)))
458 return opt && odr_ok(o);
460 odr_implicit(o, z_Charge, &(*p)->connectCharge, ODR_CONTEXT, 0, 1) &&
461 odr_implicit(o, z_Charge, &(*p)->connectTime, ODR_CONTEXT, 1, 1) &&
462 odr_implicit(o, z_Charge, &(*p)->displayCharge, ODR_CONTEXT, 2, 1) &&
463 odr_implicit(o, z_Charge, &(*p)->searchCharge, ODR_CONTEXT, 3, 1) &&
464 odr_implicit(o, z_Charge, &(*p)->subscriptCharge, ODR_CONTEXT, 4, 1) &&
465 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
466 (odr_sequence_of(o, z_CostsOtherCharge, &(*p)->otherCharges,
467 &(*p)->num_otherCharges) || odr_ok(o)) &&
471 int z_Charge(ODR o, Z_Charge **p, int opt)
473 if (!odr_sequence_begin(o, p, sizeof(**p)))
474 return opt && odr_ok(o);
476 odr_implicit(o, z_IntUnit, &(*p)->cost, ODR_CONTEXT, 1, 0) &&
477 odr_implicit(o, z_Unit, &(*p)->perWhat, ODR_CONTEXT, 2, 1) &&
478 odr_implicit(o, z_HumanString, &(*p)->text, ODR_CONTEXT, 3, 1) &&
482 int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt)
484 if (o->direction == ODR_DECODE)
485 *p = odr_malloc(o, sizeof(**p));
488 if (odr_sequence_of(o, z_DatabaseName, &(*p)->databases,
489 &(*p)->num_databases))
492 return opt && odr_ok(o);
495 int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt)
497 if (!odr_sequence_begin(o, p, sizeof(**p)))
498 return opt && odr_ok(o);
500 odr_implicit(o, odr_oid, &(*p)->defaultAttributeSet,
501 ODR_CONTEXT, 0, 0) &&
502 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
503 odr_sequence_of(o, z_AttributeCombination, &(*p)->legalCombinations,
504 &(*p)->num_legalCombinations) &&
508 int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt)
510 if (o->direction == ODR_DECODE)
511 *p = odr_malloc(o, sizeof(**p));
514 if (odr_sequence_of(o, z_AttributeOccurrence, &(*p)->occurrences,
515 &(*p)->num_occurrences))
518 return opt && odr_ok(o);
521 int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt)
523 if (o->direction == ODR_DECODE)
524 *p = odr_malloc(o, sizeof(**p));
527 if (odr_sequence_of(o, z_StringOrNumeric, &(*p)->attributes,
528 &(*p)->num_attributes))
531 return opt && odr_ok(o);
534 int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt)
536 static Odr_arm arm[] =
538 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_AttributeOcc_anyOrNone, odr_null},
539 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_AttributeOcc_specific,
540 z_AttributeValueList},
544 if (!odr_sequence_begin(o, p, sizeof(**p)))
545 return opt && odr_ok(o);
547 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 0, 1) &&
548 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 1, 0) &&
549 odr_implicit(o, odr_null, &(*p)->mustBeSupplied, ODR_CONTEXT, 2, 1) &&
550 odr_choice(o, arm, &(*p)->attributeValues, &(*p)->which) &&
554 int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt)
556 if (!odr_sequence_begin(o, p, sizeof(**p)))
557 return opt && odr_ok(o);
559 odr_explicit(o, z_StringOrNumeric, &(*p)->value, ODR_CONTEXT, 0, 0) &&
560 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
561 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
562 (odr_sequence_of(o, z_StringOrNumeric, &(*p)->subAttributes,
563 &(*p)->num_subAttributes) || odr_ok(o)) &&
564 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
565 (odr_sequence_of(o, z_StringOrNumeric, &(*p)->superAttributes,
566 &(*p)->num_superAttributes) || odr_ok(o)) &&
567 odr_implicit(o, odr_null, &(*p)->partialSupport, ODR_CONTEXT, 4, 1) &&
573 int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt)
575 if (!odr_sequence_begin(o, p, sizeof(**p)))
576 return opt && odr_ok(o);
578 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
579 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
581 odr_implicit(o, z_HumanString, &(*p)->recentNews, ODR_CONTEXT, 2, 1) &&
582 odr_implicit(o, z_IconObject, &(*p)->icon, ODR_CONTEXT, 3, 1) &&
583 odr_implicit(o, odr_bool, &(*p)->namedResultSets, ODR_CONTEXT, 4, 0) &&
584 odr_implicit(o, odr_bool, &(*p)->multipleDBsearch, ODR_CONTEXT, 5, 0) &&
585 odr_implicit(o, odr_integer, &(*p)->maxResultSets, ODR_CONTEXT, 6, 1) &&
586 odr_implicit(o, odr_integer, &(*p)->maxResultSize, ODR_CONTEXT, 7, 1) &&
587 odr_implicit(o, odr_integer, &(*p)->maxTerms, ODR_CONTEXT, 8, 1) &&
588 odr_implicit(o, z_IntUnit, &(*p)->timeoutInterval, ODR_CONTEXT, 9, 1) &&
589 odr_implicit(o, z_HumanString, &(*p)->welcomeMessage, ODR_CONTEXT,
591 odr_implicit(o, z_ContactInfo, &(*p)->contactInfo, ODR_CONTEXT,
593 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
595 odr_implicit_settag(o, ODR_CONTEXT, 13) &&
596 (odr_sequence_of(o, z_InternationalString, &(*p)->nicknames,
597 &(*p)->num_nicknames) || odr_ok(o)) &&
598 odr_implicit(o, z_HumanString, &(*p)->usageRest, ODR_CONTEXT, 14, 1) &&
599 odr_implicit(o, z_HumanString, &(*p)->paymentAddr, ODR_CONTEXT,
601 odr_implicit(o, z_HumanString, &(*p)->hours, ODR_CONTEXT, 16, 1) &&
602 odr_implicit_settag(o, ODR_CONTEXT, 17) &&
603 (odr_sequence_of(o, z_DatabaseList, &(*p)->dbCombinations,
604 &(*p)->num_dbCombinations) || odr_ok(o)) &&
605 odr_implicit_settag(o, ODR_CONTEXT, 18) &&
606 (odr_sequence_of(o, z_NetworkAddress, &(*p)->addresses,
607 &(*p)->num_addresses) || odr_ok(o)) &&
608 odr_implicit(o, z_AccessInfo, &(*p)->commonAccessInfo, ODR_CONTEXT,
613 int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt)
615 static Odr_arm arm[] =
617 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Exp_RecordCount_actualNumber,
619 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Exp_RecordCount_approxNumber,
624 if (!odr_sequence_begin(o, p, sizeof(**p)))
625 return opt && odr_ok(o);
627 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
628 odr_implicit(o, z_DatabaseName, &(*p)->name, ODR_CONTEXT, 1, 0) &&
629 odr_implicit(o, odr_null, &(*p)->explainDatabase, ODR_CONTEXT, 2, 1) &&
630 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
631 (odr_sequence_of(o, z_DatabaseName, &(*p)->nicknames,
632 &(*p)->num_nicknames) || odr_ok(o)) &&
633 odr_implicit(o, z_IconObject, &(*p)->icon, ODR_CONTEXT, 4, 1) &&
634 odr_implicit(o, odr_bool, &(*p)->userFee, ODR_CONTEXT, 5, 0) &&
635 odr_implicit(o, odr_bool, &(*p)->available, ODR_CONTEXT, 6, 0) &&
636 odr_implicit(o, z_HumanString, &(*p)->titleString, ODR_CONTEXT, 7, 1) &&
637 odr_implicit_settag(o, ODR_CONTEXT, 8) &&
638 (odr_sequence_of(o, z_HumanString, &(*p)->keywords,
639 &(*p)->num_keywords) || odr_ok(o)) &&
640 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 9, 1) &&
641 odr_implicit(o, z_DatabaseList, &(*p)->associatedDbs, ODR_CONTEXT,
643 odr_implicit(o, z_DatabaseList, &(*p)->subDbs, ODR_CONTEXT, 11, 1) &&
644 odr_implicit(o, z_HumanString, &(*p)->disclaimers, ODR_CONTEXT,
646 odr_implicit(o, z_HumanString, &(*p)->news, ODR_CONTEXT, 13, 1) &&
647 ((odr_constructed_begin(o, p, ODR_CONTEXT, 14) &&
648 odr_choice(o, arm, &(*p)->recordCount, &(*p)->recordCount_which) &&
649 odr_constructed_end(o)) || odr_ok(o)) &&
650 odr_implicit(o, z_HumanString, &(*p)->defaultOrder, ODR_CONTEXT,
652 odr_implicit(o, odr_integer, &(*p)->avRecordSize, ODR_CONTEXT, 16, 1) &&
653 odr_implicit(o, odr_integer, &(*p)->maxRecordSize, ODR_CONTEXT,
655 odr_implicit(o, z_HumanString, &(*p)->hours, ODR_CONTEXT, 18, 1) &&
656 odr_implicit(o, z_HumanString, &(*p)->bestTime, ODR_CONTEXT, 19, 1) &&
657 odr_implicit(o, odr_generalizedtime, &(*p)->lastUpdate, ODR_CONTEXT,
659 odr_implicit(o, z_IntUnit, &(*p)->updateInterval, ODR_CONTEXT, 21, 1) &&
660 odr_implicit(o, z_HumanString, &(*p)->coverage, ODR_CONTEXT, 22, 1) &&
661 odr_implicit(o, odr_bool, &(*p)->proprietary, ODR_CONTEXT, 23, 1) &&
662 odr_implicit(o, z_HumanString, &(*p)->copyrightText, ODR_CONTEXT,
664 odr_implicit(o, z_HumanString, &(*p)->copyrightNotice, ODR_CONTEXT,
666 odr_implicit(o, z_ContactInfo, &(*p)->producerContactInfo, ODR_CONTEXT,
668 odr_implicit(o, z_ContactInfo, &(*p)->supplierContactInfo, ODR_CONTEXT,
670 odr_implicit(o, z_ContactInfo, &(*p)->submissionContactInfo,
671 ODR_CONTEXT, 28, 1) &&
672 odr_implicit(o, z_AccessInfo, &(*p)->accessInfo, ODR_CONTEXT, 29, 1) &&
676 int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt)
678 if (!odr_sequence_begin(o, p, sizeof(**p)))
681 odr_implicit(o, odr_integer, &(*p)->tagType, ODR_CONTEXT, 0, 0) &&
682 odr_implicit(o, odr_oid, &(*p)->tagSet, ODR_CONTEXT, 1, 1) &&
683 odr_implicit(o, odr_null, &(*p)->defaultTagType, ODR_CONTEXT, 2, 1) &&
687 int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt)
689 if (!odr_sequence_begin(o, p, sizeof(**p)))
690 return opt && odr_ok(o);
692 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
693 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 1, 0) &&
694 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
696 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 3, 1) &&
697 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
698 (odr_sequence_of(o, z_TagTypeMapping, &(*p)->tagTypeMapping,
699 &(*p)->num_tagTypeMapping) || odr_ok(o)) &&
700 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
701 (odr_sequence_of(o, z_ElementInfo, &(*p)->recordStructure,
702 &(*p)->num_recordStructure) || odr_ok(o)) &&
706 int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt)
708 if (!odr_sequence_begin(o, p, sizeof(**p)))
709 return opt && odr_ok(o);
711 odr_implicit(o, z_InternationalString, &(*p)->elementName, ODR_CONTEXT, 1, 0) &&
712 odr_implicit(o, z_Path, &(*p)->elementTagPath, ODR_CONTEXT, 2, 0) &&
713 odr_explicit(o, z_ElementDataType, &(*p)->dataType, ODR_CONTEXT, 3, 1) &&
714 odr_implicit(o, odr_bool, &(*p)->required, ODR_CONTEXT, 4, 0) &&
715 odr_implicit(o, odr_bool, &(*p)->repeatable, ODR_CONTEXT, 5, 0) &&
716 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 6, 1) &&
720 int z_PathUnit(ODR o, Z_PathUnit **p, int opt)
722 if (!odr_sequence_begin(o, p, sizeof(**p)))
725 odr_implicit(o, odr_integer, &(*p)->tagType, ODR_CONTEXT, 1, 0) &&
726 odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue, ODR_CONTEXT,
731 int z_Path(ODR o, Z_Path **p, int opt)
733 if (o->direction == ODR_DECODE)
734 *p = odr_malloc(o, sizeof(**p));
737 odr_implicit_settag(o, ODR_CONTEXT, 201);
738 if (odr_sequence_of(o, z_OtherInformationUnit, &(*p)->list,
742 return opt && odr_ok(o);
745 int z_ElementInfoList(ODR o, Z_Path **p, int opt)
747 if (o->direction == ODR_DECODE)
748 *p = odr_malloc(o, sizeof(**p));
751 odr_implicit_settag(o, ODR_CONTEXT, 201);
752 if (odr_sequence_of(o, z_OtherInformationUnit, &(*p)->list,
756 return opt && odr_ok(o);
759 int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt)
761 static Odr_arm arm[] =
763 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ElementDataType_primitive,
765 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ElementDataType_structured,
770 if (o->direction == ODR_DECODE)
771 *p = odr_malloc(o, sizeof(**p));
775 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
778 return opt && odr_ok(o);
781 int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt)
783 if (!odr_sequence_begin(o, p, sizeof(**p)))
786 odr_implicit(o, z_InternationalString, &(*p)->elementName,
787 ODR_CONTEXT, 1, 0) &&
788 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
789 (odr_sequence_of(o, z_InternationalString, &(*p)->nicknames,
790 &(*p)->num_nicknames) || odr_ok(o)) &&
791 odr_explicit(o, z_StringOrNumeric, &(*p)->elementTag, ODR_CONTEXT,
793 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
795 odr_implicit(o, odr_integer, &(*p)->dataType, ODR_CONTEXT, 5, 1) &&
796 z_OtherInformation(o, &(*p)->otherTagInfo, 1) &&
800 int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt)
802 if (!odr_sequence_begin(o, p, sizeof(**p)))
803 return opt && odr_ok(o);
805 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
806 odr_implicit(o, odr_oid, &(*p)->tagSet, ODR_CONTEXT, 1, 0) &&
807 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
809 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT,
811 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
812 (odr_sequence_of(o, z_TagSetInfoElements, &(*p)->elements,
813 &(*p)->num_elements) || odr_ok(o)) &&
817 int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt)
819 if (!odr_sequence_begin(o, p, sizeof(**p)))
820 return opt && odr_ok(o);
822 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
823 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 1, 0) &&
824 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
826 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
827 (odr_sequence_of(o, odr_oid, &(*p)->transferSyntaxes,
828 &(*p)->num_transferSyntaxes) || odr_ok(o)) &&
829 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
830 odr_implicit(o, z_InternationalString, &(*p)->asn1Module, ODR_CONTEXT,
832 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
833 (odr_sequence_of(o, z_ElementInfo, &(*p)->abstractStructure,
834 &(*p)->num_abstractStructure) || odr_ok(o)) &&
838 int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt)
840 if (!odr_sequence_begin(o, p, sizeof(**p)))
841 return opt && odr_ok(o);
843 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
844 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 1, 0) &&
845 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 2, 0) &&
846 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
847 (odr_sequence_of(o, z_AttributeType, &(*p)->attributes,
848 &(*p)->num_attributes) || odr_ok(o)) &&
849 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
853 int z_AttributeType(ODR o, Z_AttributeType **p, int opt)
855 if (!odr_sequence_begin(o, p, sizeof(**p)))
856 return opt && odr_ok(o);
858 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
859 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
860 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 2, 0) &&
861 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
862 odr_sequence_of(o, z_AttributeDescription, &(*p)->attributeValues,
863 &(*p)->num_attributeValues) &&
867 int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt)
869 if (!odr_sequence_begin(o, p, sizeof(**p)))
870 return opt && odr_ok(o);
872 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
873 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
874 odr_explicit(o, z_StringOrNumeric, &(*p)->attributeValue, ODR_CONTEXT, 2, 0) &&
875 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
876 (odr_sequence_of(o, z_StringOrNumeric, &(*p)->equivalentAttributes,
877 &(*p)->num_equivalentAttributes) || odr_ok(o)) &&
881 int z_TermListElement(ODR o, Z_TermListElement **p, int opt)
883 if (!odr_sequence_begin(o, p, sizeof(**p)))
884 return opt && odr_ok(o);
886 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 1, 0) &&
887 odr_implicit(o, z_HumanString, &(*p)->title, ODR_CONTEXT, 2, 1) &&
888 odr_implicit(o, odr_integer, &(*p)->searchCost, ODR_CONTEXT, 3, 1) &&
889 odr_implicit(o, odr_bool, &(*p)->scanable, ODR_CONTEXT, 4, 0) &&
890 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
891 (odr_sequence_of(o, z_InternationalString, &(*p)->broader,
892 &(*p)->num_broader) || odr_ok(o)) &&
893 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
894 (odr_sequence_of(o, z_InternationalString, &(*p)->narrower,
895 &(*p)->num_narrower) || odr_ok(o)) &&
899 int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt)
901 if (!odr_sequence_begin(o, p, sizeof(**p)))
902 return opt && odr_ok(o);
904 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
905 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
907 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
908 (odr_sequence_of(o, z_TermListElement, &(*p)->termLists,
909 &(*p)->num_termLists) || odr_ok(o)) &&
913 int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt)
915 if (!odr_sequence_begin(o, p, sizeof(**p)))
916 return opt && odr_ok(o);
918 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
919 odr_implicit(o, odr_oid, &(*p)->type, ODR_CONTEXT, 1, 0) &&
920 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 2, 1) &&
921 odr_implicit(o, odr_bool, &(*p)->privateType, ODR_CONTEXT, 3, 0) &&
922 odr_implicit(o, odr_bool, &(*p)->restrictionsApply, ODR_CONTEXT, 5, 0) &&
923 odr_implicit(o, odr_bool, &(*p)->feeApply, ODR_CONTEXT, 6, 0) &&
924 odr_implicit(o, odr_bool, &(*p)->available, ODR_CONTEXT, 7, 0) &&
925 odr_implicit(o, odr_bool, &(*p)->retentionSupported, ODR_CONTEXT, 8, 0) &&
926 odr_implicit(o, odr_integer, &(*p)->waitAction, ODR_CONTEXT, 9, 0) &&
927 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 10, 1) &&
928 odr_implicit(o, z_External, &(*p)->specificExplain, ODR_CONTEXT, 11, 1) &&
929 odr_implicit(o, z_InternationalString, &(*p)->esASN, ODR_CONTEXT, 12, 1) &&
933 int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt)
935 if (!odr_sequence_begin(o, p, sizeof(**p)))
936 return opt && odr_ok(o);
938 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
939 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) &&
940 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
941 (odr_sequence_of(o, z_AttributeSetDetails, &(*p)->attributesBySet,
942 &(*p)->num_attributesBySet) && odr_ok(o)) &&
943 odr_implicit(o, z_AttributeCombinations, &(*p)->attributeCombinations, ODR_CONTEXT, 3, 1) &&
947 int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt)
949 if (!odr_sequence_begin(o, p, sizeof(**p)))
950 return opt && odr_ok(o);
952 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT,
954 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
955 odr_sequence_of(o, z_AttributeTypeDetails, &(*p)->attributesByType,
956 &(*p)->num_attributesByType) &&
960 int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt)
962 if (!odr_sequence_begin(o, p, sizeof(**p)))
963 return opt && odr_ok(o);
965 odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 0, 0) &&
966 odr_implicit(o, z_OmittedAttributeInterpretation, &(*p)->optionalType, ODR_CONTEXT, 1, 1) &&
967 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
968 (odr_sequence_of(o, z_AttributeValue, &(*p)->attributeValues,
969 &(*p)->num_attributeValues) || odr_ok(o)) &&
973 int z_OmittedAttributeInterpretation(ODR o, Z_OmittedAttributeInterpretation **p, int opt)
975 if (!odr_sequence_begin(o, p, sizeof(**p)))
976 return opt && odr_ok(o);
978 odr_explicit(o, z_StringOrNumeric, &(*p)->defaultValue, ODR_CONTEXT, 0, 1) &&
979 odr_implicit(o, z_HumanString, &(*p)->defaultDescription, ODR_CONTEXT, 1, 1) &&
983 int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt)
985 if (!odr_sequence_begin(o, p, sizeof(**p)))
986 return opt && odr_ok(o);
988 odr_implicit(o, odr_integer, &(*p)->maxStepSize, ODR_CONTEXT, 0, 1) &&
989 odr_implicit(o, z_HumanString, &(*p)->collatingSequence, ODR_CONTEXT, 1, 1) &&
990 odr_implicit(o, odr_bool, &(*p)->increasing, ODR_CONTEXT, 2, 1) &&
994 int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt)
996 if (!odr_sequence_begin(o, p, sizeof(**p)))
997 return opt && odr_ok(o);
999 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1000 odr_implicit(o, z_InternationalString, &(*p)->termListName, ODR_CONTEXT, 1, 0) &&
1001 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 2, 1) &&
1002 odr_implicit(o, z_AttributeCombinations, &(*p)->attributes, ODR_CONTEXT, 3, 1) &&
1003 odr_implicit(o, z_EScanInfo, &(*p)->scanInfo, ODR_CONTEXT, 4, 1) &&
1004 odr_implicit(o, odr_integer, &(*p)->estNumberTerms, ODR_CONTEXT, 5, 1) &&
1005 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
1006 (odr_sequence_of(o, z_Term, &(*p)->sampleTerms,
1007 &(*p)->num_sampleTerms) || odr_ok(o)) &&
1008 odr_sequence_end(o);
1011 int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt)
1013 if (!odr_sequence_begin(o, p, sizeof(**p)))
1014 return opt && odr_ok(o);
1016 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1017 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) &&
1018 odr_implicit(o, z_ElementSetName, &(*p)->elementSetName, ODR_CONTEXT, 2, 0) &&
1019 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 3, 0) &&
1020 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 4, 0) &&
1021 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 5, 1) &&
1022 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
1023 (odr_sequence_of(o, z_PerElementDetails, &(*p)->detailsPerElement, &(*p)->num_detailsPerElement) || odr_ok(o)) &&
1024 odr_sequence_end(o);
1027 int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt)
1029 if (!odr_sequence_begin(o, p, sizeof(**p)))
1030 return opt && odr_ok(o);
1032 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1033 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) &&
1034 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 2, 0) &&
1035 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 3, 0) &&
1036 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
1037 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
1038 (odr_sequence_of(o, z_PerElementDetails, &(*p)->detailsPerElement,
1039 &(*p)->num_detailsPerElement) || odr_ok(o)) &&
1040 odr_sequence_end(o);
1043 int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt)
1045 if (!odr_sequence_begin(o, p, sizeof(**p)))
1046 return opt && odr_ok(o);
1048 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
1049 odr_implicit(o, z_RecordTag, &(*p)->recordTag, ODR_CONTEXT, 1, 1) &&
1050 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1051 (odr_sequence_of(o, z_Path, &(*p)->schemaTags, &(*p)->num_schemaTags) ||
1053 odr_implicit(o, odr_integer, &(*p)->maxSize, ODR_CONTEXT, 3, 1) &&
1054 odr_implicit(o, odr_integer, &(*p)->minSize, ODR_CONTEXT, 4, 1) &&
1055 odr_implicit(o, odr_integer, &(*p)->avgSize, ODR_CONTEXT, 5, 1) &&
1056 odr_implicit(o, odr_integer, &(*p)->fixedSize, ODR_CONTEXT, 6, 1) &&
1057 odr_implicit(o, odr_bool, &(*p)->repeatable, ODR_CONTEXT, 8, 0) &&
1058 odr_implicit(o, odr_bool, &(*p)->required, ODR_CONTEXT, 9, 0) &&
1059 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 12, 1) &&
1060 odr_implicit(o, z_HumanString, &(*p)->contents, ODR_CONTEXT, 13, 1) &&
1061 odr_implicit(o, z_HumanString, &(*p)->billingInfo, ODR_CONTEXT, 14, 1) &&
1062 odr_implicit(o, z_HumanString, &(*p)->restrictions, ODR_CONTEXT, 15, 1) &&
1063 odr_implicit_settag(o, ODR_CONTEXT, 16) &&
1064 (odr_sequence_of(o, z_InternationalString, &(*p)->alternateNames,
1065 &(*p)->num_alternateNames) || odr_ok(o)) &&
1066 odr_implicit_settag(o, ODR_CONTEXT, 17) &&
1067 (odr_sequence_of(o, z_InternationalString, &(*p)->genericNames,
1068 &(*p)->num_genericNames) || odr_ok(o)) &&
1069 odr_implicit(o, z_AttributeCombinations, &(*p)->searchAccess,
1070 ODR_CONTEXT, 18, 1) &&
1071 odr_sequence_end(o);
1074 int z_RecordTag(ODR o, Z_RecordTag **p, int opt)
1076 if (!odr_sequence_begin(o, p, sizeof(**p)))
1077 return opt && odr_ok(o);
1079 odr_explicit(o, z_StringOrNumeric, &(*p)->qualifier, ODR_CONTEXT,
1081 odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue, ODR_CONTEXT,
1083 odr_sequence_end(o);
1086 int z_SortDetails(ODR o, Z_SortDetails **p, int opt)
1088 if (!odr_sequence_begin(o, p, sizeof(**p)))
1089 return opt && odr_ok(o);
1091 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1092 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
1094 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1095 (odr_sequence_of(o, z_SortKeyDetails, &(*p)->sortKeys,
1096 &(*p)->num_sortKeys) || odr_ok(o)) &&
1097 odr_sequence_end(o);
1100 int z_SortKeyDetailsSortType(ODR o, Z_SortKeyDetailsSortType **p, int opt)
1102 static Odr_arm arm[] =
1104 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_character,
1106 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_numeric,
1108 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_structured,
1113 if (o->direction == ODR_DECODE)
1114 *p = odr_malloc(o, sizeof(**p));
1117 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1120 return opt && odr_ok(o);
1123 int z_SortKeyDetails(ODR o, Z_SortKeyDetails **p, int opt)
1125 if (!odr_sequence_begin(o, p, sizeof(**p)))
1126 return opt && odr_ok(o);
1128 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 0, 1) &&
1129 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
1130 (odr_sequence_of(o, z_Specification, &(*p)->elementSpecifications,
1131 &(*p)->num_elementSpecifications) || odr_ok(o)) &&
1132 odr_implicit(o, z_AttributeCombinations, &(*p)->attributeSpecifications,
1133 ODR_CONTEXT, 2, 1) &&
1134 odr_explicit(o, z_SortKeyDetailsSortType, &(*p)->sortType, ODR_CONTEXT,
1136 odr_implicit(o, odr_integer, &(*p)->caseSensitivity, ODR_CONTEXT,
1138 odr_sequence_end(o);
1141 int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt)
1143 if (!odr_sequence_begin(o, p, sizeof(**p)))
1144 return opt && odr_ok(o);
1146 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1147 odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT,
1149 odr_implicit(o, odr_integer, &(*p)->processingContext, ODR_CONTEXT,
1151 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1153 odr_implicit(o, odr_oid, &(*p)->oid, ODR_CONTEXT, 4, 0) &&
1154 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 5, 1) &&
1155 odr_implicit(o, z_External, &(*p)->instructions, ODR_CONTEXT, 6, 1) &&
1156 odr_sequence_end(o);
1159 int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt)
1161 if (!odr_sequence_begin(o, p, sizeof(**p)))
1162 return opt && odr_ok(o);
1164 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1165 odr_implicit(o, odr_oid, &(*p)->variantSet, ODR_CONTEXT, 1, 0) &&
1166 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1168 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1169 (odr_sequence_of(o, z_VariantClass, &(*p)->variants,
1170 &(*p)->num_variants) || odr_ok(o)) &&
1171 odr_sequence_end(o);
1174 int z_VariantClass(ODR o, Z_VariantClass **p, int opt)
1176 if (!odr_sequence_begin(o, p, sizeof(**p)))
1177 return opt && odr_ok(o);
1179 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1181 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1182 odr_implicit(o, odr_integer, &(*p)->variantClass, ODR_CONTEXT, 2, 0) &&
1183 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1184 odr_sequence_of(o, z_VariantType, &(*p)->variantTypes,
1185 &(*p)->num_variantTypes) &&
1186 odr_sequence_end(o);
1189 int z_VariantType(ODR o, Z_VariantType **p, int opt)
1191 if (!odr_sequence_begin(o, p, sizeof(**p)))
1192 return opt && odr_ok(o);
1194 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
1195 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1196 odr_implicit(o, odr_integer, &(*p)->variantType, ODR_CONTEXT, 2, 0) &&
1197 odr_implicit(o, z_VariantValue, &(*p)->variantValue, ODR_CONTEXT, 3, 1) &&
1198 odr_sequence_end(o);
1201 int z_VariantValue(ODR o, Z_VariantValue **p, int opt)
1203 if (!odr_sequence_begin(o, p, sizeof(**p)))
1204 return opt && odr_ok(o);
1206 odr_explicit(o, odr_integer, &(*p)->dataType, ODR_CONTEXT, 0, 0) &&
1207 odr_explicit(o, z_ValueSet, &(*p)->values, ODR_CONTEXT, 1, 1) &&
1208 odr_sequence_end(o);
1211 int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt)
1213 if (o->direction == ODR_DECODE)
1214 *p = odr_malloc(o, sizeof(**p));
1217 if (odr_sequence_of(o, z_ValueDescription, &(*p)->enumerated,
1218 &(*p)->num_enumerated))
1221 return opt && odr_ok(o);
1224 int z_ValueSet(ODR o, Z_ValueSet **p, int opt)
1226 static Odr_arm arm[] =
1228 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ValueSet_range, z_ValueRange},
1229 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueSet_enumerated,
1230 z_ValueSetEnumerated},
1234 if (o->direction == ODR_DECODE)
1235 *p = odr_malloc(o, sizeof(**p));
1238 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1241 return opt && odr_ok(o);
1244 int z_ValueRange(ODR o, Z_ValueRange **p, int opt)
1246 if (!odr_sequence_begin(o, p, sizeof(**p)))
1247 return opt && odr_ok(o);
1249 odr_explicit(o, z_ValueDescription, &(*p)->lower, ODR_CONTEXT, 0, 1) &&
1250 odr_explicit(o, z_ValueDescription, &(*p)->upper, ODR_CONTEXT, 1, 1) &&
1251 odr_sequence_end(o);
1254 int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt)
1256 static Odr_arm arm[] =
1258 {ODR_NONE, -1, -1, Z_ValueDescription_integer, odr_integer},
1259 {ODR_NONE, -1, -1, Z_ValueDescription_string, z_InternationalString},
1260 {ODR_NONE, -1, -1, Z_ValueDescription_octets, odr_octetstring},
1261 {ODR_NONE, -1, -1, Z_ValueDescription_oid, odr_oid},
1262 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueDescription_unit, z_Unit},
1263 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ValueDescription_valueAndUnit, z_IntUnit},
1267 if (o->direction == ODR_DECODE)
1268 *p = odr_malloc(o, sizeof(**p));
1270 return opt && odr_ok(o);
1271 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1274 return opt && odr_ok(o);
1277 int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt)
1279 if (!odr_sequence_begin(o, p, sizeof(**p)))
1280 return opt && odr_ok(o);
1282 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1283 odr_implicit(o, z_InternationalString, &(*p)->unitSystem, ODR_CONTEXT,
1285 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 2, 1) &&
1286 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1287 (odr_sequence_of(o, z_UnitType, &(*p)->units, &(*p)->num_units) ||
1289 odr_sequence_end(o);
1292 int z_UnitType(ODR o, Z_UnitType **p, int opt)
1294 if (!odr_sequence_begin(o, p, sizeof(**p)))
1295 return opt && odr_ok(o);
1297 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
1299 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1300 odr_explicit(o, z_StringOrNumeric, &(*p)->unitType, ODR_CONTEXT,
1302 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1303 odr_sequence_of(o, z_Units, &(*p)->units, &(*p)->num_units) &&
1304 odr_sequence_end(o);
1307 int z_Units(ODR o, Z_Units **p, int opt)
1309 if (!odr_sequence_begin(o, p, sizeof(**p)))
1310 return opt && odr_ok(o);
1312 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) &&
1313 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) &&
1314 odr_explicit(o, z_StringOrNumeric, &(*p)->unit, ODR_CONTEXT, 2, 0) &&
1315 odr_sequence_end(o);
1318 int z_CategoryList(ODR o, Z_CategoryList **p, int opt)
1320 if (!odr_sequence_begin(o, p, sizeof(**p)))
1321 return opt && odr_ok(o);
1323 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1324 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
1325 odr_sequence_of(o, z_CategoryInfo, &(*p)->categories,
1326 &(*p)->num_categories) &&
1327 odr_sequence_end(o);
1330 int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt)
1332 if (!odr_sequence_begin(o, p, sizeof(**p)))
1333 return opt && odr_ok(o);
1335 odr_implicit(o, z_InternationalString, &(*p)->category, ODR_CONTEXT,
1337 odr_implicit(o, z_InternationalString, &(*p)->originalCategory,
1338 ODR_CONTEXT, 2, 1) &&
1339 odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 3, 1) &&
1340 odr_implicit(o, z_InternationalString, &(*p)->asn1Module, ODR_CONTEXT,
1342 odr_sequence_end(o);
1345 int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt)
1347 static Odr_arm arm[] =
1349 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Explain_targetInfo, z_TargetInfo},
1350 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Explain_databaseInfo, z_DatabaseInfo},
1351 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_Explain_schemaInfo, z_SchemaInfo},
1352 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_Explain_tagSetInfo, z_TagSetInfo},
1353 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_Explain_recordSyntaxInfo,
1354 z_RecordSyntaxInfo},
1355 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_Explain_attributeSetInfo,
1356 z_AttributeSetInfo},
1357 {ODR_IMPLICIT, ODR_CONTEXT, 6, Z_Explain_termListInfo,
1359 {ODR_IMPLICIT, ODR_CONTEXT, 7, Z_Explain_extendedServicesInfo,
1360 z_ExtendedServicesInfo},
1361 {ODR_IMPLICIT, ODR_CONTEXT, 8, Z_Explain_attributeDetails,
1362 z_AttributeDetails},
1363 {ODR_IMPLICIT, ODR_CONTEXT, 9, Z_Explain_termListDetails,
1365 {ODR_IMPLICIT, ODR_CONTEXT, 10, Z_Explain_elementSetDetails,
1366 z_ElementSetDetails},
1367 {ODR_IMPLICIT, ODR_CONTEXT, 11, Z_Explain_retrievalRecordDetails,
1368 z_RetrievalRecordDetails},
1369 {ODR_IMPLICIT, ODR_CONTEXT, 12, Z_Explain_sortDetails,
1371 {ODR_IMPLICIT, ODR_CONTEXT, 13, Z_Explain_processing,
1372 z_ProcessingInformation},
1373 {ODR_IMPLICIT, ODR_CONTEXT, 14, Z_Explain_variants,
1375 {ODR_IMPLICIT, ODR_CONTEXT, 15, Z_Explain_units, z_UnitInfo},
1376 {ODR_IMPLICIT, ODR_CONTEXT, 100, Z_Explain_categoryList,
1381 if (o->direction == ODR_DECODE)
1382 *p = odr_malloc(o, sizeof(**p));
1385 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
1388 return opt && odr_ok(o);