Modified function heads & prototypes.
[yaz-moved-to-github.git] / asn / prt-exd.c
1 /*
2  * Copyright (c) 1995, Index Data.
3  * See the file LICENSE for details.
4  * Sebastian Hammer, Adam Dickmeiss
5  *
6  * $Log: prt-exd.c,v $
7  * Revision 1.2  1995-09-27 15:02:41  quinn
8  * Modified function heads & prototypes.
9  *
10  * Revision 1.1  1995/08/21  09:16:32  quinn
11  * Added Extended services + Item Order
12  *
13  *
14  */
15
16 #include <proto.h>
17
18 int MDF z_TaskPackage(ODR o, Z_TaskPackage **p, int opt)
19 {
20     if (!odr_sequence_begin(o, p, sizeof(**p)))
21         return opt && odr_ok(o);
22     return
23         odr_implicit(o, odr_oid, &(*p)->packageType, ODR_CONTEXT, 1, 0) &&
24         odr_implicit(o, z_InternationalString, &(*p)->packageName, ODR_CONTEXT,
25             2, 1) &&
26         odr_implicit(o, z_InternationalString, &(*p)->userId, ODR_CONTEXT,
27             3, 1) &&
28         odr_implicit(o, z_IntUnit, &(*p)->retentionTime, ODR_CONTEXT, 4, 1) &&
29         odr_implicit(o, z_Permissions, &(*p)->permissions, ODR_CONTEXT, 5, 1) &&
30         odr_implicit(o, z_InternationalString, &(*p)->description, ODR_CONTEXT,
31             6, 1) &&
32         odr_implicit(o, odr_octetstring, &(*p)->targetReference, ODR_CONTEXT,
33             7, 0) &&
34         odr_implicit(o, odr_generalizedtime, &(*p)->creationDateTime,
35             ODR_CONTEXT,
36             8, 1) &&
37         odr_implicit(o, odr_integer, &(*p)->taskStatus, ODR_CONTEXT, 9, 0) &&
38         odr_implicit_settag(o, ODR_CONTEXT, 10) &&
39         (odr_sequence_of(o, z_DiagRec, &(*p)->packageDiagnostics,
40             &(*p)->num_packageDiagnostics) || odr_ok(o)) &&
41         odr_implicit(o, z_External, &(*p)->taskSpecificParameters, ODR_CONTEXT,
42             11, 0) &&
43         odr_sequence_end(o);
44 }
45
46 /* ----------------------- ITEM ORDER --------------------- */
47
48 int z_IOTargetPart(ODR o, Z_IOTargetPart **p, int opt)
49 {
50     if (!odr_sequence_begin(o, p, sizeof(**p)))
51         return opt && odr_ok(o);
52     return
53         odr_implicit(o, z_External, &(*p)->itemRequest, ODR_CONTEXT, 1, 1) &&
54         odr_implicit(o, z_External, &(*p)->statusOrErrorReport, ODR_CONTEXT,
55             2, 0) &&
56         odr_implicit(o, odr_integer, &(*p)->auxiliaryStatus, ODR_CONTEXT,
57             3, 1) &&
58         odr_sequence_end(o);
59 }
60
61 int z_IOResultSetItem(ODR o, Z_IOResultSetItem **p, int opt)
62 {
63     if (!odr_sequence_begin(o, p, sizeof(**p)))
64         return opt && odr_ok(o);
65     return
66         odr_implicit(o, z_InternationalString, &(*p)->resultSetId, ODR_CONTEXT,
67             1, 0) &&
68         odr_implicit(o, odr_integer, &(*p)->item, ODR_CONTEXT, 2, 1) &&
69         odr_sequence_end(o);
70 }
71
72 int z_IOOriginPartNotToKeep(ODR o, Z_IOOriginPartNotToKeep **p, int opt)
73 {
74     if (!odr_sequence_begin(o, p, sizeof(**p)))
75         return opt && odr_ok(o);
76     return
77         odr_implicit(o, z_IOResultSetItem, &(*p)->resultSetItem, ODR_CONTEXT,
78             1, 0) &&
79         odr_implicit(o, z_External, &(*p)->itemRequest, ODR_CONTEXT, 2, 1) &&
80         odr_sequence_end(o);
81 }
82
83 int z_IOContact(ODR o, Z_IOContact **p, int opt)
84 {
85     if (!odr_sequence_begin(o, p, sizeof(**p)))
86         return opt && odr_ok(o);
87     return
88         odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT,
89             1, 1) &&
90         odr_implicit(o, z_InternationalString, &(*p)->phone, ODR_CONTEXT,
91             2, 1) &&
92         odr_implicit(o, z_InternationalString, &(*p)->email, ODR_CONTEXT,
93             3, 1) &&
94         odr_sequence_end(o);
95 }
96
97 int z_IOCreditCardInfo(ODR o, Z_IOCreditCardInfo **p, int opt)
98 {
99     if (!odr_sequence_begin(o, p, sizeof(**p)))
100         return opt && odr_ok(o);
101     return
102         odr_implicit(o, z_InternationalString, &(*p)->nameOnCard, ODR_CONTEXT,
103             1, 0) &&
104         odr_implicit(o, z_InternationalString, &(*p)->expirationDate,
105             ODR_CONTEXT, 2, 0) &&
106         odr_implicit(o, z_InternationalString, &(*p)->cardNumber, ODR_CONTEXT,
107             3, 0) &&
108         odr_sequence_end(o);
109 }
110
111 int z_IOBilling(ODR o, Z_IOBilling **p, int opt)
112 {
113     static Odr_arm arm[] =
114     {
115         {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_IOBilling_billInvoice, odr_null},
116         {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IOBilling_prepay, odr_null},
117         {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IOBilling_depositAccount, odr_null},
118         {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IOBilling_creditCard,
119             z_IOCreditCardInfo},
120         {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_IOBilling_cardInfoPreviouslySupplied,
121             odr_null},
122         {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_IOBilling_privateKnown, odr_null},
123         {ODR_IMPLICIT, ODR_CONTEXT, 6, Z_IOBilling_privateNotKnown,
124             z_External},
125         {-1, -1, -1, -1, 0}
126     };
127
128     if (!odr_sequence_begin(o, p, sizeof(**p)))
129         return opt && odr_ok(o);
130     return
131         odr_constructed_begin(o, &(*p)->paymentMethod,
132             ODR_CONTEXT, 1) &&
133         odr_choice(o, arm, &(*p)->paymentMethod, &(*p)->which) &&
134         odr_constructed_end(o) &&
135         odr_implicit(o, z_InternationalString, &(*p)->customerReference,
136             ODR_CONTEXT, 2, 1) &&
137         odr_implicit(o, z_InternationalString, &(*p)->customerPONumber,
138             ODR_CONTEXT, 3, 1) &&
139         odr_sequence_end(o);
140 }
141
142 int z_IOOriginPartToKeep(ODR o, Z_IOOriginPartToKeep **p, int opt)
143 {
144     if (!odr_sequence_begin(o, p, sizeof(**p)))
145         return opt && odr_ok(o);
146     return
147         odr_implicit(o, z_External, &(*p)->supplDescription, ODR_CONTEXT,
148             1, 1) &&
149         odr_implicit(o, z_IOContact, &(*p)->contact, ODR_CONTEXT, 2, 1) &&
150         odr_implicit(o, z_IOBilling, &(*p)->addlBilling, ODR_CONTEXT,
151             3, 1) &&
152         odr_sequence_end(o);
153 }
154
155 int z_IORequest(ODR o, Z_IORequest **p, int opt)
156 {
157     if (!odr_sequence_begin(o, p, sizeof(**p)))
158         return opt && odr_ok(o);
159     return 
160         odr_implicit(o, z_IOOriginPartToKeep, &(*p)->toKeep, ODR_CONTEXT,
161             1, 1) &&
162         odr_implicit(o, z_IOOriginPartNotToKeep, &(*p)->notToKeep, ODR_CONTEXT,
163             2, 0) &&
164         odr_sequence_end(o);
165 }
166
167 int z_IOTaskPackage(ODR o, Z_IOTaskPackage **p, int opt)
168 {
169     if (!odr_sequence_begin(o, p, sizeof(**p)))
170         return opt && odr_ok(o);
171     return
172         odr_implicit(o, z_IOOriginPartToKeep, &(*p)->originPart, ODR_CONTEXT,
173             1, 1) &&
174         odr_implicit(o, z_IOTargetPart, &(*p)->targetPart, ODR_CONTEXT, 2, 0) &&
175         odr_sequence_end(o);
176 }
177
178 int MDF z_ItemOrder(ODR o, Z_ItemOrder **p, int opt)
179 {
180     static Odr_arm arm[] =
181     {
182         {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ItemOrder_esRequest, z_IORequest},
183         {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ItemOrder_taskPackage,
184             z_IOTaskPackage},
185         {-1, -1, -1, -1, 0}
186     };
187
188     if (o->direction == ODR_DECODE)
189         *p = odr_malloc(o, sizeof(**p));
190     else if (!*p)
191         return opt;
192     if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
193         return 1;
194     *p = 0;
195     return opt && odr_ok(o);
196 }