2 * Copyright (c) 1995-1998, Index Data.
3 * See the file LICENSE for details.
4 * Sebastian Hammer, Adam Dickmeiss
7 * Revision 1.7 1998-02-10 15:31:46 adam
8 * Implemented date and time structure. Changed the Update Extended
11 * Revision 1.6 1998/01/05 09:04:57 adam
12 * Fixed bugs in encoders/decoders - Not operator (!) missing.
14 * Revision 1.5 1997/04/30 08:52:02 quinn
17 * Revision 1.4 1996/10/10 12:35:12 quinn
18 * Added Update extended service.
20 * Revision 1.3 1995/09/29 17:11:54 quinn
23 * Revision 1.2 1995/09/27 15:02:41 quinn
24 * Modified function heads & prototypes.
26 * Revision 1.1 1995/08/21 09:16:32 quinn
27 * Added Extended services + Item Order
34 int z_TaskPackage(ODR o, Z_TaskPackage **p, int opt)
36 if (!odr_sequence_begin(o, p, sizeof(**p)))
37 return opt && odr_ok(o);
39 odr_implicit(o, odr_oid, &(*p)->packageType, ODR_CONTEXT, 1, 0) &&
40 odr_implicit(o, z_InternationalString, &(*p)->packageName, ODR_CONTEXT,
42 odr_implicit(o, z_InternationalString, &(*p)->userId, ODR_CONTEXT,
44 odr_implicit(o, z_IntUnit, &(*p)->retentionTime, ODR_CONTEXT, 4, 1) &&
45 odr_implicit(o, z_Permissions, &(*p)->permissions, ODR_CONTEXT, 5, 1) &&
46 odr_implicit(o, z_InternationalString, &(*p)->description, ODR_CONTEXT,
48 odr_implicit(o, odr_octetstring, &(*p)->targetReference, ODR_CONTEXT,
50 odr_implicit(o, odr_generalizedtime, &(*p)->creationDateTime,
53 odr_implicit(o, odr_integer, &(*p)->taskStatus, ODR_CONTEXT, 9, 0) &&
54 odr_implicit_settag(o, ODR_CONTEXT, 10) &&
55 (odr_sequence_of(o, z_DiagRec, &(*p)->packageDiagnostics,
56 &(*p)->num_packageDiagnostics) || odr_ok(o)) &&
57 odr_implicit(o, z_External, &(*p)->taskSpecificParameters, ODR_CONTEXT,
62 /* ----------------------- ITEM ORDER --------------------- */
64 int z_IOTargetPart(ODR o, Z_IOTargetPart **p, int opt)
66 if (!odr_sequence_begin(o, p, sizeof(**p)))
67 return opt && odr_ok(o);
69 odr_implicit(o, z_External, &(*p)->itemRequest, ODR_CONTEXT, 1, 1) &&
70 odr_implicit(o, z_External, &(*p)->statusOrErrorReport, ODR_CONTEXT,
72 odr_implicit(o, odr_integer, &(*p)->auxiliaryStatus, ODR_CONTEXT,
77 int z_IOResultSetItem(ODR o, Z_IOResultSetItem **p, int opt)
79 if (!odr_sequence_begin(o, p, sizeof(**p)))
80 return opt && odr_ok(o);
82 odr_implicit(o, z_InternationalString, &(*p)->resultSetId, ODR_CONTEXT,
84 odr_implicit(o, odr_integer, &(*p)->item, ODR_CONTEXT, 2, 1) &&
88 int z_IOOriginPartNotToKeep(ODR o, Z_IOOriginPartNotToKeep **p, int opt)
90 if (!odr_sequence_begin(o, p, sizeof(**p)))
91 return opt && odr_ok(o);
93 odr_implicit(o, z_IOResultSetItem, &(*p)->resultSetItem, ODR_CONTEXT,
95 odr_implicit(o, z_External, &(*p)->itemRequest, ODR_CONTEXT, 2, 1) &&
99 int z_IOContact(ODR o, Z_IOContact **p, int opt)
101 if (!odr_sequence_begin(o, p, sizeof(**p)))
102 return opt && odr_ok(o);
104 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
106 odr_implicit(o, z_InternationalString, &(*p)->phone, ODR_CONTEXT,
108 odr_implicit(o, z_InternationalString, &(*p)->email, ODR_CONTEXT,
113 int z_IOCreditCardInfo(ODR o, Z_IOCreditCardInfo **p, int opt)
115 if (!odr_sequence_begin(o, p, sizeof(**p)))
116 return opt && odr_ok(o);
118 odr_implicit(o, z_InternationalString, &(*p)->nameOnCard, ODR_CONTEXT,
120 odr_implicit(o, z_InternationalString, &(*p)->expirationDate,
121 ODR_CONTEXT, 2, 0) &&
122 odr_implicit(o, z_InternationalString, &(*p)->cardNumber, ODR_CONTEXT,
127 int z_IOBilling(ODR o, Z_IOBilling **p, int opt)
129 static Odr_arm arm[] =
131 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_IOBilling_billInvoice, odr_null},
132 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IOBilling_prepay, odr_null},
133 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IOBilling_depositAccount, odr_null},
134 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IOBilling_creditCard,
136 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_IOBilling_cardInfoPreviouslySupplied,
138 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_IOBilling_privateKnown, odr_null},
139 {ODR_IMPLICIT, ODR_CONTEXT, 6, Z_IOBilling_privateNotKnown,
144 if (!odr_sequence_begin(o, p, sizeof(**p)))
145 return opt && odr_ok(o);
147 odr_constructed_begin(o, &(*p)->paymentMethod,
149 odr_choice(o, arm, &(*p)->paymentMethod, &(*p)->which) &&
150 odr_constructed_end(o) &&
151 odr_implicit(o, z_InternationalString, &(*p)->customerReference,
152 ODR_CONTEXT, 2, 1) &&
153 odr_implicit(o, z_InternationalString, &(*p)->customerPONumber,
154 ODR_CONTEXT, 3, 1) &&
158 int z_IOOriginPartToKeep(ODR o, Z_IOOriginPartToKeep **p, int opt)
160 if (!odr_sequence_begin(o, p, sizeof(**p)))
161 return opt && odr_ok(o);
163 odr_implicit(o, z_External, &(*p)->supplDescription, ODR_CONTEXT,
165 odr_implicit(o, z_IOContact, &(*p)->contact, ODR_CONTEXT, 2, 1) &&
166 odr_implicit(o, z_IOBilling, &(*p)->addlBilling, ODR_CONTEXT,
171 int z_IORequest(ODR o, Z_IORequest **p, int opt)
173 if (!odr_sequence_begin(o, p, sizeof(**p)))
174 return opt && odr_ok(o);
176 odr_implicit(o, z_IOOriginPartToKeep, &(*p)->toKeep, ODR_CONTEXT,
178 odr_implicit(o, z_IOOriginPartNotToKeep, &(*p)->notToKeep, ODR_CONTEXT,
183 int z_IOTaskPackage(ODR o, Z_IOTaskPackage **p, int opt)
185 if (!odr_sequence_begin(o, p, sizeof(**p)))
186 return opt && odr_ok(o);
188 odr_implicit(o, z_IOOriginPartToKeep, &(*p)->originPart, ODR_CONTEXT,
190 odr_implicit(o, z_IOTargetPart, &(*p)->targetPart, ODR_CONTEXT, 2, 0) &&
194 int z_ItemOrder(ODR o, Z_ItemOrder **p, int opt)
196 static Odr_arm arm[] =
198 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ItemOrder_esRequest, z_IORequest},
199 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ItemOrder_taskPackage,
204 if (o->direction == ODR_DECODE)
205 *p = odr_malloc(o, sizeof(**p));
208 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
211 return opt && odr_ok(o);
214 /* ----------------------- ITEM UPDATE -------------------- */
216 int z_IUSuppliedRecordsId (ODR o, Z_IUSuppliedRecordsId **p, int opt)
218 static Odr_arm arm[] = {
219 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IUSuppliedRecordsId_timeStamp,
220 odr_generalizedtime},
221 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IUSuppliedRecordsId_versionNumber,
222 z_InternationalString},
223 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IUSuppliedRecordsId_previousVersion,
227 if (!odr_initmember(o, p, sizeof(**p)))
228 return opt && odr_ok(o);
229 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
232 return opt && odr_ok(o);
235 int z_IUCorrelationInfo (ODR o, Z_IUCorrelationInfo **p, int opt)
237 if (!odr_sequence_begin (o, p, sizeof(**p)))
238 return opt && odr_ok (o);
240 odr_implicit (o, z_InternationalString,
241 &(*p)->note, ODR_CONTEXT, 1, 1) &&
242 odr_implicit (o, odr_integer,
243 &(*p)->id, ODR_CONTEXT, 2, 1) &&
244 odr_sequence_end (o);
247 int z_IUSuppliedRecords_elem (ODR o, Z_IUSuppliedRecords_elem **p, int opt)
249 static Odr_arm arm[] = {
250 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IUSuppliedRecords_number,
252 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IUSuppliedRecords_string,
253 z_InternationalString},
254 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IUSuppliedRecords_opaque,
258 if (!odr_sequence_begin (o, p, sizeof(**p)))
259 return opt && odr_ok (o);
261 ((odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 1) &&
262 odr_choice (o, arm, &(*p)->u, &(*p)->which) &&
263 odr_constructed_end (o)) || odr_ok(o)) &&
264 odr_explicit (o, z_IUSuppliedRecordsId,
265 &(*p)->supplementalId, ODR_CONTEXT, 2, 1) &&
266 odr_implicit (o, z_IUCorrelationInfo,
267 &(*p)->correlationInfo, ODR_CONTEXT, 3, 1) &&
268 odr_implicit (o, odr_external,
269 &(*p)->record, ODR_CONTEXT, 4, 0) &&
270 odr_sequence_end (o);
273 int z_IUSuppliedRecords (ODR o, Z_IUSuppliedRecords **p, int opt)
275 if (!odr_initmember (o, p, sizeof(**p)))
276 return opt && odr_ok(o);
277 if (odr_sequence_of (o, z_IUSuppliedRecords_elem, &(*p)->elements,
281 return opt && odr_ok(o);
284 int z_IUTaskPackageRecordStructure (ODR o, Z_IUTaskPackageRecordStructure **p,
287 static Odr_arm arm[] = {
288 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IUTaskPackageRecordStructure_record,
290 {ODR_EXPLICIT, ODR_CONTEXT, 2, Z_IUTaskPackageRecordStructure_surrogateDiagnostics,
294 if (!odr_sequence_begin (o, p, sizeof(**p)))
295 return opt && odr_ok (o);
297 ((odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 1) &&
298 odr_choice (o, arm, &(*p)->u, &(*p)->which) &&
299 odr_constructed_end (o)) || odr_ok(o)) &&
300 odr_implicit (o, z_IUCorrelationInfo,
301 &(*p)->correlationInfo, ODR_CONTEXT, 2, 1) &&
302 odr_implicit (o, odr_integer,
303 &(*p)->recordStatus, ODR_CONTEXT, 3, 0) &&
304 odr_implicit (o, z_DiagRecs,
305 &(*p)->supplementalDiagnostics, ODR_CONTEXT, 4, 1) &&
306 odr_sequence_end (o);
309 int z_IUOriginPartToKeep (ODR o, Z_IUOriginPartToKeep **p, int opt)
311 if (!odr_sequence_begin (o, p, sizeof(**p)))
312 return opt && odr_ok (o);
314 odr_implicit (o, odr_integer,
315 &(*p)->action, ODR_CONTEXT, 1, 0) &&
316 odr_implicit (o, z_InternationalString,
317 &(*p)->databaseName, ODR_CONTEXT, 2, 0) &&
318 odr_implicit (o, odr_oid,
319 &(*p)->schema, ODR_CONTEXT, 3, 1) &&
320 odr_implicit (o, z_InternationalString,
321 &(*p)->elementSetName, ODR_CONTEXT, 4, 1) &&
322 odr_implicit (o, odr_external,
323 &(*p)->actionQualifier, ODR_CONTEXT, 5, 1) &&
324 odr_sequence_end (o);
327 int z_IUTargetPart (ODR o, Z_IUTargetPart **p, int opt)
329 if (!odr_sequence_begin (o, p, sizeof(**p)))
330 return opt && odr_ok (o);
332 odr_implicit (o, odr_integer,
333 &(*p)->updateStatus, ODR_CONTEXT, 1, 0) &&
334 odr_implicit_settag (o, ODR_CONTEXT, 2) &&
335 (odr_sequence_of(o, z_DiagRec, &(*p)->globalDiagnostics,
336 &(*p)->num_globalDiagnostics) || odr_ok(o)) &&
337 odr_implicit_settag (o, ODR_CONTEXT, 3) &&
338 odr_sequence_of(o, z_IUTaskPackageRecordStructure, &(*p)->taskPackageRecords,
339 &(*p)->num_taskPackageRecords) &&
340 odr_sequence_end (o);
343 int z_IUUpdateEsRequest (ODR o, Z_IUUpdateEsRequest **p, int opt)
345 if (!odr_sequence_begin (o, p, sizeof(**p)))
346 return opt && odr_ok (o);
348 odr_explicit (o, z_IUOriginPartToKeep,
349 &(*p)->toKeep, ODR_CONTEXT, 1, 0) &&
350 odr_explicit (o, z_IUSuppliedRecords,
351 &(*p)->notToKeep, ODR_CONTEXT, 2, 0) &&
352 odr_sequence_end (o);
355 int z_IUUpdateTaskPackage (ODR o, Z_IUUpdateTaskPackage **p, int opt)
357 if (!odr_sequence_begin (o, p, sizeof(**p)))
358 return opt && odr_ok (o);
360 odr_explicit (o, z_IUOriginPartToKeep,
361 &(*p)->originPart, ODR_CONTEXT, 1, 0) &&
362 odr_explicit (o, z_IUTargetPart,
363 &(*p)->targetPart, ODR_CONTEXT, 2, 0) &&
364 odr_sequence_end (o);
367 int z_IUUpdate (ODR o, Z_IUUpdate **p, int opt)
369 static Odr_arm arm[] = {
370 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IUUpdate_esRequest,
371 z_IUUpdateEsRequest},
372 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IUUpdate_taskPackage,
373 z_IUUpdateTaskPackage},
376 if (!odr_initmember(o, p, sizeof(**p)))
377 return opt && odr_ok(o);
378 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
381 return opt && odr_ok(o);