source: trunk/gsdl/packages/yaz/asn/prt-exp.c@ 1343

Last change on this file since 1343 was 1343, checked in by johnmcp, 24 years ago

Added the YAZ toolkit source to the packages directory (for z39.50 stuff)

  • Property svn:keywords set to Author Date Id Revision
File size: 57.7 KB
Line 
1/*
2 * Copyright (c) 1995-1999, Index Data.
3 * See the file LICENSE for details.
4 * Sebastian Hammer, Adam Dickmeiss
5 *
6 * $Log$
7 * Revision 1.1 2000/08/03 03:09:51 johnmcp
8 * Added the YAZ toolkit source to the packages directory (for z39.50 stuff)
9 *
10 * Revision 1.13 1999/11/30 13:47:11 adam
11 * Improved installation. Moved header files to include/yaz.
12 *
13 * Revision 1.12 1999/04/20 09:56:48 adam
14 * Added 'name' paramter to encoder/decoder routines (typedef Odr_fun).
15 * Modified all encoders/decoders to reflect this change.
16 *
17 * Revision 1.11 1999/03/18 12:57:13 adam
18 * Fixed bug in TargetInfo encoder/decoder.
19 *
20 * Revision 1.10 1998/05/18 13:06:52 adam
21 * Changed the way attribute sets are handled by the retriaval module.
22 * Extended Explain conversion / schema.
23 * Modified server and client to work with ASN.1 compiled protocol handlers.
24 *
25 * Revision 1.9 1998/02/11 11:53:32 adam
26 * Changed code so that it compiles as C++.
27 *
28 * Revision 1.8 1996/01/02 11:46:41 quinn
29 * Changed 'operator' to 'roperator' to avoid C++ conflict.
30 *
31 * Revision 1.7 1995/12/14 16:28:07 quinn
32 * More explain stuff.
33 *
34 * Revision 1.6 1995/12/14 11:09:09 quinn
35 * Fixed bug in tagging.
36 *
37 * Revision 1.5 1995/12/05 11:15:50 quinn
38 * Work.
39 *
40 * Revision 1.4 1995/09/29 17:11:54 quinn
41 * Smallish
42 *
43 * Revision 1.3 1995/09/27 15:02:42 quinn
44 * Modified function heads & prototypes.
45 *
46 * Revision 1.2 1995/08/15 11:59:43 quinn
47 * Updated External
48 *
49 * Revision 1.1 1995/08/10 08:54:02 quinn
50 * Added Explain
51 *
52 *
53 */
54
55#include <yaz/proto.h>
56
57int z_LanguageCode(ODR o, char **p, int opt, const char *name);
58int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt, const char *name);
59int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt, const char *name);
60int z_HumanString(ODR o, Z_HumanString **p, int opt, const char *name);
61int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt, const char *name);
62int z_IconObject(ODR o, Z_IconObject **p, int opt, const char *name);
63int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt, const char *name);
64int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt,
65 const char *name);
66int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt,
67 const char *name);
68int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt,
69 const char *name);
70int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt, const char *name);
71int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt, const char *name);
72int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt,
73 const char *name);
74int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt,
75 const char *name);
76int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt,
77 const char *name);
78int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt, const char *name);
79int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt,
80 const char *name);
81int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt,
82 const char *name);
83int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt, const char *name);
84int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt,
85 const char *name);
86int z_SearchKey(ODR o, Z_SearchKey **p, int opt, const char *name);
87int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt,
88 const char *name);
89int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt,
90 const char *name);
91int z_CostsOtherCharge(ODR o, Z_CostsOtherCharge **p, int opt,
92 const char *name);
93int z_Costs(ODR o, Z_Costs **p, int opt, const char *name);
94int z_Charge(ODR o, Z_Charge **p, int opt, const char *name);
95int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt, const char *name);
96int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt,
97 const char *name);
98int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt,
99 const char *name);
100int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt,
101 const char *name);
102int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt,
103 const char *name);
104int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt, const char *name);
105int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt, const char *name);
106int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt, const char *name);
107int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt, const char *name);
108int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt, const char *name);
109int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt, const char *name);
110int z_PathUnit(ODR o, Z_PathUnit **p, int opt, const char *name);
111int z_Path(ODR o, Z_Path **p, int opt, const char *name);
112int z_ElementInfoList(ODR o, Z_Path **p, int opt, const char *name);
113int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt, const char *name);
114int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt,
115 const char *name);
116int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt, const char *name);
117int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt,
118 const char *name);
119int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt,
120 const char *name);
121int z_AttributeType(ODR o, Z_AttributeType **p, int opt, const char *name);
122int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt,
123 const char *name);
124int z_TermListElement(ODR o, Z_TermListElement **p, int opt, const char *name);
125int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt, const char *name);
126int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt,
127 const char *name);
128int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt,
129 const char *name);
130int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt,
131 const char *name);
132int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt,
133 const char *name);
134int z_OmittedAttributeInterpretation(ODR o,
135 Z_OmittedAttributeInterpretation **p,
136 int opt, const char *name);
137int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt, const char *name);
138int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt, const char *name);
139int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt,
140 const char *name);
141int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt,
142 const char *name);
143int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt,
144 const char *name);
145int z_RecordTag(ODR o, Z_RecordTag **p, int opt, const char *name);
146int z_SortDetails(ODR o, Z_SortDetails **p, int opt, const char *name);
147int z_SortKeyDetails(ODR o, Z_SortKeyDetails **p, int opt, const char *name);
148int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt,
149 const char *name);
150int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt, const char *name);
151int z_VariantClass(ODR o, Z_VariantClass **p, int opt, const char *name);
152int z_VariantType(ODR o, Z_VariantType **p, int opt, const char *name);
153int z_VariantValue(ODR o, Z_VariantValue **p, int opt, const char *name);
154int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt,
155 const char *name);
156int z_ValueSet(ODR o, Z_ValueSet **p, int opt, const char *name);
157int z_ValueRange(ODR o, Z_ValueRange **p, int opt, const char *name);
158int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt,
159 const char *name);
160int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt, const char *name);
161int z_UnitType(ODR o, Z_UnitType **p, int opt, const char *name);
162int z_Units(ODR o, Z_Units **p, int opt, const char *name);
163int z_CategoryList(ODR o, Z_CategoryList **p, int opt, const char *name);
164int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt, const char *name);
165int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt, const char *name);
166
167int z_LanguageCode(ODR o, char **p, int opt, const char *name)
168{
169 return z_InternationalString(o, p, opt, 0);
170}
171
172int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt, const char *name)
173{
174 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
175 return opt && odr_ok(o);
176 return
177 odr_implicit(o, odr_generalizedtime, &(*p)->dateAdded,
178 ODR_CONTEXT, 0, 1) &&
179 odr_implicit(o, odr_generalizedtime, &(*p)->dateChanged,
180 ODR_CONTEXT, 1, 1) &&
181 odr_implicit(o, odr_generalizedtime, &(*p)->expiry,
182 ODR_CONTEXT, 2, 1) &&
183 odr_implicit(o, z_LanguageCode, &(*p)->humanStringLanguage,
184 ODR_CONTEXT, 3, 1) &&
185 z_OtherInformation(o, &(*p)->otherInfo, 1, 0) &&
186 odr_sequence_end(o);
187}
188
189int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt, const char *name)
190{
191 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
192 return opt && odr_ok(o);
193 return
194 odr_implicit(o, z_LanguageCode, &(*p)->language, ODR_CONTEXT, 0, 1) &&
195 odr_implicit(o, z_InternationalString, &(*p)->text, ODR_CONTEXT,
196 1, 0) &&
197 odr_sequence_end(o);
198}
199
200int z_HumanString(ODR o, Z_HumanString **p, int opt, const char *name)
201{
202 if (!odr_initmember(o, p, sizeof(**p)))
203 return opt && odr_ok(o);
204 if (odr_sequence_of(o, (Odr_fun)z_HumanStringUnit, &(*p)->strings,
205 &(*p)->num_strings, 0))
206 return 1;
207 *p = 0;
208 return opt && odr_ok(o);
209}
210
211int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt, const char *name)
212{
213 static Odr_arm arm[] =
214 {
215 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IconObjectUnit_ianaType,
216 z_InternationalString, 0},
217 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IconObjectUnit_z3950type,
218 z_InternationalString, 0},
219 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IconObjectUnit_otherType,
220 z_InternationalString, 0},
221 {-1, -1, -1, -1, 0, 0}
222 };
223
224 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
225 return opt && odr_ok(o);
226 return
227 odr_constructed_begin(o, &(*p)->bodyType, ODR_CONTEXT, 1, 0) &&
228 odr_choice(o, arm, &(*p)->bodyType, &(*p)->which, 0) &&
229 odr_constructed_end(o) &&
230 odr_implicit(o, odr_octetstring, &(*p)->content, ODR_CONTEXT, 2, 0) &&
231 odr_sequence_end(o);
232}
233
234int z_IconObject(ODR o, Z_IconObject **p, int opt, const char *name)
235{
236 if (!odr_initmember(o, p, sizeof(**p)))
237 return opt && odr_ok(o);
238 if (odr_sequence_of(o, (Odr_fun)z_IconObjectUnit, &(*p)->elements,
239 &(*p)->num, 0))
240 return 1;
241 *p = 0;
242 return opt && odr_ok(o);
243}
244
245int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt, const char *name)
246{
247 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
248 return opt && odr_ok(o);
249 return
250 odr_implicit(o, z_InternationalString, &(*p)->name,
251 ODR_CONTEXT, 0, 1) &&
252 odr_implicit(o, z_HumanString, &(*p)->description,
253 ODR_CONTEXT, 1, 1) &&
254 odr_implicit(o, z_HumanString, &(*p)->address,
255 ODR_CONTEXT, 2, 1) &&
256 odr_implicit(o, z_InternationalString, &(*p)->email,
257 ODR_CONTEXT, 3, 1) &&
258 odr_implicit(o, z_InternationalString, &(*p)->phone,
259 ODR_CONTEXT, 4, 1) &&
260 odr_sequence_end(o);
261}
262
263int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt,
264 const char *name)
265{
266 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
267 return opt;
268 return
269 odr_implicit(o, z_InternationalString, &(*p)->hostAddress,
270 ODR_CONTEXT, 0, 0) &&
271 odr_implicit(o, odr_integer, &(*p)->port, ODR_CONTEXT, 1, 0) &&
272 odr_sequence_end(o);
273}
274
275int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt,
276 const char *name)
277{
278 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
279 return opt;
280 return
281 odr_implicit(o, z_InternationalString, &(*p)->pSel,
282 ODR_CONTEXT, 0, 0) &&
283 odr_implicit(o, z_InternationalString, &(*p)->sSel,
284 ODR_CONTEXT, 1, 1) &&
285 odr_implicit(o, z_InternationalString, &(*p)->tSel,
286 ODR_CONTEXT, 2, 1) &&
287 odr_implicit(o, z_InternationalString, &(*p)->nSap,
288 ODR_CONTEXT, 3, 0) &&
289 odr_sequence_end(o);
290}
291
292int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt,
293 const char *name)
294{
295 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
296 return opt;
297 return
298 odr_implicit(o, z_InternationalString, &(*p)->type,
299 ODR_CONTEXT, 0, 0) &&
300 odr_implicit(o, z_InternationalString, &(*p)->address,
301 ODR_CONTEXT, 1, 0) &&
302 odr_sequence_end(o);
303}
304
305int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt, const char *name)
306{
307 static Odr_arm arm[] =
308 {
309 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_NetworkAddress_iA,
310 (Odr_fun)z_NetworkAddressIA, 0},
311 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_NetworkAddress_oPA,
312 (Odr_fun)z_NetworkAddressOPA, 0},
313 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_NetworkAddress_other,
314 (Odr_fun)z_NetworkAddressOther, 0},
315 {-1, -1, -1, -1, 0, 0}
316 };
317
318 if (!odr_initmember(o, p, sizeof(**p)))
319 return opt && odr_ok(o);
320 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
321 return 1;
322 *p = 0;
323 return opt && odr_ok(o);
324}
325
326int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt, const char *name)
327{
328 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
329 return opt && odr_ok(o);
330 return
331 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
332 (odr_sequence_of(o, (Odr_fun)z_QueryTypeDetails,
333 &(*p)->queryTypesSupported,
334 &(*p)->num_queryTypesSupported, 0) || odr_ok(o)) &&
335 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
336 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->diagnosticsSets,
337 &(*p)->num_diagnosticsSets, 0) || odr_ok(o)) &&
338 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
339 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->attributeSetIds,
340 &(*p)->num_attributeSetIds, 0) || odr_ok(o)) &&
341 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
342 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->schemas,
343 &(*p)->num_schemas, 0) ||
344 odr_ok(o)) &&
345 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
346 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->recordSyntaxes,
347 &(*p)->num_recordSyntaxes, 0) || odr_ok(o)) &&
348 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
349 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->resourceChallenges,
350 &(*p)->num_resourceChallenges, 0) || odr_ok(o)) &&
351 odr_implicit(o, z_AccessRestrictions, &(*p)->restrictedAccess,
352 ODR_CONTEXT, 6, 1) &&
353 odr_implicit(o, z_Costs, &(*p)->costInfo, ODR_CONTEXT, 8, 1) &&
354 odr_implicit_settag(o, ODR_CONTEXT, 9) &&
355 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->variantSets,
356 &(*p)->num_variantSets, 0) || odr_ok(o)) &&
357 odr_implicit_settag(o, ODR_CONTEXT, 10) &&
358 (odr_sequence_of(o, (Odr_fun)z_ElementSetName, &(*p)->elementSetNames,
359 &(*p)->num_elementSetNames, 0) || odr_ok(o)) &&
360 odr_implicit_settag(o, ODR_CONTEXT, 11) &&
361 (odr_sequence_of(o, (Odr_fun)z_InternationalString, &(*p)->unitSystems,
362 &(*p)->num_unitSystems, 0) || odr_ok(o)) &&
363 odr_sequence_end(o);
364}
365
366int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt,
367 const char *name)
368{
369 static Odr_arm arm[] =
370 {
371 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_QueryTypeDetails_private,
372 (Odr_fun)z_PrivateCapabilities, 0},
373 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_QueryTypeDetails_rpn,
374 (Odr_fun)z_RpnCapabilities, 0},
375 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_QueryTypeDetails_iso8777,
376 (Odr_fun)z_Iso8777Capabilities, 0},
377 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_QueryTypeDetails_z39_58,
378 (Odr_fun)z_HumanString, 0},
379 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_QueryTypeDetails_erpn,
380 (Odr_fun)z_RpnCapabilities, 0},
381 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_QueryTypeDetails_rankedList,
382 (Odr_fun)z_HumanString, 0},
383 {-1, -1, -1, -1, 0, 0}
384 };
385
386 if (!odr_initmember(o, p, sizeof(**p)))
387 return opt && odr_ok(o);
388 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
389 return 1;
390 *p = 0;
391 return opt && odr_ok(o);
392}
393
394int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt,
395 const char *name)
396{
397 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
398 return opt && odr_ok(o);
399 return
400 odr_implicit(o, z_InternationalString, &(*p)->roperator,
401 ODR_CONTEXT, 0, 0) &&
402 odr_implicit(o, z_HumanString, &(*p)->description,
403 ODR_CONTEXT, 1, 1) &&
404 odr_sequence_end(o);
405}
406
407int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt,
408 const char *name)
409{
410 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
411 return opt && odr_ok(o);
412 return
413 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
414 (odr_sequence_of(o, (Odr_fun)z_PrivateCapOperator, &(*p)->operators,
415 &(*p)->num_operators, 0) || odr_ok(o)) &&
416 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
417 (odr_sequence_of(o, (Odr_fun)z_SearchKey, &(*p)->searchKeys,
418 &(*p)->num_searchKeys, 0) || odr_ok(o)) &&
419 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
420 (odr_sequence_of(o, (Odr_fun)z_HumanString, &(*p)->description,
421 &(*p)->num_description, 0) || odr_ok(o)) &&
422 odr_sequence_end(o);
423}
424
425int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt, const char *name)
426{
427 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
428 return opt && odr_ok(o);
429 return
430 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
431 (odr_sequence_of(o, (Odr_fun)odr_integer, &(*p)->operators,
432 &(*p)->num_operators, 0) || odr_ok(o)) &&
433 odr_implicit(o, odr_bool, &(*p)->resultSetAsOperandSupported,
434 ODR_CONTEXT, 1, 0) &&
435 odr_implicit(o, odr_bool, &(*p)->restrictionOperandSupported,
436 ODR_CONTEXT, 2, 0) &&
437 odr_implicit(o, z_ProximitySupport, &(*p)->proximity, ODR_CONTEXT,
438 3, 1) &&
439 odr_sequence_end(o);
440}
441
442int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt,
443 const char *name)
444{
445 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
446 return opt && odr_ok(o);
447 return
448 odr_implicit_settag(o, ODR_CONTEXT, 0) &&
449 odr_sequence_of(o, (Odr_fun)z_SearchKey, &(*p)->searchKeys,
450 &(*p)->num_searchKeys, 0) &&
451 odr_implicit(o, z_HumanString, &(*p)->restrictions, ODR_CONTEXT,
452 1, 1) &&
453 odr_sequence_end(o);
454}
455
456int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt,
457 const char *name)
458{
459 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
460 return opt && odr_ok(o);
461 return
462 odr_implicit(o, odr_integer, &(*p)->unit, ODR_CONTEXT, 0, 0) &&
463 odr_implicit(o, z_HumanString, &(*p)->description,
464 ODR_CONTEXT, 1, 1) &&
465 odr_sequence_end(o);
466}
467
468int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt, const char *name)
469{
470 static Odr_arm arm[] =
471 {
472 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ProxSupportUnit_known,
473 (Odr_fun)odr_integer, 0},
474 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ProxSupportUnit_private,
475 (Odr_fun)z_ProxSupportPrivate, 0},
476 {-1, -1, -1, -1, 0, 0}
477 };
478
479 if (!odr_initmember(o, p, sizeof(**p)))
480 return opt && odr_ok(o);
481 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
482 return 1;
483 *p = 0;
484 return opt && odr_ok(o);
485}
486
487int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt,
488 const char *name)
489{
490 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
491 return opt && odr_ok(o);
492 return
493 odr_implicit(o, odr_bool, &(*p)->anySupport, ODR_CONTEXT, 0, 0) &&
494 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
495 (odr_sequence_of(o, (Odr_fun)z_ProxSupportUnit, &(*p)->unitsSupported,
496 &(*p)->num_unitsSupported, 0) || odr_ok(o)) &&
497 odr_sequence_end(o);
498}
499
500int z_SearchKey(ODR o, Z_SearchKey **p, int opt, const char *name)
501{
502 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
503 return opt && odr_ok(o);
504 return
505 odr_implicit(o, z_InternationalString, &(*p)->searchKey,
506 ODR_CONTEXT, 0, 0) &&
507 odr_implicit(o, z_HumanString, &(*p)->description,
508 ODR_CONTEXT, 1, 1) &&
509 odr_sequence_end(o);
510}
511
512int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt,
513 const char *name)
514{
515 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
516 return opt && odr_ok(o);
517 return
518 odr_explicit(o, odr_integer, &(*p)->accessType, ODR_CONTEXT, 0, 0) &&
519 odr_implicit(o, z_HumanString, &(*p)->accessText, ODR_CONTEXT, 1, 1) &&
520 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
521 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->accessChallenges,
522 &(*p)->num_accessChallenges, 0) || odr_ok(o)) &&
523 odr_sequence_end(o);
524}
525
526int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt,
527 const char *name)
528{
529 if (!odr_initmember(o, p, sizeof(**p)))
530 return opt && odr_ok(o);
531 if (odr_sequence_of(o, (Odr_fun)z_AccessRestrictionsUnit, &(*p)->elements,
532 &(*p)->num, 0))
533 return 1;
534 *p = 0;
535 return opt && odr_ok(o);
536}
537
538int z_CostsOtherCharge(ODR o, Z_CostsOtherCharge **p, int opt,
539 const char *name)
540{
541 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
542 return opt && odr_ok(o);
543 return
544 odr_implicit(o, z_HumanString, &(*p)->forWhat, ODR_CONTEXT, 1, 0) &&
545 odr_implicit(o, z_Charge, &(*p)->charge, ODR_CONTEXT, 2, 1) &&
546 odr_sequence_end(o);
547}
548
549int z_Costs(ODR o, Z_Costs **p, int opt, const char *name)
550{
551 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
552 return opt && odr_ok(o);
553 return
554 odr_implicit(o, z_Charge, &(*p)->connectCharge, ODR_CONTEXT, 0, 1) &&
555 odr_implicit(o, z_Charge, &(*p)->connectTime, ODR_CONTEXT, 1, 1) &&
556 odr_implicit(o, z_Charge, &(*p)->displayCharge, ODR_CONTEXT, 2, 1) &&
557 odr_implicit(o, z_Charge, &(*p)->searchCharge, ODR_CONTEXT, 3, 1) &&
558 odr_implicit(o, z_Charge, &(*p)->subscriptCharge, ODR_CONTEXT, 4, 1) &&
559 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
560 (odr_sequence_of(o, (Odr_fun)z_CostsOtherCharge, &(*p)->otherCharges,
561 &(*p)->num_otherCharges, 0) || odr_ok(o)) &&
562 odr_sequence_end(o);
563}
564
565int z_Charge(ODR o, Z_Charge **p, int opt, const char *name)
566{
567 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
568 return opt && odr_ok(o);
569 return
570 odr_implicit(o, z_IntUnit, &(*p)->cost, ODR_CONTEXT, 1, 0) &&
571 odr_implicit(o, z_Unit, &(*p)->perWhat, ODR_CONTEXT, 2, 1) &&
572 odr_implicit(o, z_HumanString, &(*p)->text, ODR_CONTEXT, 3, 1) &&
573 odr_sequence_end(o);
574}
575
576int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt, const char *name)
577{
578 if (!odr_initmember(o, p, sizeof(**p)))
579 return opt && odr_ok(o);
580 if (odr_sequence_of(o, z_DatabaseName, &(*p)->databases,
581 &(*p)->num_databases, 0))
582 return 1;
583 *p = 0;
584 return opt && odr_ok(o);
585}
586
587int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt,
588 const char *name)
589{
590 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
591 return opt && odr_ok(o);
592 return
593 odr_implicit(o, odr_oid, &(*p)->defaultAttributeSet,
594 ODR_CONTEXT, 0, 0) &&
595 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
596 odr_sequence_of(o, (Odr_fun)z_AttributeCombination,
597 &(*p)->legalCombinations,
598 &(*p)->num_legalCombinations, 0) &&
599 odr_sequence_end(o);
600}
601
602int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt,
603 const char *name)
604{
605 if (!odr_initmember(o, p, sizeof(**p)))
606 return opt && odr_ok(o);
607 if (odr_sequence_of(o, (Odr_fun)z_AttributeOccurrence, &(*p)->occurrences,
608 &(*p)->num_occurrences, 0))
609 return 1;
610 *p = 0;
611 return opt && odr_ok(o);
612}
613
614int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt,
615 const char *name)
616{
617 if (!odr_initmember(o, p, sizeof(**p)))
618 return opt && odr_ok(o);
619 if (odr_sequence_of(o, (Odr_fun)z_StringOrNumeric, &(*p)->attributes,
620 &(*p)->num_attributes, 0))
621 return 1;
622 *p = 0;
623 return opt && odr_ok(o);
624}
625
626int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt,
627 const char *name)
628{
629 static Odr_arm arm[] =
630 {
631 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_AttributeOcc_any_or_none,
632 (Odr_fun)odr_null, 0},
633 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_AttributeOcc_specific,
634 (Odr_fun)z_AttributeValueList, 0},
635 {-1, -1, -1, -1, 0, 0}
636 };
637
638 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
639 return opt && odr_ok(o);
640 return
641 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 0, 1) &&
642 odr_implicit(o, odr_integer, &(*p)->attributeType,
643 ODR_CONTEXT, 1, 0) &&
644 odr_implicit(o, odr_null, &(*p)->mustBeSupplied, ODR_CONTEXT, 2, 1) &&
645 odr_choice(o, arm, &(*p)->attributeValues, &(*p)->which, 0) &&
646 odr_sequence_end(o);
647}
648
649int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt, const char *name)
650{
651 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
652 return opt && odr_ok(o);
653 return
654 odr_explicit(o, z_StringOrNumeric, &(*p)->value, ODR_CONTEXT, 0, 0) &&
655 odr_implicit(o, z_HumanString, &(*p)->description,
656 ODR_CONTEXT, 1, 1) &&
657 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
658 (odr_sequence_of(o, (Odr_fun)z_StringOrNumeric, &(*p)->subAttributes,
659 &(*p)->num_subAttributes, 0) || odr_ok(o)) &&
660 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
661 (odr_sequence_of(o, (Odr_fun)z_StringOrNumeric, &(*p)->superAttributes,
662 &(*p)->num_superAttributes, 0) || odr_ok(o)) &&
663 odr_implicit(o, odr_null, &(*p)->partialSupport, ODR_CONTEXT, 4, 1) &&
664 odr_sequence_end(o);
665}
666
667
668
669int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt, const char *name)
670{
671 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
672 return opt && odr_ok(o);
673 return
674 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo,
675 ODR_CONTEXT, 0, 1) &&
676 odr_implicit(o, z_InternationalString, &(*p)->name,
677 ODR_CONTEXT, 1, 0) &&
678 odr_implicit(o, z_HumanString, &(*p)->recentNews,
679 ODR_CONTEXT, 2, 1) &&
680 odr_implicit(o, z_IconObject, &(*p)->icon,
681 ODR_CONTEXT, 3, 1) &&
682 odr_implicit(o, odr_bool, &(*p)->namedResultSets,
683 ODR_CONTEXT, 4, 0) &&
684 odr_implicit(o, odr_bool, &(*p)->multipleDBsearch,
685 ODR_CONTEXT, 5, 0) &&
686 odr_implicit(o, odr_integer, &(*p)->maxResultSets,
687 ODR_CONTEXT, 6, 1) &&
688 odr_implicit(o, odr_integer, &(*p)->maxResultSize,
689 ODR_CONTEXT, 7, 1) &&
690 odr_implicit(o, odr_integer, &(*p)->maxTerms,
691 ODR_CONTEXT, 8, 1) &&
692 odr_implicit(o, z_IntUnit, &(*p)->timeoutInterval,
693 ODR_CONTEXT, 9, 1) &&
694 odr_implicit(o, z_HumanString, &(*p)->welcomeMessage,
695 ODR_CONTEXT, 10, 1) &&
696 odr_implicit(o, z_ContactInfo, &(*p)->contactInfo,
697 ODR_CONTEXT, 11, 1) &&
698 odr_implicit(o, z_HumanString, &(*p)->description,
699 ODR_CONTEXT, 12, 1) &&
700 odr_implicit_settag(o, ODR_CONTEXT, 13) &&
701 (odr_sequence_of(o, z_InternationalString, &(*p)->nicknames,
702 &(*p)->num_nicknames, 0) || odr_ok(o)) &&
703 odr_implicit(o, z_HumanString, &(*p)->usageRest,
704 ODR_CONTEXT, 14, 1) &&
705 odr_implicit(o, z_HumanString, &(*p)->paymentAddr,
706 ODR_CONTEXT, 15, 1) &&
707 odr_implicit(o, z_HumanString, &(*p)->hours, ODR_CONTEXT, 16, 1) &&
708 odr_implicit_settag(o, ODR_CONTEXT, 17) &&
709 (odr_sequence_of(o, (Odr_fun)z_DatabaseList, &(*p)->dbCombinations,
710 &(*p)->num_dbCombinations, 0) || odr_ok(o)) &&
711 odr_implicit_settag(o, ODR_CONTEXT, 18) &&
712 (odr_sequence_of(o, (Odr_fun)z_NetworkAddress, &(*p)->addresses,
713 &(*p)->num_addresses, 0) || odr_ok(o)) &&
714 odr_implicit_settag (o, ODR_CONTEXT, 101) &&
715 (odr_sequence_of(o, (Odr_fun) z_InternationalString, &(*p)->languages,
716 &(*p)->num_languages, 0) || odr_ok(o)) &&
717 odr_implicit(o, z_AccessInfo, &(*p)->commonAccessInfo,
718 ODR_CONTEXT, 19, 1) &&
719 odr_sequence_end(o);
720}
721
722int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt, const char *name)
723{
724 static Odr_arm arm[] =
725 {
726 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_DatabaseInfo_actualNumber,
727 (Odr_fun)odr_integer, 0},
728 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_DatabaseInfo_approxNumber,
729 (Odr_fun)odr_integer, 0},
730 {-1, -1, -1, -1, 0, 0}
731 };
732
733 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
734 return opt && odr_ok(o);
735 return
736 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
737 odr_implicit(o, z_DatabaseName, &(*p)->name, ODR_CONTEXT, 1, 0) &&
738 odr_implicit(o, odr_null, &(*p)->explainDatabase, ODR_CONTEXT, 2, 1) &&
739 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
740 (odr_sequence_of(o, z_DatabaseName, &(*p)->nicknames,
741 &(*p)->num_nicknames, 0) || odr_ok(o)) &&
742 odr_implicit(o, z_IconObject, &(*p)->icon, ODR_CONTEXT, 4, 1) &&
743 odr_implicit(o, odr_bool, &(*p)->userFee, ODR_CONTEXT, 5, 0) &&
744 odr_implicit(o, odr_bool, &(*p)->available, ODR_CONTEXT, 6, 0) &&
745 odr_implicit(o, z_HumanString, &(*p)->titleString,
746 ODR_CONTEXT, 7, 1) &&
747 odr_implicit_settag(o, ODR_CONTEXT, 8) &&
748 (odr_sequence_of(o, (Odr_fun)z_HumanString, &(*p)->keywords,
749 &(*p)->num_keywords, 0) || odr_ok(o)) &&
750 odr_implicit(o, z_HumanString, &(*p)->description,
751 ODR_CONTEXT, 9, 1) &&
752 odr_implicit(o, z_DatabaseList, &(*p)->associatedDbs,
753 ODR_CONTEXT, 10, 1) &&
754 odr_implicit(o, z_DatabaseList, &(*p)->subDbs, ODR_CONTEXT, 11, 1) &&
755 odr_implicit(o, z_HumanString, &(*p)->disclaimers,
756 ODR_CONTEXT, 12, 1) &&
757 odr_implicit(o, z_HumanString, &(*p)->news, ODR_CONTEXT, 13, 1) &&
758 ((odr_constructed_begin(o, &(*p)->u.actualNumber,
759 ODR_CONTEXT, 14, 0) &&
760 odr_choice(o, arm, &(*p)->u.actualNumber, &(*p)->which, 0) &&
761 odr_constructed_end(o)) || odr_ok(o)) &&
762 odr_implicit(o, z_HumanString, &(*p)->defaultOrder,
763 ODR_CONTEXT, 15, 1) &&
764 odr_implicit(o, odr_integer, &(*p)->avRecordSize,
765 ODR_CONTEXT, 16, 1) &&
766 odr_implicit(o, odr_integer, &(*p)->maxRecordSize,
767 ODR_CONTEXT, 17, 1) &&
768 odr_implicit(o, z_HumanString, &(*p)->hours, ODR_CONTEXT, 18, 1) &&
769 odr_implicit(o, z_HumanString, &(*p)->bestTime, ODR_CONTEXT, 19, 1) &&
770 odr_implicit(o, odr_generalizedtime, &(*p)->lastUpdate,
771 ODR_CONTEXT, 20, 1) &&
772 odr_implicit(o, z_IntUnit, &(*p)->updateInterval,
773 ODR_CONTEXT, 21, 1) &&
774 odr_implicit(o, z_HumanString, &(*p)->coverage, ODR_CONTEXT, 22, 1) &&
775 odr_implicit(o, odr_bool, &(*p)->proprietary, ODR_CONTEXT, 23, 1) &&
776 odr_implicit(o, z_HumanString, &(*p)->copyrightText,
777 ODR_CONTEXT, 24, 1) &&
778 odr_implicit(o, z_HumanString, &(*p)->copyrightNotice,
779 ODR_CONTEXT, 25, 1) &&
780 odr_implicit(o, z_ContactInfo, &(*p)->producerContactInfo,
781 ODR_CONTEXT, 26, 1) &&
782 odr_implicit(o, z_ContactInfo, &(*p)->supplierContactInfo,
783 ODR_CONTEXT, 27, 1) &&
784 odr_implicit(o, z_ContactInfo, &(*p)->submissionContactInfo,
785 ODR_CONTEXT, 28, 1) &&
786 odr_implicit(o, z_AccessInfo, &(*p)->accessInfo, ODR_CONTEXT, 29, 1) &&
787 odr_sequence_end(o);
788}
789
790int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt, const char *name)
791{
792 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
793 return opt;
794 return
795 odr_implicit(o, odr_integer, &(*p)->tagType, ODR_CONTEXT, 0, 0) &&
796 odr_implicit(o, odr_oid, &(*p)->tagSet, ODR_CONTEXT, 1, 1) &&
797 odr_implicit(o, odr_null, &(*p)->defaultTagType, ODR_CONTEXT, 2, 1) &&
798 odr_sequence_end(o);
799}
800
801int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt, const char *name)
802{
803 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
804 return opt && odr_ok(o);
805 return
806 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
807 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 1, 0) &&
808 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
809 2, 0) &&
810 odr_implicit(o, z_HumanString, &(*p)->description,
811 ODR_CONTEXT, 3, 1) &&
812 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
813 (odr_sequence_of(o, (Odr_fun)z_TagTypeMapping, &(*p)->tagTypeMapping,
814 &(*p)->num_tagTypeMapping, 0) || odr_ok(o)) &&
815 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
816 (odr_sequence_of(o, (Odr_fun)z_ElementInfo, &(*p)->recordStructure,
817 &(*p)->num_recordStructure, 0) || odr_ok(o)) &&
818 odr_sequence_end(o);
819}
820
821int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt, const char *name)
822{
823 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
824 return opt && odr_ok(o);
825 return
826 odr_implicit(o, z_InternationalString, &(*p)->elementName,
827 ODR_CONTEXT, 1, 0) &&
828 odr_implicit(o, z_Path, &(*p)->elementTagPath, ODR_CONTEXT, 2, 0) &&
829 odr_explicit(o, z_ElementDataType, &(*p)->dataType,
830 ODR_CONTEXT, 3, 1) &&
831 odr_implicit(o, odr_bool, &(*p)->required, ODR_CONTEXT, 4, 0) &&
832 odr_implicit(o, odr_bool, &(*p)->repeatable, ODR_CONTEXT, 5, 0) &&
833 odr_implicit(o, z_HumanString, &(*p)->description,
834 ODR_CONTEXT, 6, 1) &&
835 odr_sequence_end(o);
836}
837
838int z_PathUnit(ODR o, Z_PathUnit **p, int opt, const char *name)
839{
840 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
841 return opt;
842 return
843 odr_implicit(o, odr_integer, &(*p)->tagType, ODR_CONTEXT, 1, 0) &&
844 odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue,
845 ODR_CONTEXT, 2, 0) &&
846 odr_sequence_end(o);
847}
848
849int z_Path(ODR o, Z_Path **p, int opt, const char *name)
850{
851 if (!odr_initmember(o, p, sizeof(**p)))
852 return opt && odr_ok(o);
853 odr_implicit_settag(o, ODR_CONTEXT, 201);
854 if (odr_sequence_of(o, (Odr_fun)z_OtherInformationUnit, &(*p)->list,
855 &(*p)->num, 0))
856 return 1;
857 *p = 0;
858 return opt && odr_ok(o);
859}
860
861int z_ElementInfoList(ODR o, Z_Path **p, int opt, const char *name)
862{
863 if (!odr_initmember(o, p, sizeof(**p)))
864 return opt && odr_ok(o);
865 odr_implicit_settag(o, ODR_CONTEXT, 201);
866 if (odr_sequence_of(o, (Odr_fun)z_OtherInformationUnit, &(*p)->list,
867 &(*p)->num, 0))
868 return 1;
869 *p = 0;
870 return opt && odr_ok(o);
871}
872
873int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt, const char *name)
874{
875 static Odr_arm arm[] =
876 {
877 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ElementDataType_primitive,
878 (Odr_fun)odr_integer, 0},
879 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ElementDataType_structured,
880 (Odr_fun)z_ElementInfoList, 0},
881 {-1, -1, -1, -1, 0, 0}
882 };
883
884 if (!odr_initmember(o, p, sizeof(**p)))
885 return opt && odr_ok(o);
886 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
887 return 1;
888 *p = 0;
889 return opt && odr_ok(o);
890}
891
892int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt,
893 const char *name)
894{
895 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
896 return opt;
897 return
898 odr_implicit(o, z_InternationalString, &(*p)->elementname,
899 ODR_CONTEXT, 1, 0) &&
900 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
901 (odr_sequence_of(o, z_InternationalString, &(*p)->nicknames,
902 &(*p)->num_nicknames, 0) || odr_ok(o)) &&
903 odr_explicit(o, z_StringOrNumeric, &(*p)->elementTag,
904 ODR_CONTEXT, 3, 0) &&
905 odr_implicit(o, z_HumanString, &(*p)->description,
906 ODR_CONTEXT, 4, 1) &&
907 odr_implicit(o, odr_integer, &(*p)->dataType, ODR_CONTEXT, 5, 1) &&
908 z_OtherInformation(o, &(*p)->otherTagInfo, 1, 0) &&
909 odr_sequence_end(o);
910}
911
912int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt, const char *name)
913{
914 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
915 return opt && odr_ok(o);
916 return
917 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
918 odr_implicit(o, odr_oid, &(*p)->tagSet, ODR_CONTEXT, 1, 0) &&
919 odr_implicit(o, z_InternationalString, &(*p)->name,
920 ODR_CONTEXT, 2, 0) &&
921 odr_implicit(o, z_HumanString, &(*p)->description,
922 ODR_CONTEXT, 3, 1) &&
923 odr_implicit_settag(o, ODR_CONTEXT, 4) &&
924 (odr_sequence_of(o, (Odr_fun)z_TagSetInfoElements, &(*p)->elements,
925 &(*p)->num_elements, 0) || odr_ok(o)) &&
926 odr_sequence_end(o);
927}
928
929int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt,
930 const char *name)
931{
932 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
933 return opt && odr_ok(o);
934 return
935 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
936 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 1, 0) &&
937 odr_implicit(o, z_InternationalString, &(*p)->name,
938 ODR_CONTEXT, 2, 0) &&
939 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
940 (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->transferSyntaxes,
941 &(*p)->num_transferSyntaxes, 0) || odr_ok(o)) &&
942 odr_implicit(o, z_HumanString, &(*p)->description,
943 ODR_CONTEXT, 4, 1) &&
944 odr_implicit(o, z_InternationalString, &(*p)->asn1Module,
945 ODR_CONTEXT, 5, 1) &&
946 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
947 (odr_sequence_of(o, (Odr_fun)z_ElementInfo, &(*p)->abstractStructure,
948 &(*p)->num_abstractStructure, 0) || odr_ok(o)) &&
949 odr_sequence_end(o);
950}
951
952int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt,
953 const char *name)
954{
955 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
956 return opt && odr_ok(o);
957 return
958 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
959 odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 1, 0) &&
960 odr_implicit(o, z_InternationalString, &(*p)->name,
961 ODR_CONTEXT, 2, 0) &&
962 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
963 (odr_sequence_of(o, (Odr_fun)z_AttributeType, &(*p)->attributes,
964 &(*p)->num_attributes, 0) || odr_ok(o)) &&
965 odr_implicit(o, z_HumanString, &(*p)->description,
966 ODR_CONTEXT, 4, 1) &&
967 odr_sequence_end(o);
968}
969
970int z_AttributeType(ODR o, Z_AttributeType **p, int opt, const char *name)
971{
972 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
973 return opt && odr_ok(o);
974 return
975 odr_implicit(o, z_InternationalString, &(*p)->name,
976 ODR_CONTEXT, 0, 1) &&
977 odr_implicit(o, z_HumanString, &(*p)->description,
978 ODR_CONTEXT, 1, 1) &&
979 odr_implicit(o, odr_integer, &(*p)->attributeType,
980 ODR_CONTEXT, 2, 0) &&
981 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
982 odr_sequence_of(o, (Odr_fun)z_AttributeDescription,
983 &(*p)->attributeValues,
984 &(*p)->num_attributeValues, 0) &&
985 odr_sequence_end(o);
986}
987
988int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt,
989 const char *name)
990{
991 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
992 return opt && odr_ok(o);
993 return
994 odr_implicit(o, z_InternationalString, &(*p)->name,
995 ODR_CONTEXT, 0, 1) &&
996 odr_implicit(o, z_HumanString, &(*p)->description,
997 ODR_CONTEXT, 1, 1) &&
998 odr_explicit(o, z_StringOrNumeric, &(*p)->attributeValue,
999 ODR_CONTEXT, 2, 0) &&
1000 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1001 (odr_sequence_of(o, (Odr_fun)z_StringOrNumeric,
1002 &(*p)->equivalentAttributes,
1003 &(*p)->num_equivalentAttributes, 0) || odr_ok(o)) &&
1004 odr_sequence_end(o);
1005}
1006
1007int z_TermListElement(ODR o, Z_TermListElement **p, int opt, const char *name)
1008{
1009 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1010 return opt && odr_ok(o);
1011 return
1012 odr_implicit(o, z_InternationalString, &(*p)->name,
1013 ODR_CONTEXT, 1, 0) &&
1014 odr_implicit(o, z_HumanString, &(*p)->title, ODR_CONTEXT, 2, 1) &&
1015 odr_implicit(o, odr_integer, &(*p)->searchCost, ODR_CONTEXT, 3, 1) &&
1016 odr_implicit(o, odr_bool, &(*p)->scanable, ODR_CONTEXT, 4, 0) &&
1017 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
1018 (odr_sequence_of(o, z_InternationalString, &(*p)->broader,
1019 &(*p)->num_broader, 0) || odr_ok(o)) &&
1020 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
1021 (odr_sequence_of(o, z_InternationalString, &(*p)->narrower,
1022 &(*p)->num_narrower, 0) || odr_ok(o)) &&
1023 odr_sequence_end(o);
1024}
1025
1026int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt, const char *name)
1027{
1028 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1029 return opt && odr_ok(o);
1030 return
1031 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1032 odr_implicit(o, z_DatabaseName, &(*p)->databaseName,
1033 ODR_CONTEXT, 1, 0) &&
1034 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1035 (odr_sequence_of(o, (Odr_fun)z_TermListElement, &(*p)->termLists,
1036 &(*p)->num_termLists, 0) || odr_ok(o)) &&
1037 odr_sequence_end(o);
1038}
1039
1040int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt,
1041 const char *name)
1042{
1043 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1044 return opt && odr_ok(o);
1045 return
1046 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1047 odr_implicit(o, odr_oid, &(*p)->type, ODR_CONTEXT, 1, 0) &&
1048 odr_implicit(o, z_InternationalString, &(*p)->name,
1049 ODR_CONTEXT, 2, 1) &&
1050 odr_implicit(o, odr_bool, &(*p)->privateType, ODR_CONTEXT, 3, 0) &&
1051 odr_implicit(o, odr_bool, &(*p)->restrictionsApply,
1052 ODR_CONTEXT, 5, 0) &&
1053 odr_implicit(o, odr_bool, &(*p)->feeApply, ODR_CONTEXT, 6, 0) &&
1054 odr_implicit(o, odr_bool, &(*p)->available, ODR_CONTEXT, 7, 0) &&
1055 odr_implicit(o, odr_bool, &(*p)->retentionSupported,
1056 ODR_CONTEXT, 8, 0) &&
1057 odr_implicit(o, odr_integer, &(*p)->waitAction, ODR_CONTEXT, 9, 0) &&
1058 odr_implicit(o, z_HumanString, &(*p)->description,
1059 ODR_CONTEXT, 10, 1) &&
1060 odr_implicit(o, z_External, &(*p)->specificExplain,
1061 ODR_CONTEXT, 11, 1) &&
1062 odr_implicit(o, z_InternationalString, &(*p)->esASN,
1063 ODR_CONTEXT, 12, 1) &&
1064 odr_sequence_end(o);
1065}
1066
1067int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt,
1068 const char *name)
1069{
1070 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1071 return opt && odr_ok(o);
1072 return
1073 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1074 odr_implicit(o, z_DatabaseName, &(*p)->databaseName,
1075 ODR_CONTEXT, 1, 0) &&
1076 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1077 (odr_sequence_of(o, (Odr_fun)z_AttributeSetDetails,
1078 &(*p)->attributesBySet,
1079 &(*p)->num_attributesBySet, 0) && odr_ok(o)) &&
1080 odr_implicit(o, z_AttributeCombinations, &(*p)->attributeCombinations,
1081 ODR_CONTEXT, 3, 1) &&
1082 odr_sequence_end(o);
1083}
1084
1085int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt,
1086 const char *name)
1087{
1088 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1089 return opt && odr_ok(o);
1090 return
1091 odr_implicit(o, odr_oid, &(*p)->attributeSet,
1092 ODR_CONTEXT, 0, 0) &&
1093 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
1094 odr_sequence_of(o, (Odr_fun)z_AttributeTypeDetails,
1095 &(*p)->attributesByType,
1096 &(*p)->num_attributesByType, 0) &&
1097 odr_sequence_end(o);
1098}
1099
1100int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt,
1101 const char *name)
1102{
1103 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1104 return opt && odr_ok(o);
1105 return
1106 odr_implicit(o, odr_integer, &(*p)->attributeType,
1107 ODR_CONTEXT, 0, 0) &&
1108 odr_implicit(o, z_OmittedAttributeInterpretation,
1109 &(*p)->defaultIfOmitted,
1110 ODR_CONTEXT, 1, 1) &&
1111 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1112 (odr_sequence_of(o, (Odr_fun)z_AttributeValue, &(*p)->attributeValues,
1113 &(*p)->num_attributeValues, 0) || odr_ok(o)) &&
1114 odr_sequence_end(o);
1115}
1116
1117int z_OmittedAttributeInterpretation(ODR o,
1118 Z_OmittedAttributeInterpretation **p,
1119 int opt, const char *name)
1120{
1121 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1122 return opt && odr_ok(o);
1123 return
1124 odr_explicit(o, z_StringOrNumeric, &(*p)->defaultValue,
1125 ODR_CONTEXT, 0, 1) &&
1126 odr_implicit(o, z_HumanString, &(*p)->defaultDescription,
1127 ODR_CONTEXT, 1, 1) &&
1128 odr_sequence_end(o);
1129}
1130
1131int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt, const char *name)
1132{
1133 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1134 return opt && odr_ok(o);
1135 return
1136 odr_implicit(o, odr_integer, &(*p)->maxStepSize, ODR_CONTEXT, 0, 1) &&
1137 odr_implicit(o, z_HumanString, &(*p)->collatingSequence,
1138 ODR_CONTEXT, 1, 1) &&
1139 odr_implicit(o, odr_bool, &(*p)->increasing, ODR_CONTEXT, 2, 1) &&
1140 odr_sequence_end(o);
1141}
1142
1143int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt, const char *name)
1144{
1145 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1146 return opt && odr_ok(o);
1147 return
1148 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1149 odr_implicit(o, z_InternationalString, &(*p)->termListName,
1150 ODR_CONTEXT, 1, 0) &&
1151 odr_implicit(o, z_HumanString, &(*p)->description,
1152 ODR_CONTEXT, 2, 1) &&
1153 odr_implicit(o, z_AttributeCombinations, &(*p)->attributes,
1154 ODR_CONTEXT, 3, 1) &&
1155 odr_implicit(o, z_EScanInfo, &(*p)->scanInfo, ODR_CONTEXT, 4, 1) &&
1156 odr_implicit(o, odr_integer, &(*p)->estNumberTerms,
1157 ODR_CONTEXT, 5, 1) &&
1158 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
1159 (odr_sequence_of(o, (Odr_fun)z_Term, &(*p)->sampleTerms,
1160 &(*p)->num_sampleTerms, 0) || odr_ok(o)) &&
1161 odr_sequence_end(o);
1162}
1163
1164int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt,
1165 const char *name)
1166{
1167 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1168 return opt && odr_ok(o);
1169 return
1170 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1171 odr_implicit(o, z_DatabaseName, &(*p)->databaseName,
1172 ODR_CONTEXT, 1, 0) &&
1173 odr_implicit(o, z_ElementSetName, &(*p)->elementSetName,
1174 ODR_CONTEXT, 2, 0) &&
1175 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 3, 0) &&
1176 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 4, 0) &&
1177 odr_implicit(o, z_HumanString, &(*p)->description,
1178 ODR_CONTEXT, 5, 1) &&
1179 odr_implicit_settag(o, ODR_CONTEXT, 6) &&
1180 (odr_sequence_of(o, (Odr_fun)z_PerElementDetails,
1181 &(*p)->detailsPerElement,
1182 &(*p)->num_detailsPerElement, 0) || odr_ok(o)) &&
1183 odr_sequence_end(o);
1184}
1185
1186int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt,
1187 const char *name)
1188{
1189 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1190 return opt && odr_ok(o);
1191 return
1192 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1193 odr_implicit(o, z_DatabaseName, &(*p)->databaseName,
1194 ODR_CONTEXT, 1, 0) &&
1195 odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 2, 0) &&
1196 odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 3, 0) &&
1197 odr_implicit(o, z_HumanString, &(*p)->description,
1198 ODR_CONTEXT, 4, 1) &&
1199 odr_implicit_settag(o, ODR_CONTEXT, 5) &&
1200 (odr_sequence_of(o, (Odr_fun)z_PerElementDetails,
1201 &(*p)->detailsPerElement,
1202 &(*p)->num_detailsPerElement, 0) || odr_ok(o)) &&
1203 odr_sequence_end(o);
1204}
1205
1206int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt,
1207 const char *name)
1208{
1209 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1210 return opt && odr_ok(o);
1211 return
1212 odr_implicit(o, z_InternationalString, &(*p)->name,
1213 ODR_CONTEXT, 0, 1) &&
1214 odr_implicit(o, z_RecordTag, &(*p)->recordTag, ODR_CONTEXT, 1, 1) &&
1215 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1216 (odr_sequence_of(o, (Odr_fun)z_Path, &(*p)->schemaTags,
1217 &(*p)->num_schemaTags, 0) ||
1218 odr_ok(o)) &&
1219 odr_implicit(o, odr_integer, &(*p)->maxSize, ODR_CONTEXT, 3, 1) &&
1220 odr_implicit(o, odr_integer, &(*p)->minSize, ODR_CONTEXT, 4, 1) &&
1221 odr_implicit(o, odr_integer, &(*p)->avgSize, ODR_CONTEXT, 5, 1) &&
1222 odr_implicit(o, odr_integer, &(*p)->fixedSize, ODR_CONTEXT, 6, 1) &&
1223 odr_implicit(o, odr_bool, &(*p)->repeatable, ODR_CONTEXT, 8, 0) &&
1224 odr_implicit(o, odr_bool, &(*p)->required, ODR_CONTEXT, 9, 0) &&
1225 odr_implicit(o, z_HumanString, &(*p)->description,
1226 ODR_CONTEXT, 12, 1) &&
1227 odr_implicit(o, z_HumanString, &(*p)->contents, ODR_CONTEXT, 13, 1) &&
1228 odr_implicit(o, z_HumanString, &(*p)->billingInfo,
1229 ODR_CONTEXT, 14, 1) &&
1230 odr_implicit(o, z_HumanString, &(*p)->restrictions,
1231 ODR_CONTEXT, 15, 1) &&
1232 odr_implicit_settag(o, ODR_CONTEXT, 16) &&
1233 (odr_sequence_of(o, z_InternationalString, &(*p)->alternateNames,
1234 &(*p)->num_alternateNames, 0) || odr_ok(o)) &&
1235 odr_implicit_settag(o, ODR_CONTEXT, 17) &&
1236 (odr_sequence_of(o, z_InternationalString, &(*p)->genericNames,
1237 &(*p)->num_genericNames, 0) || odr_ok(o)) &&
1238 odr_implicit(o, z_AttributeCombinations, &(*p)->searchAccess,
1239 ODR_CONTEXT, 18, 1) &&
1240 odr_sequence_end(o);
1241}
1242
1243int z_RecordTag(ODR o, Z_RecordTag **p, int opt, const char *name)
1244{
1245 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1246 return opt && odr_ok(o);
1247 return
1248 odr_explicit(o, z_StringOrNumeric, &(*p)->qualifier,
1249 ODR_CONTEXT, 0, 1) &&
1250 odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue,
1251 ODR_CONTEXT, 1, 0) &&
1252 odr_sequence_end(o);
1253}
1254
1255int z_SortDetails(ODR o, Z_SortDetails **p, int opt, const char *name)
1256{
1257 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1258 return opt && odr_ok(o);
1259 return
1260 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1261 odr_implicit(o, z_DatabaseName, &(*p)->databaseName,
1262 ODR_CONTEXT, 1, 0) &&
1263 odr_implicit_settag(o, ODR_CONTEXT, 2) &&
1264 (odr_sequence_of(o, (Odr_fun)z_SortKeyDetails, &(*p)->sortKeys,
1265 &(*p)->num_sortKeys, 0) || odr_ok(o)) &&
1266 odr_sequence_end(o);
1267}
1268
1269int z_SortKeyDetails (ODR o, Z_SortKeyDetails **p, int opt, const char *name)
1270{
1271 static Odr_arm arm[] = {
1272 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetails_character,
1273 (Odr_fun) odr_null, 0},
1274 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_SortKeyDetails_numeric,
1275 (Odr_fun) odr_null, 0},
1276 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_SortKeyDetails_structured,
1277 (Odr_fun) z_HumanString, 0},
1278 {-1, -1, -1, -1, (Odr_fun) 0, 0}
1279 };
1280 if (!odr_sequence_begin (o, p, sizeof(**p), 0))
1281 return opt && odr_ok (o);
1282 return
1283 odr_implicit (o, z_HumanString,
1284 &(*p)->description, ODR_CONTEXT, 0, 1) &&
1285 odr_implicit_settag (o, ODR_CONTEXT, 1) &&
1286 (odr_sequence_of(o, (Odr_fun) z_Specification,
1287 &(*p)->elementSpecifications,
1288 &(*p)->num_elementSpecifications, 0) || odr_ok(o)) &&
1289 odr_implicit (o, z_AttributeCombinations,
1290 &(*p)->attributeSpecifications, ODR_CONTEXT, 2, 1) &&
1291 ((odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 3, 0) &&
1292 odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) &&
1293 odr_constructed_end (o)) || odr_ok(o)) &&
1294 odr_implicit (o, odr_integer,
1295 &(*p)->caseSensitivity, ODR_CONTEXT, 4, 1) &&
1296 odr_sequence_end (o);
1297}
1298
1299int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt,
1300 const char *name)
1301{
1302 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1303 return opt && odr_ok(o);
1304 return
1305 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1306 odr_implicit(o, z_DatabaseName, &(*p)->databaseName,
1307 ODR_CONTEXT, 1, 0) &&
1308 odr_implicit(o, odr_integer, &(*p)->processingContext,
1309 ODR_CONTEXT, 2, 0) &&
1310 odr_implicit(o, z_InternationalString, &(*p)->name,
1311 ODR_CONTEXT, 3, 0) &&
1312 odr_implicit(o, odr_oid, &(*p)->oid, ODR_CONTEXT, 4, 0) &&
1313 odr_implicit(o, z_HumanString, &(*p)->description,
1314 ODR_CONTEXT, 5, 1) &&
1315 odr_implicit(o, z_External, &(*p)->instructions, ODR_CONTEXT, 6, 1) &&
1316 odr_sequence_end(o);
1317}
1318
1319int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt, const char *name)
1320{
1321 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1322 return opt && odr_ok(o);
1323 return
1324 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1325 odr_implicit(o, odr_oid, &(*p)->variantSet, ODR_CONTEXT, 1, 0) &&
1326 odr_implicit(o, z_InternationalString, &(*p)->name,
1327 ODR_CONTEXT, 2, 0) &&
1328 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1329 (odr_sequence_of(o, (Odr_fun)z_VariantClass, &(*p)->variants,
1330 &(*p)->num_variants, 0) || odr_ok(o)) &&
1331 odr_sequence_end(o);
1332}
1333
1334int z_VariantClass(ODR o, Z_VariantClass **p, int opt, const char *name)
1335{
1336 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1337 return opt && odr_ok(o);
1338 return
1339 odr_implicit(o, z_InternationalString, &(*p)->name,
1340 ODR_CONTEXT, 0, 1) &&
1341 odr_implicit(o, z_HumanString, &(*p)->description,
1342 ODR_CONTEXT, 1, 1) &&
1343 odr_implicit(o, odr_integer, &(*p)->variantClass, ODR_CONTEXT, 2, 0) &&
1344 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1345 odr_sequence_of(o, (Odr_fun)z_VariantType, &(*p)->variantTypes,
1346 &(*p)->num_variantTypes, 0) &&
1347 odr_sequence_end(o);
1348}
1349
1350int z_VariantType(ODR o, Z_VariantType **p, int opt, const char *name)
1351{
1352 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1353 return opt && odr_ok(o);
1354 return
1355 odr_implicit(o, z_InternationalString, &(*p)->name,
1356 ODR_CONTEXT, 0, 1) &&
1357 odr_implicit(o, z_HumanString, &(*p)->description,
1358 ODR_CONTEXT, 1, 1) &&
1359 odr_implicit(o, odr_integer, &(*p)->variantType,
1360 ODR_CONTEXT, 2, 0) &&
1361 odr_implicit(o, z_VariantValue, &(*p)->variantValue,
1362 ODR_CONTEXT, 3, 1) &&
1363 odr_sequence_end(o);
1364}
1365
1366int z_VariantValue(ODR o, Z_VariantValue **p, int opt, const char *name)
1367{
1368 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1369 return opt && odr_ok(o);
1370 return
1371 odr_explicit(o, odr_integer, &(*p)->dataType, ODR_CONTEXT, 0, 0) &&
1372 odr_explicit(o, z_ValueSet, &(*p)->values, ODR_CONTEXT, 1, 1) &&
1373 odr_sequence_end(o);
1374}
1375
1376int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt,
1377 const char *name)
1378{
1379 if (!odr_initmember(o, p, sizeof(**p)))
1380 return opt && odr_ok(o);
1381 if (odr_sequence_of(o, (Odr_fun)z_ValueDescription, &(*p)->elements,
1382 &(*p)->num, 0))
1383 return 1;
1384 *p = 0;
1385 return opt && odr_ok(o);
1386}
1387
1388int z_ValueSet(ODR o, Z_ValueSet **p, int opt, const char *name)
1389{
1390 static Odr_arm arm[] =
1391 {
1392 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ValueSet_range,
1393 (Odr_fun)z_ValueRange, 0},
1394 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueSet_enumerated,
1395 (Odr_fun)z_ValueSetEnumerated, 0},
1396 {-1, -1, -1, -1, 0, 0}
1397 };
1398
1399 if (!odr_initmember(o, p, sizeof(**p)))
1400 return opt && odr_ok(o);
1401 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
1402 return 1;
1403 *p = 0;
1404 return opt && odr_ok(o);
1405}
1406
1407int z_ValueRange(ODR o, Z_ValueRange **p, int opt, const char *name)
1408{
1409 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1410 return opt && odr_ok(o);
1411 return
1412 odr_explicit(o, z_ValueDescription, &(*p)->lower, ODR_CONTEXT, 0, 1) &&
1413 odr_explicit(o, z_ValueDescription, &(*p)->upper, ODR_CONTEXT, 1, 1) &&
1414 odr_sequence_end(o);
1415}
1416
1417int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt,
1418 const char *name)
1419{
1420 static Odr_arm arm[] =
1421 {
1422 {ODR_NONE, -1, -1, Z_ValueDescription_integer,
1423 (Odr_fun)odr_integer, 0},
1424 {ODR_NONE, -1, -1, Z_ValueDescription_string,
1425 (Odr_fun)z_InternationalString, 0},
1426 {ODR_NONE, -1, -1, Z_ValueDescription_octets,
1427 (Odr_fun)odr_octetstring, 0},
1428 {ODR_NONE, -1, -1, Z_ValueDescription_oid,
1429 (Odr_fun)odr_oid, 0},
1430 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueDescription_unit,
1431 (Odr_fun)z_Unit, 0},
1432 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ValueDescription_valueAndUnit,
1433 (Odr_fun)z_IntUnit, 0},
1434 {-1, -1, -1, -1, 0, 0}
1435 };
1436
1437 if (!odr_initmember(o, p, sizeof(**p)))
1438 return opt && odr_ok(o);
1439 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
1440 return 1;
1441 *p = 0;
1442 return opt && odr_ok(o);
1443}
1444
1445int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt, const char *name)
1446{
1447 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1448 return opt && odr_ok(o);
1449 return
1450 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1451 odr_implicit(o, z_InternationalString, &(*p)->unitSystem,
1452 ODR_CONTEXT, 1, 0) &&
1453 odr_implicit(o, z_HumanString, &(*p)->description,
1454 ODR_CONTEXT, 2, 1) &&
1455 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1456 (odr_sequence_of(o, (Odr_fun)z_UnitType, &(*p)->units,
1457 &(*p)->num_units, 0) ||
1458 odr_ok(o)) &&
1459 odr_sequence_end(o);
1460}
1461
1462int z_UnitType(ODR o, Z_UnitType **p, int opt, const char *name)
1463{
1464 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1465 return opt && odr_ok(o);
1466 return
1467 odr_implicit(o, z_InternationalString, &(*p)->name,
1468 ODR_CONTEXT, 0, 1) &&
1469 odr_implicit(o, z_HumanString, &(*p)->description,
1470 ODR_CONTEXT, 1, 1) &&
1471 odr_explicit(o, z_StringOrNumeric, &(*p)->unitType,
1472 ODR_CONTEXT, 2, 0) &&
1473 odr_implicit_settag(o, ODR_CONTEXT, 3) &&
1474 odr_sequence_of(o, (Odr_fun)z_Units, &(*p)->units,
1475 &(*p)->num_units, 0) &&
1476 odr_sequence_end(o);
1477}
1478
1479int z_Units(ODR o, Z_Units **p, int opt, const char *name)
1480{
1481 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1482 return opt && odr_ok(o);
1483 return
1484 odr_implicit(o, z_InternationalString, &(*p)->name,
1485 ODR_CONTEXT, 0, 1) &&
1486 odr_implicit(o, z_HumanString, &(*p)->description,
1487 ODR_CONTEXT, 1, 1) &&
1488 odr_explicit(o, z_StringOrNumeric, &(*p)->unit,
1489 ODR_CONTEXT, 2, 0) &&
1490 odr_sequence_end(o);
1491}
1492
1493int z_CategoryList(ODR o, Z_CategoryList **p, int opt, const char *name)
1494{
1495 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1496 return opt && odr_ok(o);
1497 return
1498 odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
1499 odr_implicit_settag(o, ODR_CONTEXT, 1) &&
1500 odr_sequence_of(o, (Odr_fun)z_CategoryInfo, &(*p)->categories,
1501 &(*p)->num_categories, 0) &&
1502 odr_sequence_end(o);
1503}
1504
1505int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt, const char *name)
1506{
1507 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
1508 return opt && odr_ok(o);
1509 return
1510 odr_implicit(o, z_InternationalString, &(*p)->category,
1511 ODR_CONTEXT, 1, 0) &&
1512 odr_implicit(o, z_InternationalString, &(*p)->originalCategory,
1513 ODR_CONTEXT, 2, 1) &&
1514 odr_implicit(o, z_HumanString, &(*p)->description,
1515 ODR_CONTEXT, 3, 1) &&
1516 odr_implicit(o, z_InternationalString, &(*p)->asn1Module,
1517 ODR_CONTEXT, 4, 1) &&
1518 odr_sequence_end(o);
1519}
1520
1521int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt, const char *name)
1522{
1523 static Odr_arm arm[] =
1524 {
1525 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Explain_targetInfo,
1526 (Odr_fun)z_TargetInfo, 0},
1527 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Explain_databaseInfo,
1528 (Odr_fun)z_DatabaseInfo, 0},
1529 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_Explain_schemaInfo,
1530 (Odr_fun)z_SchemaInfo, 0},
1531 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_Explain_tagSetInfo,
1532 (Odr_fun)z_TagSetInfo, 0},
1533 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_Explain_recordSyntaxInfo,
1534 (Odr_fun)z_RecordSyntaxInfo, 0},
1535 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_Explain_attributeSetInfo,
1536 (Odr_fun)z_AttributeSetInfo, 0},
1537 {ODR_IMPLICIT, ODR_CONTEXT, 6, Z_Explain_termListInfo,
1538 (Odr_fun)z_TermListInfo, 0},
1539 {ODR_IMPLICIT, ODR_CONTEXT, 7, Z_Explain_extendedServicesInfo,
1540 (Odr_fun)z_ExtendedServicesInfo, 0},
1541 {ODR_IMPLICIT, ODR_CONTEXT, 8, Z_Explain_attributeDetails,
1542 (Odr_fun)z_AttributeDetails, 0},
1543 {ODR_IMPLICIT, ODR_CONTEXT, 9, Z_Explain_termListDetails,
1544 (Odr_fun)z_TermListDetails, 0},
1545 {ODR_IMPLICIT, ODR_CONTEXT, 10, Z_Explain_elementSetDetails,
1546 (Odr_fun)z_ElementSetDetails, 0},
1547 {ODR_IMPLICIT, ODR_CONTEXT, 11, Z_Explain_retrievalRecordDetails,
1548 (Odr_fun)z_RetrievalRecordDetails, 0},
1549 {ODR_IMPLICIT, ODR_CONTEXT, 12, Z_Explain_sortDetails,
1550 (Odr_fun)z_SortDetails, 0},
1551 {ODR_IMPLICIT, ODR_CONTEXT, 13, Z_Explain_processing,
1552 (Odr_fun)z_ProcessingInformation, 0},
1553 {ODR_IMPLICIT, ODR_CONTEXT, 14, Z_Explain_variants,
1554 (Odr_fun)z_VariantSetInfo, 0},
1555 {ODR_IMPLICIT, ODR_CONTEXT, 15, Z_Explain_units,
1556 (Odr_fun)z_UnitInfo, 0},
1557 {ODR_IMPLICIT, ODR_CONTEXT, 100, Z_Explain_categoryList,
1558 (Odr_fun)z_CategoryList, 0},
1559 {-1, -1, -1, -1, 0, 0}
1560 };
1561
1562 if (!odr_initmember(o, p, sizeof(**p)))
1563 return opt && odr_ok(o);
1564 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
1565 return 1;
1566 *p = 0;
1567 return opt && odr_ok(o);
1568}
Note: See TracBrowser for help on using the repository browser.