2 * Copyright (c) 1995-1999, Index Data.
3 * See the file LICENSE for details.
4 * Sebastian Hammer, Adam Dickmeiss
7 * Revision 1.9 1999-04-20 09:56:48 adam
8 * Added 'name' paramter to encoder/decoder routines (typedef Odr_fun).
9 * Modified all encoders/decoders to reflect this change.
11 * Revision 1.8 1998/02/11 11:53:32 adam
12 * Changed code so that it compiles as C++.
14 * Revision 1.7 1998/02/10 15:31:46 adam
15 * Implemented date and time structure. Changed the Update Extended
18 * Revision 1.6 1998/01/05 09:04:57 adam
19 * Fixed bugs in encoders/decoders - Not operator (!) missing.
21 * Revision 1.5 1997/04/30 08:52:02 quinn
24 * Revision 1.4 1996/10/10 12:35:12 quinn
25 * Added Update extended service.
27 * Revision 1.3 1995/09/29 17:11:54 quinn
30 * Revision 1.2 1995/09/27 15:02:41 quinn
31 * Modified function heads & prototypes.
33 * Revision 1.1 1995/08/21 09:16:32 quinn
34 * Added Extended services + Item Order
41 int z_TaskPackage(ODR o, Z_TaskPackage **p, int opt, const char *name)
43 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
44 return opt && odr_ok(o);
46 odr_implicit(o, odr_oid, &(*p)->packageType, ODR_CONTEXT, 1, 0) &&
47 odr_implicit(o, z_InternationalString, &(*p)->packageName,
49 odr_implicit(o, z_InternationalString, &(*p)->userId,
51 odr_implicit(o, z_IntUnit, &(*p)->retentionTime, ODR_CONTEXT, 4, 1) &&
52 odr_implicit(o, z_Permissions, &(*p)->permissions,
54 odr_implicit(o, z_InternationalString, &(*p)->description,
56 odr_implicit(o, odr_octetstring, &(*p)->targetReference,
58 odr_implicit(o, odr_generalizedtime, &(*p)->creationDateTime,
60 odr_implicit(o, odr_integer, &(*p)->taskStatus,
62 odr_implicit_settag(o, ODR_CONTEXT, 10) &&
63 (odr_sequence_of(o, (Odr_fun)z_DiagRec, &(*p)->packageDiagnostics,
64 &(*p)->num_packageDiagnostics, 0) || odr_ok(o)) &&
65 odr_implicit(o, z_External, &(*p)->taskSpecificParameters,
66 ODR_CONTEXT, 11, 0) &&
70 /* ----------------------- ITEM ORDER --------------------- */
72 int z_IOTargetPart(ODR o, Z_IOTargetPart **p, int opt, const char *name)
74 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
75 return opt && odr_ok(o);
77 odr_implicit(o, z_External, &(*p)->itemRequest, ODR_CONTEXT, 1, 1) &&
78 odr_implicit(o, z_External, &(*p)->statusOrErrorReport, ODR_CONTEXT,
80 odr_implicit(o, odr_integer, &(*p)->auxiliaryStatus, ODR_CONTEXT,
85 int z_IOResultSetItem(ODR o, Z_IOResultSetItem **p, int opt, const char *name)
87 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
88 return opt && odr_ok(o);
90 odr_implicit(o, z_InternationalString, &(*p)->resultSetId, ODR_CONTEXT,
92 odr_implicit(o, odr_integer, &(*p)->item, ODR_CONTEXT, 2, 1) &&
96 int z_IOOriginPartNotToKeep(ODR o, Z_IOOriginPartNotToKeep **p, int opt,
99 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
100 return opt && odr_ok(o);
102 odr_implicit(o, z_IOResultSetItem, &(*p)->resultSetItem, ODR_CONTEXT,
104 odr_implicit(o, z_External, &(*p)->itemRequest, ODR_CONTEXT, 2, 1) &&
108 int z_IOContact(ODR o, Z_IOContact **p, int opt, const char *name)
110 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
111 return opt && odr_ok(o);
113 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
115 odr_implicit(o, z_InternationalString, &(*p)->phone, ODR_CONTEXT,
117 odr_implicit(o, z_InternationalString, &(*p)->email, ODR_CONTEXT,
122 int z_IOCreditCardInfo(ODR o, Z_IOCreditCardInfo **p, int opt,
125 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
126 return opt && odr_ok(o);
128 odr_implicit(o, z_InternationalString, &(*p)->nameOnCard, ODR_CONTEXT,
130 odr_implicit(o, z_InternationalString, &(*p)->expirationDate,
131 ODR_CONTEXT, 2, 0) &&
132 odr_implicit(o, z_InternationalString, &(*p)->cardNumber, ODR_CONTEXT,
137 int z_IOBilling(ODR o, Z_IOBilling **p, int opt, const char *name)
139 static Odr_arm arm[] =
141 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_IOBilling_billInvoice,
142 (Odr_fun)odr_null, 0},
143 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IOBilling_prepay,
144 (Odr_fun)odr_null, 0},
145 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IOBilling_depositAccount,
146 (Odr_fun)odr_null, 0},
147 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IOBilling_creditCard,
148 (Odr_fun)z_IOCreditCardInfo, 0},
149 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_IOBilling_cardInfoPreviouslySupplied,
150 (Odr_fun)odr_null, 0},
151 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_IOBilling_privateKnown,
152 (Odr_fun)odr_null, 0},
153 {ODR_IMPLICIT, ODR_CONTEXT, 6, Z_IOBilling_privateNotKnown,
154 (Odr_fun)z_External, 0},
155 {-1, -1, -1, -1, 0, 0}
158 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
159 return opt && odr_ok(o);
161 odr_constructed_begin(o, &(*p)->paymentMethod,
162 ODR_CONTEXT, 1, 0) &&
163 odr_choice(o, arm, &(*p)->paymentMethod, &(*p)->which, 0) &&
164 odr_constructed_end(o) &&
165 odr_implicit(o, z_InternationalString, &(*p)->customerReference,
166 ODR_CONTEXT, 2, 1) &&
167 odr_implicit(o, z_InternationalString, &(*p)->customerPONumber,
168 ODR_CONTEXT, 3, 1) &&
172 int z_IOOriginPartToKeep(ODR o, Z_IOOriginPartToKeep **p, int opt,
175 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
176 return opt && odr_ok(o);
178 odr_implicit(o, z_External, &(*p)->supplDescription,
179 ODR_CONTEXT, 1, 1) &&
180 odr_implicit(o, z_IOContact, &(*p)->contact, ODR_CONTEXT, 2, 1) &&
181 odr_implicit(o, z_IOBilling, &(*p)->addlBilling,
182 ODR_CONTEXT, 3, 1) &&
186 int z_IORequest(ODR o, Z_IORequest **p, int opt, const char *name)
188 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
189 return opt && odr_ok(o);
191 odr_implicit(o, z_IOOriginPartToKeep, &(*p)->toKeep,
192 ODR_CONTEXT, 1, 1) &&
193 odr_implicit(o, z_IOOriginPartNotToKeep, &(*p)->notToKeep,
194 ODR_CONTEXT, 2, 0) &&
198 int z_IOTaskPackage(ODR o, Z_IOTaskPackage **p, int opt, const char *name)
200 if (!odr_sequence_begin(o, p, sizeof(**p), 0))
201 return opt && odr_ok(o);
203 odr_implicit(o, z_IOOriginPartToKeep, &(*p)->originPart,
204 ODR_CONTEXT, 1, 1) &&
205 odr_implicit(o, z_IOTargetPart, &(*p)->targetPart,
206 ODR_CONTEXT, 2, 0) &&
210 int z_ItemOrder(ODR o, Z_ItemOrder **p, int opt, const char *name)
212 static Odr_arm arm[] =
214 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ItemOrder_esRequest,
215 (Odr_fun)z_IORequest, 0},
216 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ItemOrder_taskPackage,
217 (Odr_fun)z_IOTaskPackage, 0},
218 {-1, -1, -1, -1, 0, 0}
221 if (o->direction == ODR_DECODE)
222 *p = (Z_ItemOrder *)odr_malloc(o, sizeof(**p));
225 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
228 return opt && odr_ok(o);
231 /* ----------------------- ITEM UPDATE -------------------- */
233 int z_IUSuppliedRecordsId (ODR o, Z_IUSuppliedRecordsId **p, int opt,
236 static Odr_arm arm[] = {
237 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IUSuppliedRecordsId_timeStamp,
238 odr_generalizedtime, 0},
239 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IUSuppliedRecordsId_versionNumber,
240 z_InternationalString, 0},
241 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IUSuppliedRecordsId_previousVersion,
242 (Odr_fun)odr_external, 0},
243 {-1, -1, -1, -1, 0, 0}
245 if (!odr_initmember(o, p, sizeof(**p)))
246 return opt && odr_ok(o);
247 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
250 return opt && odr_ok(o);
253 int z_IUCorrelationInfo (ODR o, Z_IUCorrelationInfo **p, int opt,
256 if (!odr_sequence_begin (o, p, sizeof(**p), 0))
257 return opt && odr_ok (o);
259 odr_implicit (o, z_InternationalString,
260 &(*p)->note, ODR_CONTEXT, 1, 1) &&
261 odr_implicit (o, odr_integer,
262 &(*p)->id, ODR_CONTEXT, 2, 1) &&
263 odr_sequence_end (o);
266 int z_IUSuppliedRecords_elem (ODR o, Z_IUSuppliedRecords_elem **p, int opt,
269 static Odr_arm arm[] = {
270 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IUSuppliedRecords_number,
271 (Odr_fun)odr_integer, 0},
272 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IUSuppliedRecords_string,
273 (Odr_fun)z_InternationalString, 0},
274 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IUSuppliedRecords_opaque,
275 (Odr_fun)odr_octetstring, 0},
276 {-1, -1, -1, -1, 0, 0}
278 if (!odr_sequence_begin (o, p, sizeof(**p), 0))
279 return opt && odr_ok (o);
281 ((odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 1, 0) &&
282 odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) &&
283 odr_constructed_end (o)) || odr_ok(o)) &&
284 odr_explicit (o, z_IUSuppliedRecordsId,
285 &(*p)->supplementalId, ODR_CONTEXT, 2, 1) &&
286 odr_implicit (o, z_IUCorrelationInfo,
287 &(*p)->correlationInfo, ODR_CONTEXT, 3, 1) &&
288 odr_implicit (o, odr_external,
289 &(*p)->record, ODR_CONTEXT, 4, 0) &&
290 odr_sequence_end (o);
293 int z_IUSuppliedRecords (ODR o, Z_IUSuppliedRecords **p, int opt,
296 if (!odr_initmember (o, p, sizeof(**p)))
297 return opt && odr_ok(o);
298 if (odr_sequence_of (o, (Odr_fun)z_IUSuppliedRecords_elem, &(*p)->elements,
302 return opt && odr_ok(o);
305 int z_IUTaskPackageRecordStructure (ODR o, Z_IUTaskPackageRecordStructure **p,
306 int opt, const char *name)
308 static Odr_arm arm[] = {
309 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IUTaskPackageRecordStructure_record,
310 (Odr_fun)odr_external, 0},
311 {ODR_EXPLICIT, ODR_CONTEXT, 2,
312 Z_IUTaskPackageRecordStructure_surrogateDiagnostics,
313 (Odr_fun)z_DiagRecs, 0},
314 {-1, -1, -1, -1, 0, 0}
316 if (!odr_sequence_begin (o, p, sizeof(**p), 0))
317 return opt && odr_ok (o);
319 ((odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 1, 0) &&
320 odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) &&
321 odr_constructed_end (o)) || odr_ok(o)) &&
322 odr_implicit (o, z_IUCorrelationInfo,
323 &(*p)->correlationInfo, ODR_CONTEXT, 2, 1) &&
324 odr_implicit (o, odr_integer,
325 &(*p)->recordStatus, ODR_CONTEXT, 3, 0) &&
326 odr_implicit (o, z_DiagRecs,
327 &(*p)->supplementalDiagnostics, ODR_CONTEXT, 4, 1) &&
328 odr_sequence_end (o);
331 int z_IUOriginPartToKeep (ODR o, Z_IUOriginPartToKeep **p, int opt,
334 if (!odr_sequence_begin (o, p, sizeof(**p), 0))
335 return opt && odr_ok (o);
337 odr_implicit (o, odr_integer,
338 &(*p)->action, ODR_CONTEXT, 1, 0) &&
339 odr_implicit (o, z_InternationalString,
340 &(*p)->databaseName, ODR_CONTEXT, 2, 0) &&
341 odr_implicit (o, odr_oid,
342 &(*p)->schema, ODR_CONTEXT, 3, 1) &&
343 odr_implicit (o, z_InternationalString,
344 &(*p)->elementSetName, ODR_CONTEXT, 4, 1) &&
345 odr_implicit (o, odr_external,
346 &(*p)->actionQualifier, ODR_CONTEXT, 5, 1) &&
347 odr_sequence_end (o);
350 int z_IUTargetPart (ODR o, Z_IUTargetPart **p, int opt, const char *name)
352 if (!odr_sequence_begin (o, p, sizeof(**p), 0))
353 return opt && odr_ok (o);
355 odr_implicit (o, odr_integer,
356 &(*p)->updateStatus, ODR_CONTEXT, 1, 0) &&
357 odr_implicit_settag (o, ODR_CONTEXT, 2) &&
358 (odr_sequence_of(o, (Odr_fun)z_DiagRec, &(*p)->globalDiagnostics,
359 &(*p)->num_globalDiagnostics, 0) || odr_ok(o)) &&
360 odr_implicit_settag (o, ODR_CONTEXT, 3) &&
361 odr_sequence_of(o, (Odr_fun)z_IUTaskPackageRecordStructure,
362 &(*p)->taskPackageRecords,
363 &(*p)->num_taskPackageRecords, 0) &&
364 odr_sequence_end (o);
367 int z_IUUpdateEsRequest (ODR o, Z_IUUpdateEsRequest **p, int opt,
370 if (!odr_sequence_begin (o, p, sizeof(**p), 0))
371 return opt && odr_ok (o);
373 odr_explicit (o, z_IUOriginPartToKeep,
374 &(*p)->toKeep, ODR_CONTEXT, 1, 0) &&
375 odr_explicit (o, z_IUSuppliedRecords,
376 &(*p)->notToKeep, ODR_CONTEXT, 2, 0) &&
377 odr_sequence_end (o);
380 int z_IUUpdateTaskPackage (ODR o, Z_IUUpdateTaskPackage **p, int opt,
383 if (!odr_sequence_begin (o, p, sizeof(**p), 0))
384 return opt && odr_ok (o);
386 odr_explicit (o, z_IUOriginPartToKeep,
387 &(*p)->originPart, ODR_CONTEXT, 1, 0) &&
388 odr_explicit (o, z_IUTargetPart,
389 &(*p)->targetPart, ODR_CONTEXT, 2, 0) &&
390 odr_sequence_end (o);
393 int z_IUUpdate (ODR o, Z_IUUpdate **p, int opt, const char *name)
395 static Odr_arm arm[] = {
396 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IUUpdate_esRequest,
397 (Odr_fun)z_IUUpdateEsRequest, 0},
398 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IUUpdate_taskPackage,
399 (Odr_fun)z_IUUpdateTaskPackage, 0},
400 {-1, -1, -1, -1, 0, 0}
402 if (!odr_initmember(o, p, sizeof(**p)))
403 return opt && odr_ok(o);
404 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
407 return opt && odr_ok(o);