f4d27a400cdbe21e45951d71709a8c54882066b0
[yaz-moved-to-github.git] / asn / zget.c
1 /*
2  * Copyright (c) 1995-1999, Index Data.
3  * See the file LICENSE for details.
4  * Sebastian Hammer, Adam Dickmeiss
5  *
6  * $Log: zget.c,v $
7  * Revision 1.17  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.
10  *
11  * Revision 1.16  1998/08/19 16:10:05  adam
12  * Changed som member names of DeleteResultSetRequest/Response.
13  *
14  * Revision 1.15  1998/03/31 15:13:19  adam
15  * Development towards compiled ASN.1.
16  *
17  * Revision 1.14  1998/02/11 11:53:32  adam
18  * Changed code so that it compiles as C++.
19  *
20  * Revision 1.13  1998/01/29 13:13:39  adam
21  * Function zget_presentRequest fills resultSetId with "default" instead
22  * of "Default".
23  *
24  * Revision 1.12  1997/10/29 12:00:37  adam
25  * Routine zget_SearchRequest fills resultSetName member with "default"
26  * instead of "Default".
27  *
28  * Revision 1.11  1997/05/02 08:39:10  quinn
29  * New PDUs added, thanks to Ronald van der Meer
30  *
31  * Revision 1.10  1996/01/02 08:57:23  quinn
32  * Changed enums in the ASN.1 .h files to #defines. Changed oident.class to oclass
33  *
34  * Revision 1.9  1995/09/29  17:11:55  quinn
35  * Smallish
36  *
37  * Revision 1.8  1995/09/27  15:02:43  quinn
38  * Modified function heads & prototypes.
39  *
40  * Revision 1.7  1995/06/15  07:44:52  quinn
41  * Moving to v3.
42  *
43  * Revision 1.6  1995/06/14  15:26:37  quinn
44  * *** empty log message ***
45  *
46  * Revision 1.5  1995/06/07  14:42:30  quinn
47  * Fixed CLOSE
48  *
49  * Revision 1.4  1995/06/07  14:36:25  quinn
50  * Added CLOSE
51  *
52  * Revision 1.3  1995/06/05  10:52:06  quinn
53  * Fixed some negligences.
54  *
55  * Revision 1.2  1995/05/30  10:15:49  quinn
56  * Added our implementor's ID
57  *
58  * Revision 1.1  1995/05/22  11:30:20  quinn
59  * Adding Z39.50-1992 stuff to proto.c. Adding zget.c
60  *
61  *
62  */
63
64 #include <proto.h>
65
66 Z_InitRequest *zget_InitRequest(ODR o)
67 {
68     Z_InitRequest *r = (Z_InitRequest *)odr_malloc(o, sizeof(*r));
69
70     r->referenceId = 0;
71     r->options = (Odr_bitmask *)odr_malloc(o, sizeof(*r->options));
72     ODR_MASK_ZERO(r->options);
73     r->protocolVersion = (Odr_bitmask *)odr_malloc(o, sizeof(*r->protocolVersion));
74     ODR_MASK_ZERO(r->protocolVersion);
75     r->preferredMessageSize = (int *)odr_malloc(o, sizeof(int));
76     *r->preferredMessageSize = 30*1024;
77     r->maximumRecordSize = (int *)odr_malloc(o, sizeof(int));
78     *r->maximumRecordSize = 30*1024;
79     r->idAuthentication = 0;
80     r->implementationId = "YAZ (id=81)";
81     r->implementationName = "Index Data/YAZ";
82     r->implementationVersion = YAZ_VERSION;
83     r->userInformationField = 0;
84     r->otherInfo = 0;
85     return r;
86 }
87
88 Z_InitResponse *zget_InitResponse(ODR o)
89 {
90     Z_InitResponse *r = (Z_InitResponse *)odr_malloc(o, sizeof(*r));
91
92     r->referenceId = 0;
93     r->options = (Odr_bitmask *)odr_malloc(o, sizeof(*r->options));
94     ODR_MASK_ZERO(r->options);
95     r->protocolVersion = (Odr_bitmask *)odr_malloc(o, sizeof(*r->protocolVersion));
96     ODR_MASK_ZERO(r->protocolVersion);
97     r->preferredMessageSize = (int *)odr_malloc(o, sizeof(int));
98     *r->preferredMessageSize = 30*1024;
99     r->maximumRecordSize = (int *)odr_malloc(o, sizeof(int));
100     *r->maximumRecordSize = 30*1024;
101     r->result = (int *)odr_malloc(o, sizeof(bool_t));
102     *r->result = 1;
103     r->implementationId = "YAZ (id=81)";
104     r->implementationName = "Index Data/YAZ";
105     r->implementationVersion = YAZ_VERSION;
106     r->userInformationField = 0;
107     r->otherInfo = 0;
108     return r;
109 }
110
111 Z_SearchRequest *zget_SearchRequest(ODR o)
112 {
113     Z_SearchRequest *r = (Z_SearchRequest *)odr_malloc(o, sizeof(*r));
114
115     r->referenceId = 0;
116     r->smallSetUpperBound = (int *)odr_malloc(o, sizeof(int));
117     *r->smallSetUpperBound = 0;
118     r->largeSetLowerBound = (int *)odr_malloc(o, sizeof(int));
119     *r->largeSetLowerBound = 1;
120     r->mediumSetPresentNumber = (int *)odr_malloc(o, sizeof(int));
121     *r->mediumSetPresentNumber = 0;
122     r->replaceIndicator = (int *)odr_malloc(o, sizeof(bool_t));
123     *r->replaceIndicator = 1;
124     r->resultSetName = "default";
125     r->num_databaseNames = 0;
126     r->databaseNames = 0;
127     r->smallSetElementSetNames = 0;
128     r->mediumSetElementSetNames = 0;
129     r->preferredRecordSyntax = 0;
130     r->query = 0;
131     r->additionalSearchInfo = 0;
132     r->otherInfo = 0;
133     return r;
134 }
135
136 Z_SearchResponse *zget_SearchResponse(ODR o)
137 {
138     Z_SearchResponse *r = (Z_SearchResponse *)odr_malloc(o, sizeof(*r));
139
140     r->referenceId = 0;
141     r->resultCount = (int *)odr_malloc(o, sizeof(int));
142     *r->resultCount = 0;
143     r->numberOfRecordsReturned = (int *)odr_malloc(o, sizeof(int));
144     *r->numberOfRecordsReturned = 0;
145     r->nextResultSetPosition = (int *)odr_malloc(o, sizeof(int));
146     *r->nextResultSetPosition = 0;
147     r->searchStatus = (int *)odr_malloc(o, sizeof(bool_t));
148     *r->searchStatus = 1;
149     r->resultSetStatus = 0;
150     r->presentStatus = 0;
151     r->records = 0;
152     r->additionalSearchInfo = 0;
153     r->otherInfo = 0;
154     return r;
155 }
156
157 Z_PresentRequest *zget_PresentRequest(ODR o)
158 {
159     Z_PresentRequest *r = (Z_PresentRequest *)odr_malloc(o, sizeof(*r));
160
161     r->referenceId = 0;
162     r->resultSetId = "default";
163     r->resultSetStartPoint = (int *)odr_malloc(o, sizeof(int));
164     *r->resultSetStartPoint = 1;
165     r->numberOfRecordsRequested = (int *)odr_malloc(o, sizeof(int));
166     *r->numberOfRecordsRequested = 10;
167     r->num_ranges = 0;
168     r->additionalRanges = 0;
169     r->recordComposition = 0;
170     r->preferredRecordSyntax = 0;
171     r->maxSegmentCount = 0;
172     r->maxRecordSize = 0;
173     r->maxSegmentSize = 0;
174     r->otherInfo = 0;
175     return r;
176 }
177
178 Z_PresentResponse *zget_PresentResponse(ODR o)
179 {
180     Z_PresentResponse *r = (Z_PresentResponse *)odr_malloc(o, sizeof(*r));
181
182     r->referenceId = 0;
183     r->numberOfRecordsReturned = (int *)odr_malloc(o, sizeof(int));
184     *r->numberOfRecordsReturned = 0;
185     r->nextResultSetPosition = (int *)odr_malloc(o, sizeof(int));
186     *r->nextResultSetPosition = 0;
187     r->presentStatus = (int *)odr_malloc(o, sizeof(int));
188     *r->presentStatus = Z_PRES_SUCCESS;
189     r->records = 0;
190     r->otherInfo = 0;
191     return r;
192 }
193
194 Z_DeleteResultSetRequest *zget_DeleteResultSetRequest(ODR o)
195 {
196     Z_DeleteResultSetRequest *r = (Z_DeleteResultSetRequest *)
197         odr_malloc(o, sizeof(*r));
198
199     r->referenceId = 0;
200     r->deleteFunction = (int *)odr_malloc(o, sizeof(int));
201     *r->deleteFunction = Z_DeleteRequest_list;
202     r->num_resultSetList = 0;
203     r->resultSetList = 0;
204     r->otherInfo = 0;
205     return r;
206 }
207
208 Z_DeleteResultSetResponse *zget_DeleteResultSetResponse(ODR o)
209 {
210     Z_DeleteResultSetResponse *r = (Z_DeleteResultSetResponse *)
211         odr_malloc(o, sizeof(*r));
212     
213     r->referenceId = 0;
214     r->deleteOperationStatus = (int *)odr_malloc(o, sizeof(int));
215     *r->deleteOperationStatus = Z_DeleteStatus_success;
216     r->deleteListStatuses = 0;
217     r->numberNotDeleted = 0;
218     r->bulkStatuses = 0;
219     r->deleteMessage = 0;
220     r->otherInfo = 0;
221     return r;
222 }
223
224 Z_ScanRequest *zget_ScanRequest(ODR o)
225 {
226     Z_ScanRequest *r = (Z_ScanRequest *)odr_malloc(o, sizeof(*r));
227     
228     r->referenceId = 0;
229     r->num_databaseNames = 0;
230     r->databaseNames = 0;
231     r->attributeSet = 0;
232     r->termListAndStartPoint = 0;
233     r->stepSize = 0;
234     r->numberOfTermsRequested = (int *)odr_malloc(o, sizeof(int));
235     *r->numberOfTermsRequested = 20;
236     r->preferredPositionInResponse = 0;
237     r->otherInfo = 0;
238     return r;
239 }
240
241 Z_ScanResponse *zget_ScanResponse(ODR o)
242 {
243     Z_ScanResponse *r = (Z_ScanResponse *)odr_malloc(o, sizeof(*r));
244     
245     r->referenceId = 0;
246     r->stepSize = 0;
247     r->scanStatus = (int *)odr_malloc(o, sizeof(int));
248     *r->scanStatus = Z_Scan_success;
249     r->numberOfEntriesReturned = (int *)odr_malloc(o, sizeof(int));
250     *r->numberOfEntriesReturned = 0;
251     r->positionOfTerm =0;
252     r->entries = 0;
253     r->attributeSet = 0;
254     r->otherInfo = 0;
255     return r;
256 }
257
258 Z_TriggerResourceControlRequest *zget_TriggerResourceControlRequest(ODR o)
259 {
260     Z_TriggerResourceControlRequest *r = (Z_TriggerResourceControlRequest *)
261         odr_malloc(o, sizeof(*r));
262     
263     r->referenceId = 0;
264     r->requestedAction = (int *)odr_malloc(o, sizeof(int));
265     *r->requestedAction = Z_TriggerResourceCtrl_resourceReport;
266     r->prefResourceReportFormat = 0;
267     r->resultSetWanted = 0;
268     r->otherInfo = 0;
269     return r;
270 }
271
272 Z_ResourceControlRequest *zget_ResourceControlRequest(ODR o)
273 {
274     Z_ResourceControlRequest *r = (Z_ResourceControlRequest *)
275         odr_malloc(o, sizeof(*r));
276
277     r->referenceId = 0;
278     r->suspendedFlag = 0;
279     r->resourceReport = 0;
280     r->partialResultsAvailable = 0;
281     r->responseRequired = (int *)odr_malloc(o, sizeof(bool_t));
282     *r->responseRequired = 0;
283     r->triggeredRequestFlag = 0;
284     r->otherInfo = 0;
285     return r;
286 }
287
288 Z_ResourceControlResponse *zget_ResourceControlResponse(ODR o)
289 {
290     Z_ResourceControlResponse *r = (Z_ResourceControlResponse *)
291         odr_malloc(o, sizeof(*r));
292
293     r->referenceId = 0;
294     r->continueFlag = (int *)odr_malloc(o, sizeof(bool_t));
295     *r->continueFlag = 1;
296     r->resultSetWanted = 0;
297     r->otherInfo = 0;
298     return r;
299 }
300
301 Z_AccessControlRequest *zget_AccessControlRequest(ODR o)
302 {
303     Z_AccessControlRequest *r = (Z_AccessControlRequest *)
304         odr_malloc(o, sizeof(*r));
305
306     r->referenceId = 0;
307     r->which = Z_AccessRequest_simpleForm;
308     r->u.simpleForm = 0;
309     r->otherInfo = 0;
310     return r;
311 }
312
313 Z_AccessControlResponse *zget_AccessControlResponse(ODR o)
314 {
315     Z_AccessControlResponse *r = (Z_AccessControlResponse *)
316         odr_malloc(o, sizeof(*r));
317
318     r->referenceId = 0;
319     r->which = Z_AccessResponse_simpleForm;
320     r->u.simpleForm = 0;
321     r->diagnostic = 0;
322     r->otherInfo = 0;
323     return r;
324 }
325
326 Z_Segment *zget_Segment(ODR o)
327 {
328     Z_Segment *r = (Z_Segment *)odr_malloc(o, sizeof(*r));
329
330     r->referenceId = 0;
331     r->numberOfRecordsReturned = (int *)odr_malloc(o, sizeof(int));
332     *r->numberOfRecordsReturned = 0;
333     r->num_segmentRecords = 0;
334     r->segmentRecords = 0;
335     r->otherInfo = 0;
336     return r;
337 }
338
339 Z_Close *zget_Close(ODR o)
340 {
341     Z_Close *r = (Z_Close *)odr_malloc(o, sizeof(*r));
342
343     r->referenceId = 0;
344     r->closeReason = (int *)odr_malloc(o, sizeof(int));
345     *r->closeReason = Z_Close_finished;
346     r->diagnosticInformation = 0;
347     r->resourceReportFormat = 0;
348     r->resourceReport = 0;
349     r->otherInfo = 0;
350     return r;
351 }
352
353 Z_ResourceReportRequest *zget_ResourceReportRequest(ODR o)
354 {
355     Z_ResourceReportRequest *r = (Z_ResourceReportRequest *)
356         odr_malloc(o, sizeof(*r));
357
358     r->referenceId = 0;
359     r->opId = 0;
360     r->prefResourceReportFormat = 0;
361     r->otherInfo = 0;
362     return r;
363 }
364
365 Z_ResourceReportResponse *zget_ResourceReportResponse(ODR o)
366 {
367     Z_ResourceReportResponse *r = (Z_ResourceReportResponse *)
368         odr_malloc(o, sizeof(*r));
369
370     r->referenceId = 0;
371     r->resourceReportStatus = (int *)odr_malloc(o, sizeof(int));
372     *r->resourceReportStatus = Z_ResourceReportStatus_success;
373     r->resourceReport = 0;
374     r->otherInfo = 0;
375     return r;
376 }
377
378 Z_SortRequest *zget_SortRequest(ODR o)
379 {
380     Z_SortRequest *r = (Z_SortRequest *)odr_malloc(o, sizeof(*r));
381
382     r->referenceId = 0;
383     r->inputResultSetNames = 0;
384     r->sortedResultSetName = 0;
385     r->sortSequence = 0;
386     r->otherInfo = 0;
387     return r;
388 }
389
390 Z_SortResponse *zget_SortResponse(ODR o)
391 {
392     Z_SortResponse *r = (Z_SortResponse *)odr_malloc(o, sizeof(*r));
393
394     r->referenceId = 0;
395     r->sortStatus = (int *)odr_malloc(o, sizeof(int));
396     *r->sortStatus = Z_SortStatus_success;
397     r->resultSetStatus = (int *)odr_malloc(o, sizeof(int));
398     *r->resultSetStatus = Z_SortResultSetStatus_empty;
399     r->diagnostics = 0;
400     r->otherInfo = 0;
401     return r;
402 }
403
404 Z_ExtendedServicesRequest *zget_ExtendedServicesRequest(ODR o)
405 {
406     Z_ExtendedServicesRequest *r = (Z_ExtendedServicesRequest *)
407         odr_malloc(o, sizeof(*r));
408
409     r->referenceId = 0;
410     r->function = (int *)odr_malloc(o, sizeof(int));
411     *r->function = Z_ExtendedServicesRequest_create;
412     r->packageType = 0;
413     r->packageName = 0;
414     r->userId = 0;
415     r->retentionTime = 0;
416     r->permissions = 0;
417     r->description = 0;
418     r->taskSpecificParameters = 0;
419     r->waitAction = (int *)odr_malloc(o, sizeof(int));
420     *r->waitAction = Z_ExtendedServicesRequest_wait;
421     r->elements = 0;
422     r->otherInfo = 0;
423     return r;
424 }
425
426 Z_ExtendedServicesResponse *zget_ExtendedServicesResponse(ODR o)
427 {
428     Z_ExtendedServicesResponse *r = (Z_ExtendedServicesResponse *)
429         odr_malloc(o, sizeof(*r));
430
431     r->referenceId = 0;
432     r->operationStatus = (int *)odr_malloc(o, sizeof(int));
433     *r->operationStatus = Z_ExtendedServicesResponse_done;
434     r->num_diagnostics = 0;
435     r->diagnostics = 0;
436     r->taskPackage = 0;
437     r->otherInfo = 0;
438     return r;
439 }
440
441 Z_APDU *zget_APDU(ODR o, int which)
442 {
443     Z_APDU *r = (Z_APDU *)odr_malloc(o, sizeof(*r));
444
445     switch (r->which = which)
446     {
447         case Z_APDU_initRequest:
448             r->u.initRequest = zget_InitRequest(o);
449             break;
450         case Z_APDU_initResponse:
451             r->u.initResponse = zget_InitResponse(o);
452             break;
453         case Z_APDU_searchRequest:
454             r->u.searchRequest = zget_SearchRequest(o);
455             break;
456         case Z_APDU_searchResponse:
457             r->u.searchResponse = zget_SearchResponse(o);
458             break;
459         case Z_APDU_presentRequest:
460             r->u.presentRequest = zget_PresentRequest(o);
461             break;
462         case Z_APDU_presentResponse:
463             r->u.presentResponse = zget_PresentResponse(o);
464             break;
465         case Z_APDU_deleteResultSetRequest:
466             r->u.deleteResultSetRequest = zget_DeleteResultSetRequest(o);
467             break;
468         case Z_APDU_deleteResultSetResponse:
469             r->u.deleteResultSetResponse = zget_DeleteResultSetResponse(o);
470             break;
471         case Z_APDU_scanRequest:
472             r->u.scanRequest = zget_ScanRequest(o);
473             break;
474         case Z_APDU_scanResponse:
475             r->u.scanResponse = zget_ScanResponse(o);
476             break;
477         case Z_APDU_triggerResourceControlRequest:
478             r->u.triggerResourceControlRequest =
479                 zget_TriggerResourceControlRequest(o);
480             break;
481         case Z_APDU_resourceControlRequest:
482             r->u.resourceControlRequest = zget_ResourceControlRequest(o);
483             break;
484         case Z_APDU_resourceControlResponse:
485             r->u.resourceControlResponse = zget_ResourceControlResponse(o);
486             break;
487         case Z_APDU_segmentRequest:
488             r->u.segmentRequest = zget_Segment(o);
489             break;
490         case Z_APDU_close:
491             r->u.close = zget_Close(o);
492             break;
493         case Z_APDU_accessControlRequest:
494             r->u.accessControlRequest = zget_AccessControlRequest(o);
495             break;
496         case Z_APDU_accessControlResponse:
497             r->u.accessControlResponse = zget_AccessControlResponse(o);
498             break;
499         case Z_APDU_resourceReportRequest:
500             r->u.resourceReportRequest = zget_ResourceReportRequest(o);
501             break;
502         case Z_APDU_resourceReportResponse:
503             r->u.resourceReportResponse = zget_ResourceReportResponse(o);
504             break;
505         case Z_APDU_sortRequest:
506             r->u.sortRequest = zget_SortRequest(o);
507             break;
508         case Z_APDU_sortResponse:
509             r->u.sortResponse = zget_SortResponse(o);
510             break;
511         case Z_APDU_extendedServicesRequest:
512             r->u.extendedServicesRequest = zget_ExtendedServicesRequest(o);
513             break;
514         case Z_APDU_extendedServicesResponse:
515             r->u.extendedServicesResponse = zget_ExtendedServicesResponse(o);
516             break;
517         default:
518             fprintf(stderr, "Bad APDU-type to zget_APDU");
519             exit(1);
520     }
521     return r;
522 }