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