2 * Copyright (c) 1995-1999, Index Data.
3 * See the file LICENSE for details.
4 * Sebastian Hammer, Adam Dickmeiss
7 * Revision 1.10 1999-05-26 13:49:12 adam
8 * DB Update implemented in client (very basic).
10 * Revision 1.9 1999/04/20 09:56:48 adam
11 * Added 'name' paramter to encoder/decoder routines (typedef Odr_fun).
12 * Modified all encoders/decoders to reflect this change.
14 * Revision 1.8 1998/02/11 11:53:32 adam
15 * Changed code so that it compiles as C++.
17 * Revision 1.7 1998/02/10 15:31:46 adam
18 * Implemented date and time structure. Changed the Update Extended
21 * Revision 1.6 1998/01/05 09:04:57 adam
22 * Fixed bugs in encoders/decoders - Not operator (!) missing.
24 * Revision 1.5 1997/04/30 08:52:02 quinn
27 * Revision 1.4 1996/10/10 12:35:12 quinn
28 * Added Update extended service.
30 * Revision 1.3 1995/09/29 17:11:54 quinn
33 * Revision 1.2 1995/09/27 15:02:41 quinn
34 * Modified function heads & prototypes.
36 * Revision 1.1 1995/08/21 09:16:32 quinn
37 * Added Extended services + Item Order
44 int z_TaskPackage(ODR o, Z_TaskPackage **p, int opt, const char *name)
46 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
47 return opt && odr_ok(o);
49 odr_implicit(o, odr_oid, &(*p)->packageType, ODR_CONTEXT, 1, 0) &&
50 odr_implicit(o, z_InternationalString, &(*p)->packageName,
52 odr_implicit(o, z_InternationalString, &(*p)->userId,
54 odr_implicit(o, z_IntUnit, &(*p)->retentionTime, ODR_CONTEXT, 4, 1) &&
55 odr_implicit(o, z_Permissions, &(*p)->permissions,
57 odr_implicit(o, z_InternationalString, &(*p)->description,
59 odr_implicit(o, odr_octetstring, &(*p)->targetReference,
61 odr_implicit(o, odr_generalizedtime, &(*p)->creationDateTime,
63 odr_implicit(o, odr_integer, &(*p)->taskStatus,
65 odr_implicit_settag(o, ODR_CONTEXT, 10) &&
66 (odr_sequence_of(o, (Odr_fun)z_DiagRec, &(*p)->packageDiagnostics,
67 &(*p)->num_packageDiagnostics, 0) || odr_ok(o)) &&
68 odr_implicit(o, z_External, &(*p)->taskSpecificParameters,
69 ODR_CONTEXT, 11, 0) &&
73 /* ----------------------- ITEM ORDER --------------------- */
75 int z_IOTargetPart(ODR o, Z_IOTargetPart **p, int opt, const char *name)
77 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
78 return opt && odr_ok(o);
80 odr_implicit(o, z_External, &(*p)->itemRequest, ODR_CONTEXT, 1, 1) &&
81 odr_implicit(o, z_External, &(*p)->statusOrErrorReport, ODR_CONTEXT,
83 odr_implicit(o, odr_integer, &(*p)->auxiliaryStatus, ODR_CONTEXT,
88 int z_IOResultSetItem(ODR o, Z_IOResultSetItem **p, int opt, const char *name)
90 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
91 return opt && odr_ok(o);
93 odr_implicit(o, z_InternationalString, &(*p)->resultSetId, ODR_CONTEXT,
95 odr_implicit(o, odr_integer, &(*p)->item, ODR_CONTEXT, 2, 1) &&
99 int z_IOOriginPartNotToKeep(ODR o, Z_IOOriginPartNotToKeep **p, int opt,
102 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
103 return opt && odr_ok(o);
105 odr_implicit(o, z_IOResultSetItem, &(*p)->resultSetItem, ODR_CONTEXT,
107 odr_implicit(o, z_External, &(*p)->itemRequest, ODR_CONTEXT, 2, 1) &&
111 int z_IOContact(ODR o, Z_IOContact **p, int opt, const char *name)
113 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
114 return opt && odr_ok(o);
116 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
118 odr_implicit(o, z_InternationalString, &(*p)->phone, ODR_CONTEXT,
120 odr_implicit(o, z_InternationalString, &(*p)->email, ODR_CONTEXT,
125 int z_IOCreditCardInfo(ODR o, Z_IOCreditCardInfo **p, int opt,
128 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
129 return opt && odr_ok(o);
131 odr_implicit(o, z_InternationalString, &(*p)->nameOnCard, ODR_CONTEXT,
133 odr_implicit(o, z_InternationalString, &(*p)->expirationDate,
134 ODR_CONTEXT, 2, 0) &&
135 odr_implicit(o, z_InternationalString, &(*p)->cardNumber, ODR_CONTEXT,
140 int z_IOBilling(ODR o, Z_IOBilling **p, int opt, const char *name)
142 static Odr_arm arm[] =
144 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_IOBilling_billInvoice,
145 (Odr_fun)odr_null, 0},
146 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IOBilling_prepay,
147 (Odr_fun)odr_null, 0},
148 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IOBilling_depositAccount,
149 (Odr_fun)odr_null, 0},
150 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IOBilling_creditCard,
151 (Odr_fun)z_IOCreditCardInfo, 0},
152 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_IOBilling_cardInfoPreviouslySupplied,
153 (Odr_fun)odr_null, 0},
154 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_IOBilling_privateKnown,
155 (Odr_fun)odr_null, 0},
156 {ODR_IMPLICIT, ODR_CONTEXT, 6, Z_IOBilling_privateNotKnown,
157 (Odr_fun)z_External, 0},
158 {-1, -1, -1, -1, 0, 0}
161 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
162 return opt && odr_ok(o);
164 odr_constructed_begin(o, &(*p)->paymentMethod,
165 ODR_CONTEXT, 1, 0) &&
166 odr_choice(o, arm, &(*p)->paymentMethod, &(*p)->which, 0) &&
167 odr_constructed_end(o) &&
168 odr_implicit(o, z_InternationalString, &(*p)->customerReference,
169 ODR_CONTEXT, 2, 1) &&
170 odr_implicit(o, z_InternationalString, &(*p)->customerPONumber,
171 ODR_CONTEXT, 3, 1) &&
175 int z_IOOriginPartToKeep(ODR o, Z_IOOriginPartToKeep **p, int opt,
178 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
179 return opt && odr_ok(o);
181 odr_implicit(o, z_External, &(*p)->supplDescription,
182 ODR_CONTEXT, 1, 1) &&
183 odr_implicit(o, z_IOContact, &(*p)->contact, ODR_CONTEXT, 2, 1) &&
184 odr_implicit(o, z_IOBilling, &(*p)->addlBilling,
185 ODR_CONTEXT, 3, 1) &&
189 int z_IORequest(ODR o, Z_IORequest **p, int opt, const char *name)
191 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
192 return opt && odr_ok(o);
194 odr_implicit(o, z_IOOriginPartToKeep, &(*p)->toKeep,
195 ODR_CONTEXT, 1, 1) &&
196 odr_implicit(o, z_IOOriginPartNotToKeep, &(*p)->notToKeep,
197 ODR_CONTEXT, 2, 0) &&
201 int z_IOTaskPackage(ODR o, Z_IOTaskPackage **p, int opt, const char *name)
203 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
204 return opt && odr_ok(o);
206 odr_implicit(o, z_IOOriginPartToKeep, &(*p)->originPart,
207 ODR_CONTEXT, 1, 1) &&
208 odr_implicit(o, z_IOTargetPart, &(*p)->targetPart,
209 ODR_CONTEXT, 2, 0) &&
213 int z_ItemOrder(ODR o, Z_ItemOrder **p, int opt, const char *name)
215 static Odr_arm arm[] =
217 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ItemOrder_esRequest,
218 (Odr_fun)z_IORequest, 0},
219 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ItemOrder_taskPackage,
220 (Odr_fun)z_IOTaskPackage, 0},
221 {-1, -1, -1, -1, 0, 0}
224 if (o->direction == ODR_DECODE)
225 *p = (Z_ItemOrder *)odr_malloc(o, sizeof(**p));
228 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
231 return opt && odr_ok(o);
234 /* ----------------------- ITEM UPDATE -------------------- */
236 int z_IUSuppliedRecordsId (ODR o, Z_IUSuppliedRecordsId **p, int opt,
239 static Odr_arm arm[] = {
240 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IUSuppliedRecordsId_timeStamp,
241 odr_generalizedtime, 0},
242 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IUSuppliedRecordsId_versionNumber,
243 z_InternationalString, 0},
244 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IUSuppliedRecordsId_previousVersion,
245 (Odr_fun)odr_external, 0},
246 {-1, -1, -1, -1, 0, 0}
248 if (!odr_initmember(o, p, sizeof(**p)))
249 return opt && odr_ok(o);
250 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
253 return opt && odr_ok(o);
256 int z_IUCorrelationInfo (ODR o, Z_IUCorrelationInfo **p, int opt,
259 if (!odr_sequence_begin (o, p, sizeof(**p), 0))
260 return opt && odr_ok (o);
262 odr_implicit (o, z_InternationalString,
263 &(*p)->note, ODR_CONTEXT, 1, 1) &&
264 odr_implicit (o, odr_integer,
265 &(*p)->id, ODR_CONTEXT, 2, 1) &&
266 odr_sequence_end (o);
269 int z_IUSuppliedRecords_elem (ODR o, Z_IUSuppliedRecords_elem **p, int opt,
272 static Odr_arm arm[] = {
273 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IUSuppliedRecords_number,
274 (Odr_fun)odr_integer, 0},
275 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IUSuppliedRecords_string,
276 (Odr_fun)z_InternationalString, 0},
277 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IUSuppliedRecords_opaque,
278 (Odr_fun)odr_octetstring, 0},
279 {-1, -1, -1, -1, 0, 0}
281 if (!odr_sequence_begin (o, p, sizeof(**p), 0))
282 return opt && odr_ok (o);
284 ((odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 1, 0) &&
285 odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) &&
286 odr_constructed_end (o)) || odr_ok(o)) &&
287 odr_explicit (o, z_IUSuppliedRecordsId,
288 &(*p)->supplementalId, ODR_CONTEXT, 2, 1) &&
289 odr_implicit (o, z_IUCorrelationInfo,
290 &(*p)->correlationInfo, ODR_CONTEXT, 3, 1) &&
291 odr_implicit (o, z_External,
292 &(*p)->record, ODR_CONTEXT, 4, 0) &&
293 odr_sequence_end (o);
296 int z_IUSuppliedRecords (ODR o, Z_IUSuppliedRecords **p, int opt,
299 if (!odr_initmember (o, p, sizeof(**p)))
300 return opt && odr_ok(o);
301 if (odr_sequence_of (o, (Odr_fun)z_IUSuppliedRecords_elem, &(*p)->elements,
305 return opt && odr_ok(o);
308 int z_IUTaskPackageRecordStructure (ODR o, Z_IUTaskPackageRecordStructure **p,
309 int opt, const char *name)
311 static Odr_arm arm[] = {
312 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IUTaskPackageRecordStructure_record,
313 (Odr_fun)odr_external, 0},
314 {ODR_EXPLICIT, ODR_CONTEXT, 2,
315 Z_IUTaskPackageRecordStructure_surrogateDiagnostics,
316 (Odr_fun)z_DiagRecs, 0},
317 {-1, -1, -1, -1, 0, 0}
319 if (!odr_sequence_begin (o, p, sizeof(**p), 0))
320 return opt && odr_ok (o);
322 ((odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 1, 0) &&
323 odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) &&
324 odr_constructed_end (o)) || odr_ok(o)) &&
325 odr_implicit (o, z_IUCorrelationInfo,
326 &(*p)->correlationInfo, ODR_CONTEXT, 2, 1) &&
327 odr_implicit (o, odr_integer,
328 &(*p)->recordStatus, ODR_CONTEXT, 3, 0) &&
329 odr_implicit (o, z_DiagRecs,
330 &(*p)->supplementalDiagnostics, ODR_CONTEXT, 4, 1) &&
331 odr_sequence_end (o);
334 int z_IUOriginPartToKeep (ODR o, Z_IUOriginPartToKeep **p, int opt,
337 if (!odr_sequence_begin (o, p, sizeof(**p), 0))
338 return opt && odr_ok (o);
340 odr_implicit (o, odr_integer,
341 &(*p)->action, ODR_CONTEXT, 1, 0) &&
342 odr_implicit (o, z_InternationalString,
343 &(*p)->databaseName, ODR_CONTEXT, 2, 0) &&
344 odr_implicit (o, odr_oid,
345 &(*p)->schema, ODR_CONTEXT, 3, 1) &&
346 odr_implicit (o, z_InternationalString,
347 &(*p)->elementSetName, ODR_CONTEXT, 4, 1) &&
348 odr_implicit (o, odr_external,
349 &(*p)->actionQualifier, ODR_CONTEXT, 5, 1) &&
350 odr_sequence_end (o);
353 int z_IUTargetPart (ODR o, Z_IUTargetPart **p, int opt, const char *name)
355 if (!odr_sequence_begin (o, p, sizeof(**p), 0))
356 return opt && odr_ok (o);
358 odr_implicit (o, odr_integer,
359 &(*p)->updateStatus, ODR_CONTEXT, 1, 0) &&
360 odr_implicit_settag (o, ODR_CONTEXT, 2) &&
361 (odr_sequence_of(o, (Odr_fun)z_DiagRec, &(*p)->globalDiagnostics,
362 &(*p)->num_globalDiagnostics, 0) || odr_ok(o)) &&
363 odr_implicit_settag (o, ODR_CONTEXT, 3) &&
364 odr_sequence_of(o, (Odr_fun)z_IUTaskPackageRecordStructure,
365 &(*p)->taskPackageRecords,
366 &(*p)->num_taskPackageRecords, 0) &&
367 odr_sequence_end (o);
370 int z_IUUpdateEsRequest (ODR o, Z_IUUpdateEsRequest **p, int opt,
373 if (!odr_sequence_begin (o, p, sizeof(**p), 0))
374 return opt && odr_ok (o);
376 odr_explicit (o, z_IUOriginPartToKeep,
377 &(*p)->toKeep, ODR_CONTEXT, 1, 0) &&
378 odr_explicit (o, z_IUSuppliedRecords,
379 &(*p)->notToKeep, ODR_CONTEXT, 2, 0) &&
380 odr_sequence_end (o);
383 int z_IUUpdateTaskPackage (ODR o, Z_IUUpdateTaskPackage **p, int opt,
386 if (!odr_sequence_begin (o, p, sizeof(**p), 0))
387 return opt && odr_ok (o);
389 odr_explicit (o, z_IUOriginPartToKeep,
390 &(*p)->originPart, ODR_CONTEXT, 1, 0) &&
391 odr_explicit (o, z_IUTargetPart,
392 &(*p)->targetPart, ODR_CONTEXT, 2, 0) &&
393 odr_sequence_end (o);
396 int z_IUUpdate (ODR o, Z_IUUpdate **p, int opt, const char *name)
398 static Odr_arm arm[] = {
399 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IUUpdate_esRequest,
400 (Odr_fun)z_IUUpdateEsRequest, 0},
401 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IUUpdate_taskPackage,
402 (Odr_fun)z_IUUpdateTaskPackage, 0},
403 {-1, -1, -1, -1, 0, 0}
405 if (!odr_initmember(o, p, sizeof(**p)))
406 return opt && odr_ok(o);
407 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
410 return opt && odr_ok(o);