eb4d21bf8db097333d2be7fc061b3729fa25b11c
[yaz-moved-to-github.git] / z39.50 / z-diag1.c
1 /* YC 0.2 Tue Feb 29 16:45:06 CET 2000 */
2 /* Module-C: DiagnosticFormatDiag1 */
3
4 #include <yaz/z-diag1.h>
5
6 int z_DiagnosticFormat_s (ODR o, Z_DiagnosticFormat_s **p, int opt, const char *name)
7 {
8         static Odr_arm arm[] = {
9                 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_DiagnosticFormat_s_defaultDiagRec,
10                 (Odr_fun) z_DefaultDiagFormat, "defaultDiagRec"},
11                 {ODR_EXPLICIT, ODR_CONTEXT, 2, Z_DiagnosticFormat_s_explicitDiagnostic,
12                 (Odr_fun) z_DiagFormat, "explicitDiagnostic"},
13                 {-1, -1, -1, -1, (Odr_fun) 0, 0}
14         };
15         if (!odr_sequence_begin (o, p, sizeof(**p), name))
16                 return opt && odr_ok (o);
17         return
18                 ((odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 1, "diagnostic") &&
19                 odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) &&
20                 odr_constructed_end (o)) || odr_ok(o)) &&
21                 odr_implicit_tag (o, z_InternationalString,
22                         &(*p)->message, ODR_CONTEXT, 2, 1, "message") &&
23                 odr_sequence_end (o);
24 }
25
26 int z_DiagnosticFormat (ODR o, Z_DiagnosticFormat **p, int opt, const char *name)
27 {
28         if (!odr_initmember (o, p, sizeof(**p)))
29                 return opt && odr_ok(o);
30         if (odr_sequence_of (o, (Odr_fun) z_DiagnosticFormat_s, &(*p)->elements,
31                 &(*p)->num, name))
32                 return 1;
33         *p = 0;
34         return opt && odr_ok(o);
35 }
36
37 int z_TooMany (ODR o, Z_TooMany **p, int opt, const char *name)
38 {
39         if (!odr_sequence_begin (o, p, sizeof(**p), name))
40                 return opt && odr_ok (o);
41         return
42                 odr_implicit_tag (o, odr_integer,
43                         &(*p)->tooManyWhat, ODR_CONTEXT, 1, 0, "tooManyWhat") &&
44                 odr_implicit_tag (o, odr_integer,
45                         &(*p)->max, ODR_CONTEXT, 2, 1, "max") &&
46                 odr_sequence_end (o);
47 }
48
49 int z_BadSpec (ODR o, Z_BadSpec **p, int opt, const char *name)
50 {
51         if (!odr_sequence_begin (o, p, sizeof(**p), name))
52                 return opt && odr_ok (o);
53         return
54                 odr_implicit_tag (o, z_Specification,
55                         &(*p)->spec, ODR_CONTEXT, 1, 0, "spec") &&
56                 odr_implicit_tag (o, z_DatabaseName,
57                         &(*p)->db, ODR_CONTEXT, 2, 1, "db") &&
58                 odr_implicit_settag (o, ODR_CONTEXT, 3) &&
59                 (odr_sequence_of(o, (Odr_fun) z_Specification, &(*p)->goodOnes,
60                   &(*p)->num_goodOnes, "goodOnes") || odr_ok(o)) &&
61                 odr_sequence_end (o);
62 }
63
64 int z_DbUnavail_0 (ODR o, Z_DbUnavail_0 **p, int opt, const char *name)
65 {
66         if (!odr_sequence_begin (o, p, sizeof(**p), name))
67                 return opt && odr_ok (o);
68         return
69                 odr_implicit_tag (o, odr_integer,
70                         &(*p)->reasonCode, ODR_CONTEXT, 1, 1, "reasonCode") &&
71                 odr_implicit_tag (o, z_InternationalString,
72                         &(*p)->message, ODR_CONTEXT, 2, 1, "message") &&
73                 odr_sequence_end (o);
74 }
75
76 int z_DbUnavail (ODR o, Z_DbUnavail **p, int opt, const char *name)
77 {
78         if (!odr_sequence_begin (o, p, sizeof(**p), name))
79                 return opt && odr_ok (o);
80         return
81                 odr_implicit_tag (o, z_DatabaseName,
82                         &(*p)->db, ODR_CONTEXT, 1, 0, "db") &&
83                 odr_implicit_tag (o, z_DbUnavail_0,
84                         &(*p)->why, ODR_CONTEXT, 2, 0, "why") &&
85                 odr_sequence_end (o);
86 }
87
88 int z_Attribute (ODR o, Z_Attribute **p, int opt, const char *name)
89 {
90         if (!odr_sequence_begin (o, p, sizeof(**p), name))
91                 return opt && odr_ok (o);
92         return
93                 odr_implicit_tag (o, odr_oid,
94                         &(*p)->id, ODR_CONTEXT, 1, 0, "id") &&
95                 odr_implicit_tag (o, odr_integer,
96                         &(*p)->type, ODR_CONTEXT, 2, 1, "type") &&
97                 odr_implicit_tag (o, odr_integer,
98                         &(*p)->value, ODR_CONTEXT, 3, 1, "value") &&
99                 odr_explicit_tag (o, z_Term,
100                         &(*p)->term, ODR_CONTEXT, 4, 1, "term") &&
101                 odr_sequence_end (o);
102 }
103
104 int z_AttCombo (ODR o, Z_AttCombo **p, int opt, const char *name)
105 {
106         if (!odr_sequence_begin (o, p, sizeof(**p), name))
107                 return opt && odr_ok (o);
108         return
109                 odr_implicit_tag (o, z_AttributeList,
110                         &(*p)->unsupportedCombination, ODR_CONTEXT, 1, 0, "unsupportedCombination") &&
111                 odr_implicit_settag (o, ODR_CONTEXT, 2) &&
112                 (odr_sequence_of(o, (Odr_fun) z_AttributeList, &(*p)->recommendedAlternatives,
113                   &(*p)->num_recommendedAlternatives, "recommendedAlternatives") || odr_ok(o)) &&
114                 odr_sequence_end (o);
115 }
116
117 int z_DiagTerm (ODR o, Z_DiagTerm **p, int opt, const char *name)
118 {
119         if (!odr_sequence_begin (o, p, sizeof(**p), name))
120                 return opt && odr_ok (o);
121         return
122                 odr_implicit_tag (o, odr_integer,
123                         &(*p)->problem, ODR_CONTEXT, 1, 1, "problem") &&
124                 odr_explicit_tag (o, z_Term,
125                         &(*p)->term, ODR_CONTEXT, 2, 0, "term") &&
126                 odr_sequence_end (o);
127 }
128
129 int z_Proximity (ODR o, Z_Proximity **p, int opt, const char *name)
130 {
131         static Odr_arm arm[] = {
132                 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Proximity_resultSets,
133                 (Odr_fun) odr_null, "resultSets"},
134                 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_Proximity_badSet,
135                 (Odr_fun) z_InternationalString, "badSet"},
136                 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_Proximity_relation,
137                 (Odr_fun) odr_integer, "relation"},
138                 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_Proximity_unit,
139                 (Odr_fun) odr_integer, "unit"},
140                 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_Proximity_distance,
141                 (Odr_fun) odr_integer, "distance"},
142                 {ODR_EXPLICIT, ODR_CONTEXT, 6, Z_Proximity_attributes,
143                 (Odr_fun) z_AttributeList, "attributes"},
144                 {ODR_IMPLICIT, ODR_CONTEXT, 7, Z_Proximity_ordered,
145                 (Odr_fun) odr_null, "ordered"},
146                 {ODR_IMPLICIT, ODR_CONTEXT, 8, Z_Proximity_exclusion,
147                 (Odr_fun) odr_null, "exclusion"},
148                 {-1, -1, -1, -1, (Odr_fun) 0, 0}
149         };
150         if (!odr_initmember(o, p, sizeof(**p)))
151                 return opt && odr_ok(o);
152         if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
153                 return 1;
154         *p = 0;
155         return opt && odr_ok(o);
156 }
157
158 int z_AttrListList (ODR o, Z_AttrListList **p, int opt, const char *name)
159 {
160         if (!odr_initmember (o, p, sizeof(**p)))
161                 return opt && odr_ok(o);
162         if (odr_sequence_of (o, (Odr_fun) z_AttributeList, &(*p)->elements,
163                 &(*p)->num, name))
164                 return 1;
165         *p = 0;
166         return opt && odr_ok(o);
167 }
168
169 int z_Scan (ODR o, Z_Scan **p, int opt, const char *name)
170 {
171         static Odr_arm arm[] = {
172                 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Scan_nonZeroStepSize,
173                 (Odr_fun) odr_null, "nonZeroStepSize"},
174                 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Scan_specifiedStepSize,
175                 (Odr_fun) odr_null, "specifiedStepSize"},
176                 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_Scan_termList1,
177                 (Odr_fun) odr_null, "termList1"},
178                 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_Scan_termList2,
179                 (Odr_fun) z_AttrListList, "termList2"},
180                 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_Scan_posInResponse,
181                 (Odr_fun) odr_integer, "posInResponse"},
182                 {ODR_IMPLICIT, ODR_CONTEXT, 6, Z_Scan_resources,
183                 (Odr_fun) odr_null, "resources"},
184                 {ODR_IMPLICIT, ODR_CONTEXT, 7, Z_Scan_endOfList,
185                 (Odr_fun) odr_null, "endOfList"},
186                 {-1, -1, -1, -1, (Odr_fun) 0, 0}
187         };
188         if (!odr_initmember(o, p, sizeof(**p)))
189                 return opt && odr_ok(o);
190         if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
191                 return 1;
192         *p = 0;
193         return opt && odr_ok(o);
194 }
195
196 int z_StringList (ODR o, Z_StringList **p, int opt, const char *name)
197 {
198         if (!odr_initmember (o, p, sizeof(**p)))
199                 return opt && odr_ok(o);
200         if (odr_sequence_of (o, (Odr_fun) z_InternationalString, &(*p)->elements,
201                 &(*p)->num, name))
202                 return 1;
203         *p = 0;
204         return opt && odr_ok(o);
205 }
206
207 int z_Sort (ODR o, Z_Sort **p, int opt, const char *name)
208 {
209         static Odr_arm arm[] = {
210                 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortD_sequence,
211                 (Odr_fun) odr_null, "sequence"},
212                 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_SortD_noRsName,
213                 (Odr_fun) odr_null, "noRsName"},
214                 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_SortD_tooMany,
215                 (Odr_fun) odr_integer, "tooMany"},
216                 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_SortD_incompatible,
217                 (Odr_fun) odr_null, "incompatible"},
218                 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_SortD_generic,
219                 (Odr_fun) odr_null, "generic"},
220                 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_SortD_dbSpecific,
221                 (Odr_fun) odr_null, "dbSpecific"},
222                 {ODR_EXPLICIT, ODR_CONTEXT, 6, Z_SortD_sortElement,
223                 (Odr_fun) z_SortElement, "sortElement"},
224                 {ODR_IMPLICIT, ODR_CONTEXT, 7, Z_SortD_key,
225                 (Odr_fun) odr_integer, "key"},
226                 {ODR_IMPLICIT, ODR_CONTEXT, 8, Z_SortD_action,
227                 (Odr_fun) odr_null, "action"},
228                 {ODR_IMPLICIT, ODR_CONTEXT, 9, Z_SortD_illegal,
229                 (Odr_fun) odr_integer, "illegal"},
230                 {ODR_IMPLICIT, ODR_CONTEXT, 10, Z_SortD_inputTooLarge,
231                 (Odr_fun) z_StringList, "inputTooLarge"},
232                 {ODR_IMPLICIT, ODR_CONTEXT, 11, Z_SortD_aggregateTooLarge,
233                 (Odr_fun) odr_null, "aggregateTooLarge"},
234                 {-1, -1, -1, -1, (Odr_fun) 0, 0}
235         };
236         if (!odr_initmember(o, p, sizeof(**p)))
237                 return opt && odr_ok(o);
238         if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
239                 return 1;
240         *p = 0;
241         return opt && odr_ok(o);
242 }
243
244 int z_Segmentation (ODR o, Z_Segmentation **p, int opt, const char *name)
245 {
246         static Odr_arm arm[] = {
247                 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Segmentation_segmentCount,
248                 (Odr_fun) odr_null, "segmentCount"},
249                 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Segmentation_segmentSize,
250                 (Odr_fun) odr_integer, "segmentSize"},
251                 {-1, -1, -1, -1, (Odr_fun) 0, 0}
252         };
253         if (!odr_initmember(o, p, sizeof(**p)))
254                 return opt && odr_ok(o);
255         if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
256                 return 1;
257         *p = 0;
258         return opt && odr_ok(o);
259 }
260
261 int z_ExtServices (ODR o, Z_ExtServices **p, int opt, const char *name)
262 {
263         static Odr_arm arm[] = {
264                 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ExtServices_req,
265                 (Odr_fun) odr_integer, "req"},
266                 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ExtServices_permission,
267                 (Odr_fun) odr_integer, "permission"},
268                 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_ExtServices_immediate,
269                 (Odr_fun) odr_integer, "immediate"},
270                 {-1, -1, -1, -1, (Odr_fun) 0, 0}
271         };
272         if (!odr_initmember(o, p, sizeof(**p)))
273                 return opt && odr_ok(o);
274         if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
275                 return 1;
276         *p = 0;
277         return opt && odr_ok(o);
278 }
279
280 int z_OidList (ODR o, Z_OidList **p, int opt, const char *name)
281 {
282         if (!odr_initmember (o, p, sizeof(**p)))
283                 return opt && odr_ok(o);
284         if (odr_sequence_of (o, (Odr_fun) odr_oid, &(*p)->elements,
285                 &(*p)->num, name))
286                 return 1;
287         *p = 0;
288         return opt && odr_ok(o);
289 }
290
291 int z_AltOidList (ODR o, Z_AltOidList **p, int opt, const char *name)
292 {
293         if (!odr_initmember (o, p, sizeof(**p)))
294                 return opt && odr_ok(o);
295         if (odr_sequence_of (o, (Odr_fun) odr_oid, &(*p)->elements,
296                 &(*p)->num, name))
297                 return 1;
298         *p = 0;
299         return opt && odr_ok(o);
300 }
301
302 int z_AccessCtrl (ODR o, Z_AccessCtrl **p, int opt, const char *name)
303 {
304         static Odr_arm arm[] = {
305                 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_AccessCtrl_noUser,
306                 (Odr_fun) odr_null, "noUser"},
307                 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_AccessCtrl_refused,
308                 (Odr_fun) odr_null, "refused"},
309                 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_AccessCtrl_simple,
310                 (Odr_fun) odr_null, "simple"},
311                 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_AccessCtrl_oid,
312                 (Odr_fun) z_OidList, "oid"},
313                 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_AccessCtrl_alternative,
314                 (Odr_fun) z_AltOidList, "alternative"},
315                 {ODR_IMPLICIT, ODR_CONTEXT, 6, Z_AccessCtrl_pwdInv,
316                 (Odr_fun) odr_null, "pwdInv"},
317                 {ODR_IMPLICIT, ODR_CONTEXT, 7, Z_AccessCtrl_pwdExp,
318                 (Odr_fun) odr_null, "pwdExp"},
319                 {-1, -1, -1, -1, (Odr_fun) 0, 0}
320         };
321         if (!odr_initmember(o, p, sizeof(**p)))
322                 return opt && odr_ok(o);
323         if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
324                 return 1;
325         *p = 0;
326         return opt && odr_ok(o);
327 }
328
329 int z_RecordSyntax (ODR o, Z_RecordSyntax **p, int opt, const char *name)
330 {
331         if (!odr_sequence_begin (o, p, sizeof(**p), name))
332                 return opt && odr_ok (o);
333         return
334                 odr_implicit_tag (o, odr_oid,
335                         &(*p)->unsupportedSyntax, ODR_CONTEXT, 1, 0, "unsupportedSyntax") &&
336                 odr_implicit_settag (o, ODR_CONTEXT, 2) &&
337                 (odr_sequence_of(o, (Odr_fun) odr_oid, &(*p)->suggestedAlternatives,
338                   &(*p)->num_suggestedAlternatives, "suggestedAlternatives") || odr_ok(o)) &&
339                 odr_sequence_end (o);
340 }
341
342 int z_DiagFormat (ODR o, Z_DiagFormat **p, int opt, const char *name)
343 {
344         static Odr_arm arm[] = {
345                 {ODR_IMPLICIT, ODR_CONTEXT, 1000, Z_DiagFormat_tooMany,
346                 (Odr_fun) z_TooMany, "tooMany"},
347                 {ODR_IMPLICIT, ODR_CONTEXT, 1001, Z_DiagFormat_badSpec,
348                 (Odr_fun) z_BadSpec, "badSpec"},
349                 {ODR_IMPLICIT, ODR_CONTEXT, 1002, Z_DiagFormat_dbUnavail,
350                 (Odr_fun) z_DbUnavail, "dbUnavail"},
351                 {ODR_IMPLICIT, ODR_CONTEXT, 1003, Z_DiagFormat_unSupOp,
352                 (Odr_fun) odr_integer, "unSupOp"},
353                 {ODR_IMPLICIT, ODR_CONTEXT, 1004, Z_DiagFormat_attribute,
354                 (Odr_fun) z_Attribute, "attribute"},
355                 {ODR_IMPLICIT, ODR_CONTEXT, 1005, Z_DiagFormat_attCombo,
356                 (Odr_fun) z_AttCombo, "attCombo"},
357                 {ODR_IMPLICIT, ODR_CONTEXT, 1006, Z_DiagFormat_term,
358                 (Odr_fun) z_DiagTerm, "term"},
359                 {ODR_EXPLICIT, ODR_CONTEXT, 1007, Z_DiagFormat_proximity,
360                 (Odr_fun) z_Proximity, "proximity"},
361                 {ODR_EXPLICIT, ODR_CONTEXT, 1008, Z_DiagFormat_scan,
362                 (Odr_fun) z_Scan, "scan"},
363                 {ODR_EXPLICIT, ODR_CONTEXT, 1009, Z_DiagFormat_sort,
364                 (Odr_fun) z_Sort, "sort"},
365                 {ODR_EXPLICIT, ODR_CONTEXT, 1010, Z_DiagFormat_segmentation,
366                 (Odr_fun) z_Segmentation, "segmentation"},
367                 {ODR_EXPLICIT, ODR_CONTEXT, 1011, Z_DiagFormat_extServices,
368                 (Odr_fun) z_ExtServices, "extServices"},
369                 {ODR_EXPLICIT, ODR_CONTEXT, 1012, Z_DiagFormat_accessCtrl,
370                 (Odr_fun) z_AccessCtrl, "accessCtrl"},
371                 {ODR_IMPLICIT, ODR_CONTEXT, 1013, Z_DiagFormat_recordSyntax,
372                 (Odr_fun) z_RecordSyntax, "recordSyntax"},
373                 {-1, -1, -1, -1, (Odr_fun) 0, 0}
374         };
375         if (!odr_initmember(o, p, sizeof(**p)))
376                 return opt && odr_ok(o);
377         if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
378                 return 1;
379         *p = 0;
380         return opt && odr_ok(o);
381 }