85b0aa788622063d06ed47dbd5847db80dbbcea2
[yaz-moved-to-github.git] / z39.50 / zes-update.c
1 /* YC 0.2 Tue Feb 29 15:20:49 CET 2000 */
2 /* Module-C: ESFormat-Update */
3
4 #include <yaz/zes-update.h>
5
6 int z_IUUpdateEsRequest (ODR o, Z_IUUpdateEsRequest **p, int opt, const char *name)
7 {
8         if (!odr_sequence_begin (o, p, sizeof(**p), name))
9                 return opt && odr_ok (o);
10         return
11                 odr_explicit_tag (o, z_IUOriginPartToKeep,
12                         &(*p)->toKeep, ODR_CONTEXT, 1, 0, "toKeep") &&
13                 odr_explicit_tag (o, z_IUOriginPartNotToKeep,
14                         &(*p)->notToKeep, ODR_CONTEXT, 2, 0, "notToKeep") &&
15                 odr_sequence_end (o);
16 }
17
18 int z_IUUpdateTaskPackage (ODR o, Z_IUUpdateTaskPackage **p, int opt, const char *name)
19 {
20         if (!odr_sequence_begin (o, p, sizeof(**p), name))
21                 return opt && odr_ok (o);
22         return
23                 odr_explicit_tag (o, z_IUOriginPartToKeep,
24                         &(*p)->originPart, ODR_CONTEXT, 1, 0, "originPart") &&
25                 odr_explicit_tag (o, z_IUTargetPart,
26                         &(*p)->targetPart, ODR_CONTEXT, 2, 0, "targetPart") &&
27                 odr_sequence_end (o);
28 }
29
30 int z_IUUpdate (ODR o, Z_IUUpdate **p, int opt, const char *name)
31 {
32         static Odr_arm arm[] = {
33                 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IUUpdate_esRequest,
34                 (Odr_fun) z_IUUpdateEsRequest, "esRequest"},
35                 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IUUpdate_taskPackage,
36                 (Odr_fun) z_IUUpdateTaskPackage, "taskPackage"},
37                 {-1, -1, -1, -1, (Odr_fun) 0, 0}
38         };
39         if (!odr_initmember(o, p, sizeof(**p)))
40                 return opt && odr_ok(o);
41         if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
42                 return 1;
43         *p = 0;
44         return opt && odr_ok(o);
45 }
46
47 int z_IUOriginPartToKeep (ODR o, Z_IUOriginPartToKeep **p, int opt, const char *name)
48 {
49         if (!odr_sequence_begin (o, p, sizeof(**p), name))
50                 return opt && odr_ok (o);
51         return
52                 odr_implicit_tag (o, odr_integer,
53                         &(*p)->action, ODR_CONTEXT, 1, 0, "action") &&
54                 odr_implicit_tag (o, z_InternationalString,
55                         &(*p)->databaseName, ODR_CONTEXT, 2, 0, "databaseName") &&
56                 odr_implicit_tag (o, odr_oid,
57                         &(*p)->schema, ODR_CONTEXT, 3, 1, "schema") &&
58                 odr_implicit_tag (o, z_InternationalString,
59                         &(*p)->elementSetName, ODR_CONTEXT, 4, 1, "elementSetName") &&
60                 odr_implicit_tag (o, z_External,
61                         &(*p)->actionQualifier, ODR_CONTEXT, 5, 1, "actionQualifier") &&
62                 odr_sequence_end (o);
63 }
64
65 int z_IUOriginPartNotToKeep (ODR o, Z_IUOriginPartNotToKeep **p, int opt, const char *name)
66 {
67         return z_IUSuppliedRecords (o, p, opt, name);
68 }
69
70 int z_IUTargetPart (ODR o, Z_IUTargetPart **p, int opt, const char *name)
71 {
72         if (!odr_sequence_begin (o, p, sizeof(**p), name))
73                 return opt && odr_ok (o);
74         return
75                 odr_implicit_tag (o, odr_integer,
76                         &(*p)->updateStatus, ODR_CONTEXT, 1, 0, "updateStatus") &&
77                 odr_implicit_settag (o, ODR_CONTEXT, 2) &&
78                 (odr_sequence_of(o, (Odr_fun) z_DiagRec, &(*p)->globalDiagnostics,
79                   &(*p)->num_globalDiagnostics, "globalDiagnostics") || odr_ok(o)) &&
80                 odr_implicit_settag (o, ODR_CONTEXT, 3) &&
81                 odr_sequence_of(o, (Odr_fun) z_IUTaskPackageRecordStructure, &(*p)->taskPackageRecords,
82                   &(*p)->num_taskPackageRecords, "taskPackageRecords") &&
83                 odr_sequence_end (o);
84 }
85
86 int z_IUSuppliedRecordsId (ODR o, Z_IUSuppliedRecordsId **p, int opt, const char *name)
87 {
88         static Odr_arm arm[] = {
89                 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IUSuppliedRecordsId_timeStamp,
90                 (Odr_fun) odr_generalizedtime, "timeStamp"},
91                 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IUSuppliedRecordsId_versionNumber,
92                 (Odr_fun) z_InternationalString, "versionNumber"},
93                 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IUSuppliedRecordsId_previousVersion,
94                 (Odr_fun) z_External, "previousVersion"},
95                 {-1, -1, -1, -1, (Odr_fun) 0, 0}
96         };
97         if (!odr_initmember(o, p, sizeof(**p)))
98                 return opt && odr_ok(o);
99         if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
100                 return 1;
101         *p = 0;
102         return opt && odr_ok(o);
103 }
104
105 int z_IUSuppliedRecords_elem (ODR o, Z_IUSuppliedRecords_elem **p, int opt, const char *name)
106 {
107         static Odr_arm arm[] = {
108                 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IUSuppliedRecords_elem_number,
109                 (Odr_fun) odr_integer, "number"},
110                 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IUSuppliedRecords_elem_string,
111                 (Odr_fun) z_InternationalString, "string"},
112                 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IUSuppliedRecords_elem_opaque,
113                 (Odr_fun) odr_octetstring, "opaque"},
114                 {-1, -1, -1, -1, (Odr_fun) 0, 0}
115         };
116         if (!odr_sequence_begin (o, p, sizeof(**p), name))
117                 return opt && odr_ok (o);
118         return
119                 ((odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 1, "recordId") &&
120                 odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) &&
121                 odr_constructed_end (o)) || odr_ok(o)) &&
122                 odr_explicit_tag (o, z_IUSuppliedRecordsId,
123                         &(*p)->supplementalId, ODR_CONTEXT, 2, 1, "supplementalId") &&
124                 odr_implicit_tag (o, z_IUCorrelationInfo,
125                         &(*p)->correlationInfo, ODR_CONTEXT, 3, 1, "correlationInfo") &&
126                 odr_implicit_tag (o, z_External,
127                         &(*p)->record, ODR_CONTEXT, 4, 0, "record") &&
128                 odr_sequence_end (o);
129 }
130
131 int z_IUSuppliedRecords (ODR o, Z_IUSuppliedRecords **p, int opt, const char *name)
132 {
133         if (!odr_initmember (o, p, sizeof(**p)))
134                 return opt && odr_ok(o);
135         if (odr_sequence_of (o, (Odr_fun) z_IUSuppliedRecords_elem, &(*p)->elements,
136                 &(*p)->num, name))
137                 return 1;
138         *p = 0;
139         return opt && odr_ok(o);
140 }
141
142 int z_IUCorrelationInfo (ODR o, Z_IUCorrelationInfo **p, int opt, const char *name)
143 {
144         if (!odr_sequence_begin (o, p, sizeof(**p), name))
145                 return opt && odr_ok (o);
146         return
147                 odr_implicit_tag (o, z_InternationalString,
148                         &(*p)->note, ODR_CONTEXT, 1, 1, "note") &&
149                 odr_implicit_tag (o, odr_integer,
150                         &(*p)->id, ODR_CONTEXT, 2, 1, "id") &&
151                 odr_sequence_end (o);
152 }
153
154 int z_IUTaskPackageRecordStructureSurrogateDiagnostics (ODR o, Z_IUTaskPackageRecordStructureSurrogateDiagnostics **p, int opt, const char *name)
155 {
156         if (!odr_initmember (o, p, sizeof(**p)))
157                 return opt && odr_ok(o);
158         if (odr_sequence_of (o, (Odr_fun) z_DiagRec, &(*p)->elements,
159                 &(*p)->num, name))
160                 return 1;
161         *p = 0;
162         return opt && odr_ok(o);
163 }
164
165 int z_IUTaskPackageRecordStructure (ODR o, Z_IUTaskPackageRecordStructure **p, int opt, const char *name)
166 {
167         static Odr_arm arm[] = {
168                 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IUTaskPackageRecordStructure_record,
169                 (Odr_fun) z_External, "record"},
170                 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IUTaskPackageRecordStructure_surrogateDiagnostics,
171                 (Odr_fun) z_IUTaskPackageRecordStructureSurrogateDiagnostics, "surrogateDiagnostics"},
172                 {-1, -1, -1, -1, (Odr_fun) 0, 0}
173         };
174         if (!odr_sequence_begin (o, p, sizeof(**p), name))
175                 return opt && odr_ok (o);
176         return
177                 ((odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 1, "recordOrSurDiag") &&
178                 odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) &&
179                 odr_constructed_end (o)) || odr_ok(o)) &&
180                 odr_implicit_tag (o, z_IUCorrelationInfo,
181                         &(*p)->correlationInfo, ODR_CONTEXT, 2, 1, "correlationInfo") &&
182                 odr_implicit_tag (o, odr_integer,
183                         &(*p)->recordStatus, ODR_CONTEXT, 3, 0, "recordStatus") &&
184                 odr_implicit_settag (o, ODR_CONTEXT, 4) &&
185                 (odr_sequence_of(o, (Odr_fun) z_DiagRec, &(*p)->supplementalDiagnostics,
186                   &(*p)->num_supplementalDiagnostics, "supplementalDiagnostics") || odr_ok(o)) &&
187                 odr_sequence_end (o);
188 }