2 * Copyright (c) 1995-1998, Index Data.
3 * See the file LICENSE for details.
4 * Sebastian Hammer, Adam Dickmeiss
7 * Revision 1.8 1998-02-11 11:53:32 adam
8 * Changed code so that it compiles as C++.
10 * Revision 1.7 1998/02/10 15:31:46 adam
11 * Implemented date and time structure. Changed the Update Extended
14 * Revision 1.6 1998/01/05 09:04:57 adam
15 * Fixed bugs in encoders/decoders - Not operator (!) missing.
17 * Revision 1.5 1997/04/30 08:52:02 quinn
20 * Revision 1.4 1996/10/10 12:35:12 quinn
21 * Added Update extended service.
23 * Revision 1.3 1995/09/29 17:11:54 quinn
26 * Revision 1.2 1995/09/27 15:02:41 quinn
27 * Modified function heads & prototypes.
29 * Revision 1.1 1995/08/21 09:16:32 quinn
30 * Added Extended services + Item Order
37 int z_TaskPackage(ODR o, Z_TaskPackage **p, int opt)
39 if (!odr_sequence_begin(o, p, sizeof(**p)))
40 return opt && odr_ok(o);
42 odr_implicit(o, odr_oid, &(*p)->packageType, ODR_CONTEXT, 1, 0) &&
43 odr_implicit(o, z_InternationalString, &(*p)->packageName, ODR_CONTEXT,
45 odr_implicit(o, z_InternationalString, &(*p)->userId, ODR_CONTEXT,
47 odr_implicit(o, z_IntUnit, &(*p)->retentionTime, ODR_CONTEXT, 4, 1) &&
48 odr_implicit(o, z_Permissions, &(*p)->permissions, ODR_CONTEXT, 5, 1) &&
49 odr_implicit(o, z_InternationalString, &(*p)->description, ODR_CONTEXT,
51 odr_implicit(o, odr_octetstring, &(*p)->targetReference, ODR_CONTEXT,
53 odr_implicit(o, odr_generalizedtime, &(*p)->creationDateTime,
56 odr_implicit(o, odr_integer, &(*p)->taskStatus, ODR_CONTEXT, 9, 0) &&
57 odr_implicit_settag(o, ODR_CONTEXT, 10) &&
58 (odr_sequence_of(o, (Odr_fun)z_DiagRec, &(*p)->packageDiagnostics,
59 &(*p)->num_packageDiagnostics) || odr_ok(o)) &&
60 odr_implicit(o, z_External, &(*p)->taskSpecificParameters, ODR_CONTEXT,
65 /* ----------------------- ITEM ORDER --------------------- */
67 int z_IOTargetPart(ODR o, Z_IOTargetPart **p, int opt)
69 if (!odr_sequence_begin(o, p, sizeof(**p)))
70 return opt && odr_ok(o);
72 odr_implicit(o, z_External, &(*p)->itemRequest, ODR_CONTEXT, 1, 1) &&
73 odr_implicit(o, z_External, &(*p)->statusOrErrorReport, ODR_CONTEXT,
75 odr_implicit(o, odr_integer, &(*p)->auxiliaryStatus, ODR_CONTEXT,
80 int z_IOResultSetItem(ODR o, Z_IOResultSetItem **p, int opt)
82 if (!odr_sequence_begin(o, p, sizeof(**p)))
83 return opt && odr_ok(o);
85 odr_implicit(o, z_InternationalString, &(*p)->resultSetId, ODR_CONTEXT,
87 odr_implicit(o, odr_integer, &(*p)->item, ODR_CONTEXT, 2, 1) &&
91 int z_IOOriginPartNotToKeep(ODR o, Z_IOOriginPartNotToKeep **p, int opt)
93 if (!odr_sequence_begin(o, p, sizeof(**p)))
94 return opt && odr_ok(o);
96 odr_implicit(o, z_IOResultSetItem, &(*p)->resultSetItem, ODR_CONTEXT,
98 odr_implicit(o, z_External, &(*p)->itemRequest, ODR_CONTEXT, 2, 1) &&
102 int z_IOContact(ODR o, Z_IOContact **p, int opt)
104 if (!odr_sequence_begin(o, p, sizeof(**p)))
105 return opt && odr_ok(o);
107 odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
109 odr_implicit(o, z_InternationalString, &(*p)->phone, ODR_CONTEXT,
111 odr_implicit(o, z_InternationalString, &(*p)->email, ODR_CONTEXT,
116 int z_IOCreditCardInfo(ODR o, Z_IOCreditCardInfo **p, int opt)
118 if (!odr_sequence_begin(o, p, sizeof(**p)))
119 return opt && odr_ok(o);
121 odr_implicit(o, z_InternationalString, &(*p)->nameOnCard, ODR_CONTEXT,
123 odr_implicit(o, z_InternationalString, &(*p)->expirationDate,
124 ODR_CONTEXT, 2, 0) &&
125 odr_implicit(o, z_InternationalString, &(*p)->cardNumber, ODR_CONTEXT,
130 int z_IOBilling(ODR o, Z_IOBilling **p, int opt)
132 static Odr_arm arm[] =
134 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_IOBilling_billInvoice, (Odr_fun)odr_null},
135 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IOBilling_prepay, (Odr_fun)odr_null},
136 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IOBilling_depositAccount, (Odr_fun)odr_null},
137 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IOBilling_creditCard,
138 (Odr_fun)z_IOCreditCardInfo},
139 {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_IOBilling_cardInfoPreviouslySupplied,
141 {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_IOBilling_privateKnown, (Odr_fun)odr_null},
142 {ODR_IMPLICIT, ODR_CONTEXT, 6, Z_IOBilling_privateNotKnown,
143 (Odr_fun)z_External},
147 if (!odr_sequence_begin(o, p, sizeof(**p)))
148 return opt && odr_ok(o);
150 odr_constructed_begin(o, &(*p)->paymentMethod,
152 odr_choice(o, arm, &(*p)->paymentMethod, &(*p)->which) &&
153 odr_constructed_end(o) &&
154 odr_implicit(o, z_InternationalString, &(*p)->customerReference,
155 ODR_CONTEXT, 2, 1) &&
156 odr_implicit(o, z_InternationalString, &(*p)->customerPONumber,
157 ODR_CONTEXT, 3, 1) &&
161 int z_IOOriginPartToKeep(ODR o, Z_IOOriginPartToKeep **p, int opt)
163 if (!odr_sequence_begin(o, p, sizeof(**p)))
164 return opt && odr_ok(o);
166 odr_implicit(o, z_External, &(*p)->supplDescription, ODR_CONTEXT,
168 odr_implicit(o, z_IOContact, &(*p)->contact, ODR_CONTEXT, 2, 1) &&
169 odr_implicit(o, z_IOBilling, &(*p)->addlBilling, ODR_CONTEXT,
174 int z_IORequest(ODR o, Z_IORequest **p, int opt)
176 if (!odr_sequence_begin(o, p, sizeof(**p)))
177 return opt && odr_ok(o);
179 odr_implicit(o, z_IOOriginPartToKeep, &(*p)->toKeep, ODR_CONTEXT,
181 odr_implicit(o, z_IOOriginPartNotToKeep, &(*p)->notToKeep, ODR_CONTEXT,
186 int z_IOTaskPackage(ODR o, Z_IOTaskPackage **p, int opt)
188 if (!odr_sequence_begin(o, p, sizeof(**p)))
189 return opt && odr_ok(o);
191 odr_implicit(o, z_IOOriginPartToKeep, &(*p)->originPart, ODR_CONTEXT,
193 odr_implicit(o, z_IOTargetPart, &(*p)->targetPart, ODR_CONTEXT, 2, 0) &&
197 int z_ItemOrder(ODR o, Z_ItemOrder **p, int opt)
199 static Odr_arm arm[] =
201 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ItemOrder_esRequest, (Odr_fun)z_IORequest},
202 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ItemOrder_taskPackage,
203 (Odr_fun)z_IOTaskPackage},
207 if (o->direction == ODR_DECODE)
208 *p = (Z_ItemOrder *)odr_malloc(o, sizeof(**p));
211 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
214 return opt && odr_ok(o);
217 /* ----------------------- ITEM UPDATE -------------------- */
219 int z_IUSuppliedRecordsId (ODR o, Z_IUSuppliedRecordsId **p, int opt)
221 static Odr_arm arm[] = {
222 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IUSuppliedRecordsId_timeStamp,
223 odr_generalizedtime},
224 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IUSuppliedRecordsId_versionNumber,
225 z_InternationalString},
226 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IUSuppliedRecordsId_previousVersion,
227 (Odr_fun)odr_external},
230 if (!odr_initmember(o, p, sizeof(**p)))
231 return opt && odr_ok(o);
232 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
235 return opt && odr_ok(o);
238 int z_IUCorrelationInfo (ODR o, Z_IUCorrelationInfo **p, int opt)
240 if (!odr_sequence_begin (o, p, sizeof(**p)))
241 return opt && odr_ok (o);
243 odr_implicit (o, z_InternationalString,
244 &(*p)->note, ODR_CONTEXT, 1, 1) &&
245 odr_implicit (o, odr_integer,
246 &(*p)->id, ODR_CONTEXT, 2, 1) &&
247 odr_sequence_end (o);
250 int z_IUSuppliedRecords_elem (ODR o, Z_IUSuppliedRecords_elem **p, int opt)
252 static Odr_arm arm[] = {
253 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IUSuppliedRecords_number,
254 (Odr_fun)odr_integer},
255 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IUSuppliedRecords_string,
256 (Odr_fun)z_InternationalString},
257 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IUSuppliedRecords_opaque,
258 (Odr_fun)odr_octetstring},
261 if (!odr_sequence_begin (o, p, sizeof(**p)))
262 return opt && odr_ok (o);
264 ((odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 1) &&
265 odr_choice (o, arm, &(*p)->u, &(*p)->which) &&
266 odr_constructed_end (o)) || odr_ok(o)) &&
267 odr_explicit (o, z_IUSuppliedRecordsId,
268 &(*p)->supplementalId, ODR_CONTEXT, 2, 1) &&
269 odr_implicit (o, z_IUCorrelationInfo,
270 &(*p)->correlationInfo, ODR_CONTEXT, 3, 1) &&
271 odr_implicit (o, odr_external,
272 &(*p)->record, ODR_CONTEXT, 4, 0) &&
273 odr_sequence_end (o);
276 int z_IUSuppliedRecords (ODR o, Z_IUSuppliedRecords **p, int opt)
278 if (!odr_initmember (o, p, sizeof(**p)))
279 return opt && odr_ok(o);
280 if (odr_sequence_of (o, (Odr_fun)z_IUSuppliedRecords_elem, &(*p)->elements,
284 return opt && odr_ok(o);
287 int z_IUTaskPackageRecordStructure (ODR o, Z_IUTaskPackageRecordStructure **p,
290 static Odr_arm arm[] = {
291 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IUTaskPackageRecordStructure_record,
292 (Odr_fun)odr_external},
293 {ODR_EXPLICIT, ODR_CONTEXT, 2, Z_IUTaskPackageRecordStructure_surrogateDiagnostics,
294 (Odr_fun)z_DiagRecs},
297 if (!odr_sequence_begin (o, p, sizeof(**p)))
298 return opt && odr_ok (o);
300 ((odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 1) &&
301 odr_choice (o, arm, &(*p)->u, &(*p)->which) &&
302 odr_constructed_end (o)) || odr_ok(o)) &&
303 odr_implicit (o, z_IUCorrelationInfo,
304 &(*p)->correlationInfo, ODR_CONTEXT, 2, 1) &&
305 odr_implicit (o, odr_integer,
306 &(*p)->recordStatus, ODR_CONTEXT, 3, 0) &&
307 odr_implicit (o, z_DiagRecs,
308 &(*p)->supplementalDiagnostics, ODR_CONTEXT, 4, 1) &&
309 odr_sequence_end (o);
312 int z_IUOriginPartToKeep (ODR o, Z_IUOriginPartToKeep **p, int opt)
314 if (!odr_sequence_begin (o, p, sizeof(**p)))
315 return opt && odr_ok (o);
317 odr_implicit (o, odr_integer,
318 &(*p)->action, ODR_CONTEXT, 1, 0) &&
319 odr_implicit (o, z_InternationalString,
320 &(*p)->databaseName, ODR_CONTEXT, 2, 0) &&
321 odr_implicit (o, odr_oid,
322 &(*p)->schema, ODR_CONTEXT, 3, 1) &&
323 odr_implicit (o, z_InternationalString,
324 &(*p)->elementSetName, ODR_CONTEXT, 4, 1) &&
325 odr_implicit (o, odr_external,
326 &(*p)->actionQualifier, ODR_CONTEXT, 5, 1) &&
327 odr_sequence_end (o);
330 int z_IUTargetPart (ODR o, Z_IUTargetPart **p, int opt)
332 if (!odr_sequence_begin (o, p, sizeof(**p)))
333 return opt && odr_ok (o);
335 odr_implicit (o, odr_integer,
336 &(*p)->updateStatus, ODR_CONTEXT, 1, 0) &&
337 odr_implicit_settag (o, ODR_CONTEXT, 2) &&
338 (odr_sequence_of(o, (Odr_fun)z_DiagRec, &(*p)->globalDiagnostics,
339 &(*p)->num_globalDiagnostics) || odr_ok(o)) &&
340 odr_implicit_settag (o, ODR_CONTEXT, 3) &&
341 odr_sequence_of(o, (Odr_fun)z_IUTaskPackageRecordStructure, &(*p)->taskPackageRecords,
342 &(*p)->num_taskPackageRecords) &&
343 odr_sequence_end (o);
346 int z_IUUpdateEsRequest (ODR o, Z_IUUpdateEsRequest **p, int opt)
348 if (!odr_sequence_begin (o, p, sizeof(**p)))
349 return opt && odr_ok (o);
351 odr_explicit (o, z_IUOriginPartToKeep,
352 &(*p)->toKeep, ODR_CONTEXT, 1, 0) &&
353 odr_explicit (o, z_IUSuppliedRecords,
354 &(*p)->notToKeep, ODR_CONTEXT, 2, 0) &&
355 odr_sequence_end (o);
358 int z_IUUpdateTaskPackage (ODR o, Z_IUUpdateTaskPackage **p, int opt)
360 if (!odr_sequence_begin (o, p, sizeof(**p)))
361 return opt && odr_ok (o);
363 odr_explicit (o, z_IUOriginPartToKeep,
364 &(*p)->originPart, ODR_CONTEXT, 1, 0) &&
365 odr_explicit (o, z_IUTargetPart,
366 &(*p)->targetPart, ODR_CONTEXT, 2, 0) &&
367 odr_sequence_end (o);
370 int z_IUUpdate (ODR o, Z_IUUpdate **p, int opt)
372 static Odr_arm arm[] = {
373 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IUUpdate_esRequest,
374 (Odr_fun)z_IUUpdateEsRequest},
375 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IUUpdate_taskPackage,
376 (Odr_fun)z_IUUpdateTaskPackage},
379 if (!odr_initmember(o, p, sizeof(**p)))
380 return opt && odr_ok(o);
381 if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
384 return opt && odr_ok(o);