2 * Copyright (c) 1995-1999, Index Data.
3 * See the file LICENSE for details.
4 * Sebastian Hammer, Adam Dickmeiss
7 * Revision 1.11 1999-11-30 13:47:11 adam
8 * Improved installation. Moved header files to include/yaz.
10 * Revision 1.10 1999/05/26 13:49:12 adam
11 * DB Update implemented in client (very basic).
13 * Revision 1.9 1999/04/20 09:56:48 adam
14 * Added 'name' paramter to encoder/decoder routines (typedef Odr_fun).
15 * Modified all encoders/decoders to reflect this change.
17 * Revision 1.8 1998/02/11 11:53:32 adam
18 * Changed code so that it compiles as C++.
20 * Revision 1.7 1998/02/10 15:31:46 adam
21 * Implemented date and time structure. Changed the Update Extended
24 * Revision 1.6 1998/01/05 09:04:57 adam
25 * Fixed bugs in encoders/decoders - Not operator (!) missing.
27 * Revision 1.5 1997/04/30 08:52:02 quinn
30 * Revision 1.4 1996/10/10 12:35:12 quinn
31 * Added Update extended service.
33 * Revision 1.3 1995/09/29 17:11:54 quinn
36 * Revision 1.2 1995/09/27 15:02:41 quinn
37 * Modified function heads & prototypes.
39 * Revision 1.1 1995/08/21 09:16:32 quinn
40 * Added Extended services + Item Order
45 #include <yaz/proto.h>
47 int z_TaskPackage(ODR o, Z_TaskPackage **p, int opt, const char *name)
49 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
50 return opt && odr_ok(o);
52 odr_implicit(o, odr_oid, &(*p)->packageType, ODR_CONTEXT, 1, 0) &&
53 odr_implicit(o, z_InternationalString, &(*p)->packageName,
55 odr_implicit(o, z_InternationalString, &(*p)->userId,
57 odr_implicit(o, z_IntUnit, &(*p)->retentionTime, ODR_CONTEXT, 4, 1) &&
58 odr_implicit(o, z_Permissions, &(*p)->permissions,
60 odr_implicit(o, z_InternationalString, &(*p)->description,
62 odr_implicit(o, odr_octetstring, &(*p)->targetReference,
64 odr_implicit(o, odr_generalizedtime, &(*p)->creationDateTime,
66 odr_implicit(o, odr_integer, &(*p)->taskStatus,
68 odr_implicit_settag(o, ODR_CONTEXT, 10) &&
69 (odr_sequence_of(o, (Odr_fun)z_DiagRec, &(*p)->packageDiagnostics,
70 &(*p)->num_packageDiagnostics, 0) || odr_ok(o)) &&
71 odr_implicit(o, z_External, &(*p)->taskSpecificParameters,
72 ODR_CONTEXT, 11, 0) &&
76 /* ----------------------- ITEM ORDER --------------------- */
78 int z_IOTargetPart(ODR o, Z_IOTargetPart **p, int opt, const char *name)
80 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
81 return opt && odr_ok(o);
83 odr_implicit(o, z_External, &(*p)->itemRequest, ODR_CONTEXT, 1, 1) &&
84 odr_implicit(o, z_External, &(*p)->statusOrErrorReport, ODR_CONTEXT,
86 odr_implicit(o, odr_integer, &(*p)->auxiliaryStatus, ODR_CONTEXT,
91 int z_IOResultSetItem(ODR o, Z_IOResultSetItem **p, int opt, const char *name)
93 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
94 return opt && odr_ok(o);
96 odr_implicit(o, z_InternationalString, &(*p)->resultSetId, ODR_CONTEXT,
98 odr_implicit(o, odr_integer, &(*p)->item, ODR_CONTEXT, 2, 1) &&
102 int z_IOOriginPartNotToKeep(ODR o, Z_IOOriginPartNotToKeep **p, int opt,
105 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
106 return opt && odr_ok(o);
108 odr_implicit(o, z_IOResultSetItem, &(*p)->resultSetItem, ODR_CONTEXT,
110 odr_implicit(o, z_External, &(*p)->itemRequest, ODR_CONTEXT, 2, 1) &&
114 int z_IOContact(ODR o, Z_IOContact **p, int opt, const char *name)
116 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
117 return opt && odr_ok(o);
119 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
121 odr_implicit(o, z_InternationalString, &(*p)->phone, ODR_CONTEXT,
123 odr_implicit(o, z_InternationalString, &(*p)->email, ODR_CONTEXT,
128 int z_IOCreditCardInfo(ODR o, Z_IOCreditCardInfo **p, int opt,
131 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
132 return opt && odr_ok(o);
134 odr_implicit(o, z_InternationalString, &(*p)->nameOnCard, ODR_CONTEXT,
136 odr_implicit(o, z_InternationalString, &(*p)->expirationDate,
137 ODR_CONTEXT, 2, 0) &&
138 odr_implicit(o, z_InternationalString, &(*p)->cardNumber, ODR_CONTEXT,
143 int z_IOBilling(ODR o, Z_IOBilling **p, int opt, const char *name)
145 static Odr_arm arm[] =
147 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_IOBilling_billInvoice,
148 (Odr_fun)odr_null, 0},
149 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IOBilling_prepay,
150 (Odr_fun)odr_null, 0},
151 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IOBilling_depositAccount,
152 (Odr_fun)odr_null, 0},
153 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IOBilling_creditCard,
154 (Odr_fun)z_IOCreditCardInfo, 0},
155 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_IOBilling_cardInfoPreviouslySupplied,
156 (Odr_fun)odr_null, 0},
157 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_IOBilling_privateKnown,
158 (Odr_fun)odr_null, 0},
159 {ODR_IMPLICIT, ODR_CONTEXT, 6, Z_IOBilling_privateNotKnown,
160 (Odr_fun)z_External, 0},
161 {-1, -1, -1, -1, 0, 0}
164 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
165 return opt && odr_ok(o);
167 odr_constructed_begin(o, &(*p)->paymentMethod,
168 ODR_CONTEXT, 1, 0) &&
169 odr_choice(o, arm, &(*p)->paymentMethod, &(*p)->which, 0) &&
170 odr_constructed_end(o) &&
171 odr_implicit(o, z_InternationalString, &(*p)->customerReference,
172 ODR_CONTEXT, 2, 1) &&
173 odr_implicit(o, z_InternationalString, &(*p)->customerPONumber,
174 ODR_CONTEXT, 3, 1) &&
178 int z_IOOriginPartToKeep(ODR o, Z_IOOriginPartToKeep **p, int opt,
181 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
182 return opt && odr_ok(o);
184 odr_implicit(o, z_External, &(*p)->supplDescription,
185 ODR_CONTEXT, 1, 1) &&
186 odr_implicit(o, z_IOContact, &(*p)->contact, ODR_CONTEXT, 2, 1) &&
187 odr_implicit(o, z_IOBilling, &(*p)->addlBilling,
188 ODR_CONTEXT, 3, 1) &&
192 int z_IORequest(ODR o, Z_IORequest **p, int opt, const char *name)
194 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
195 return opt && odr_ok(o);
197 odr_implicit(o, z_IOOriginPartToKeep, &(*p)->toKeep,
198 ODR_CONTEXT, 1, 1) &&
199 odr_implicit(o, z_IOOriginPartNotToKeep, &(*p)->notToKeep,
200 ODR_CONTEXT, 2, 0) &&
204 int z_IOTaskPackage(ODR o, Z_IOTaskPackage **p, int opt, const char *name)
206 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
207 return opt && odr_ok(o);
209 odr_implicit(o, z_IOOriginPartToKeep, &(*p)->originPart,
210 ODR_CONTEXT, 1, 1) &&
211 odr_implicit(o, z_IOTargetPart, &(*p)->targetPart,
212 ODR_CONTEXT, 2, 0) &&
216 int z_ItemOrder(ODR o, Z_ItemOrder **p, int opt, const char *name)
218 static Odr_arm arm[] =
220 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ItemOrder_esRequest,
221 (Odr_fun)z_IORequest, 0},
222 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ItemOrder_taskPackage,
223 (Odr_fun)z_IOTaskPackage, 0},
224 {-1, -1, -1, -1, 0, 0}
227 if (o->direction == ODR_DECODE)
228 *p = (Z_ItemOrder *)odr_malloc(o, sizeof(**p));
231 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
234 return opt && odr_ok(o);
237 /* ----------------------- ITEM UPDATE -------------------- */
239 int z_IUSuppliedRecordsId (ODR o, Z_IUSuppliedRecordsId **p, int opt,
242 static Odr_arm arm[] = {
243 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IUSuppliedRecordsId_timeStamp,
244 odr_generalizedtime, 0},
245 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IUSuppliedRecordsId_versionNumber,
246 z_InternationalString, 0},
247 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IUSuppliedRecordsId_previousVersion,
248 (Odr_fun)odr_external, 0},
249 {-1, -1, -1, -1, 0, 0}
251 if (!odr_initmember(o, p, sizeof(**p)))
252 return opt && odr_ok(o);
253 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
256 return opt && odr_ok(o);
259 int z_IUCorrelationInfo (ODR o, Z_IUCorrelationInfo **p, int opt,
262 if (!odr_sequence_begin (o, p, sizeof(**p), 0))
263 return opt && odr_ok (o);
265 odr_implicit (o, z_InternationalString,
266 &(*p)->note, ODR_CONTEXT, 1, 1) &&
267 odr_implicit (o, odr_integer,
268 &(*p)->id, ODR_CONTEXT, 2, 1) &&
269 odr_sequence_end (o);
272 int z_IUSuppliedRecords_elem (ODR o, Z_IUSuppliedRecords_elem **p, int opt,
275 static Odr_arm arm[] = {
276 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IUSuppliedRecords_number,
277 (Odr_fun)odr_integer, 0},
278 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IUSuppliedRecords_string,
279 (Odr_fun)z_InternationalString, 0},
280 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IUSuppliedRecords_opaque,
281 (Odr_fun)odr_octetstring, 0},
282 {-1, -1, -1, -1, 0, 0}
284 if (!odr_sequence_begin (o, p, sizeof(**p), 0))
285 return opt && odr_ok (o);
287 ((odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 1, 0) &&
288 odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) &&
289 odr_constructed_end (o)) || odr_ok(o)) &&
290 odr_explicit (o, z_IUSuppliedRecordsId,
291 &(*p)->supplementalId, ODR_CONTEXT, 2, 1) &&
292 odr_implicit (o, z_IUCorrelationInfo,
293 &(*p)->correlationInfo, ODR_CONTEXT, 3, 1) &&
294 odr_implicit (o, z_External,
295 &(*p)->record, ODR_CONTEXT, 4, 0) &&
296 odr_sequence_end (o);
299 int z_IUSuppliedRecords (ODR o, Z_IUSuppliedRecords **p, int opt,
302 if (!odr_initmember (o, p, sizeof(**p)))
303 return opt && odr_ok(o);
304 if (odr_sequence_of (o, (Odr_fun)z_IUSuppliedRecords_elem, &(*p)->elements,
308 return opt && odr_ok(o);
311 int z_IUTaskPackageRecordStructure (ODR o, Z_IUTaskPackageRecordStructure **p,
312 int opt, const char *name)
314 static Odr_arm arm[] = {
315 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IUTaskPackageRecordStructure_record,
316 (Odr_fun)odr_external, 0},
317 {ODR_EXPLICIT, ODR_CONTEXT, 2,
318 Z_IUTaskPackageRecordStructure_surrogateDiagnostics,
319 (Odr_fun)z_DiagRecs, 0},
320 {-1, -1, -1, -1, 0, 0}
322 if (!odr_sequence_begin (o, p, sizeof(**p), 0))
323 return opt && odr_ok (o);
325 ((odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 1, 0) &&
326 odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) &&
327 odr_constructed_end (o)) || odr_ok(o)) &&
328 odr_implicit (o, z_IUCorrelationInfo,
329 &(*p)->correlationInfo, ODR_CONTEXT, 2, 1) &&
330 odr_implicit (o, odr_integer,
331 &(*p)->recordStatus, ODR_CONTEXT, 3, 0) &&
332 odr_implicit (o, z_DiagRecs,
333 &(*p)->supplementalDiagnostics, ODR_CONTEXT, 4, 1) &&
334 odr_sequence_end (o);
337 int z_IUOriginPartToKeep (ODR o, Z_IUOriginPartToKeep **p, int opt,
340 if (!odr_sequence_begin (o, p, sizeof(**p), 0))
341 return opt && odr_ok (o);
343 odr_implicit (o, odr_integer,
344 &(*p)->action, ODR_CONTEXT, 1, 0) &&
345 odr_implicit (o, z_InternationalString,
346 &(*p)->databaseName, ODR_CONTEXT, 2, 0) &&
347 odr_implicit (o, odr_oid,
348 &(*p)->schema, ODR_CONTEXT, 3, 1) &&
349 odr_implicit (o, z_InternationalString,
350 &(*p)->elementSetName, ODR_CONTEXT, 4, 1) &&
351 odr_implicit (o, odr_external,
352 &(*p)->actionQualifier, ODR_CONTEXT, 5, 1) &&
353 odr_sequence_end (o);
356 int z_IUTargetPart (ODR o, Z_IUTargetPart **p, int opt, const char *name)
358 if (!odr_sequence_begin (o, p, sizeof(**p), 0))
359 return opt && odr_ok (o);
361 odr_implicit (o, odr_integer,
362 &(*p)->updateStatus, ODR_CONTEXT, 1, 0) &&
363 odr_implicit_settag (o, ODR_CONTEXT, 2) &&
364 (odr_sequence_of(o, (Odr_fun)z_DiagRec, &(*p)->globalDiagnostics,
365 &(*p)->num_globalDiagnostics, 0) || odr_ok(o)) &&
366 odr_implicit_settag (o, ODR_CONTEXT, 3) &&
367 odr_sequence_of(o, (Odr_fun)z_IUTaskPackageRecordStructure,
368 &(*p)->taskPackageRecords,
369 &(*p)->num_taskPackageRecords, 0) &&
370 odr_sequence_end (o);
373 int z_IUUpdateEsRequest (ODR o, Z_IUUpdateEsRequest **p, int opt,
376 if (!odr_sequence_begin (o, p, sizeof(**p), 0))
377 return opt && odr_ok (o);
379 odr_explicit (o, z_IUOriginPartToKeep,
380 &(*p)->toKeep, ODR_CONTEXT, 1, 0) &&
381 odr_explicit (o, z_IUSuppliedRecords,
382 &(*p)->notToKeep, ODR_CONTEXT, 2, 0) &&
383 odr_sequence_end (o);
386 int z_IUUpdateTaskPackage (ODR o, Z_IUUpdateTaskPackage **p, int opt,
389 if (!odr_sequence_begin (o, p, sizeof(**p), 0))
390 return opt && odr_ok (o);
392 odr_explicit (o, z_IUOriginPartToKeep,
393 &(*p)->originPart, ODR_CONTEXT, 1, 0) &&
394 odr_explicit (o, z_IUTargetPart,
395 &(*p)->targetPart, ODR_CONTEXT, 2, 0) &&
396 odr_sequence_end (o);
399 int z_IUUpdate (ODR o, Z_IUUpdate **p, int opt, const char *name)
401 static Odr_arm arm[] = {
402 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IUUpdate_esRequest,
403 (Odr_fun)z_IUUpdateEsRequest, 0},
404 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IUUpdate_taskPackage,
405 (Odr_fun)z_IUUpdateTaskPackage, 0},
406 {-1, -1, -1, -1, 0, 0}
408 if (!odr_initmember(o, p, sizeof(**p)))
409 return opt && odr_ok(o);
410 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
413 return opt && odr_ok(o);