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