Three more functions tested:
[ZOOM-Perl-moved-to-github.git] / ZOOM.xs
1 /* $Id: ZOOM.xs,v 1.11 2005-10-13 13:30:52 mike Exp $ */
2
3 #include "EXTERN.h"
4 #include "perl.h"
5 #include "XSUB.h"
6
7 #include <yaz/zoom.h>
8
9
10 MODULE = Net::Z3950::ZOOM               PACKAGE = Net::Z3950::ZOOM              PREFIX=ZOOM_
11
12 PROTOTYPES: ENABLE
13
14
15 # It seems that when one of these functions is called from Perl with
16 # a string-constant argument, that is not recognised as suitable to
17 # be mapped onto a "const char*" argument.  The only fix I can find is
18 # to delete as the "const" qualifiers from "char*" arguments:
19 # overriding the auto-generated prototyping with PROTOTYPE: $$
20 # doesn't help (and indeed seems to make no difference at all).
21 #
22 # TESTED
23 ZOOM_connection
24 ZOOM_connection_new(host, portnum)
25         char* host
26         int portnum
27
28 # TESTED
29 ZOOM_connection
30 ZOOM_connection_create(options)
31         ZOOM_options    options
32
33 # TESTED
34 void
35 ZOOM_connection_connect(c, host, portnum)
36         ZOOM_connection c
37         const char *    host
38         int     portnum
39
40 # TESTED
41 void
42 ZOOM_connection_destroy(c)
43         ZOOM_connection c
44
45 # TESTED
46 const char *
47 ZOOM_connection_option_get(c, key)
48         ZOOM_connection c
49         const char *key
50
51 # TESTED
52 void
53 ZOOM_connection_option_set(c, key, val)
54         ZOOM_connection c
55         const char *key
56         const char *val
57
58 void
59 ZOOM_connection_option_setl(c, key, val, len)
60         ZOOM_connection c
61         const char *    key
62         const char *    val
63         int     len
64
65 # The reference parameters, `cp' and `addinfo', need to already have
66 # values when this function is called, otherwise an "uninitialised
67 # value" warning is generated.  As far as I can see, there is no way
68 # around this: no way to specify in a prototype that an argument is
69 # allowed to be undefined, for example.  Since these function will
70 # never be called directly by well-behaved client code, but only by
71 # our own wrapper classes, I think we can live with that.
72 #
73 # The poxing about with cpp and caddinfo is due to Perl XS's lack of
74 # support for const char**, but who can blame it?  If you ask me, the
75 # whole "const" thing was well-intentioned by ghastly mistake.
76 #
77 # TESTED
78 int
79 ZOOM_connection_error(c, cp, addinfo)
80         ZOOM_connection c
81         char* &cp
82         char* &addinfo
83         CODE:
84                 const char *ccp, *caddinfo;
85                 RETVAL = ZOOM_connection_error(c, &ccp, &caddinfo);
86                 cp = (char*) ccp;
87                 addinfo = (char*) caddinfo;
88         OUTPUT:
89                 RETVAL
90                 cp
91                 addinfo
92
93 int
94 ZOOM_connection_error_x(c, cp, addinfo, diagset)
95         ZOOM_connection c
96         const char **   cp
97         const char **   addinfo
98         const char **   diagset
99
100 int
101 ZOOM_connection_errcode(c)
102         ZOOM_connection c
103
104 const char *
105 ZOOM_connection_errmsg(c)
106         ZOOM_connection c
107
108 const char *
109 ZOOM_connection_addinfo(c)
110         ZOOM_connection c
111
112 # TESTED
113 const char *
114 ZOOM_diag_str(error)
115         int     error
116
117 int
118 ZOOM_connection_last_event(cs)
119         ZOOM_connection cs
120
121 ZOOM_resultset
122 ZOOM_connection_search(arg0, q)
123         ZOOM_connection arg0
124         ZOOM_query      q
125
126 # "const" discarded from type of `q'
127 #
128 # TESTED
129 ZOOM_resultset
130 ZOOM_connection_search_pqf(c, q)
131         ZOOM_connection c
132         char *q
133
134 # TESTED
135 void
136 ZOOM_resultset_destroy(r)
137         ZOOM_resultset r
138
139 const char *
140 ZOOM_resultset_option_get(r, key)
141         ZOOM_resultset  r
142         const char *    key
143
144 void
145 ZOOM_resultset_option_set(r, key, val)
146         ZOOM_resultset  r
147         const char *    key
148         const char *    val
149
150 # TESTED
151 size_t
152 ZOOM_resultset_size(r)
153         ZOOM_resultset r
154
155 void
156 ZOOM_resultset_records(r, recs, start, count)
157         ZOOM_resultset  r
158         ZOOM_record *   recs
159         size_t  start
160         size_t  count
161
162 # TESTED
163 ZOOM_record
164 ZOOM_resultset_record(s, pos)
165         ZOOM_resultset  s
166         size_t  pos
167
168 ZOOM_record
169 ZOOM_resultset_record_immediate(s, pos)
170         ZOOM_resultset  s
171         size_t  pos
172
173 void
174 ZOOM_resultset_cache_reset(r)
175         ZOOM_resultset  r
176
177 # "const" discarded from type of `type'
178 # See "typemap" for discussion of the "const char *" return-type.
179 #
180 # TESTED
181 const char *
182 ZOOM_record_get(rec, type, len)
183         ZOOM_record rec
184         char* type
185         int &len
186         OUTPUT:
187                 RETVAL
188                 len
189
190 void
191 ZOOM_record_destroy(rec)
192         ZOOM_record     rec
193
194 ZOOM_record
195 ZOOM_record_clone(srec)
196         ZOOM_record     srec
197
198 ZOOM_query
199 ZOOM_query_create()
200
201 void
202 ZOOM_query_destroy(s)
203         ZOOM_query      s
204
205 int
206 ZOOM_query_cql(s, str)
207         ZOOM_query      s
208         const char *    str
209
210 int
211 ZOOM_query_prefix(s, str)
212         ZOOM_query      s
213         const char *    str
214
215 int
216 ZOOM_query_sortby(s, criteria)
217         ZOOM_query      s
218         const char *    criteria
219
220 ZOOM_scanset
221 ZOOM_connection_scan(c, startterm)
222         ZOOM_connection c
223         const char *    startterm
224
225 const char *
226 ZOOM_scanset_term(scan, pos, occ, len)
227         ZOOM_scanset    scan
228         size_t  pos
229         int *   occ
230         int *   len
231
232 const char *
233 ZOOM_scanset_display_term(scan, pos, occ, len)
234         ZOOM_scanset    scan
235         size_t  pos
236         int *   occ
237         int *   len
238
239 size_t
240 ZOOM_scanset_size(scan)
241         ZOOM_scanset    scan
242
243 void
244 ZOOM_scanset_destroy(scan)
245         ZOOM_scanset    scan
246
247 const char *
248 ZOOM_scanset_option_get(scan, key)
249         ZOOM_scanset    scan
250         const char *    key
251
252 void
253 ZOOM_scanset_option_set(scan, key, val)
254         ZOOM_scanset    scan
255         const char *    key
256         const char *    val
257
258 ZOOM_package
259 ZOOM_connection_package(c, options)
260         ZOOM_connection c
261         ZOOM_options    options
262
263 void
264 ZOOM_package_destroy(p)
265         ZOOM_package    p
266
267 void
268 ZOOM_package_send(p, type)
269         ZOOM_package    p
270         const char *    type
271
272 const char *
273 ZOOM_package_option_get(p, key)
274         ZOOM_package    p
275         const char *    key
276
277 void
278 ZOOM_package_option_set(p, key, val)
279         ZOOM_package    p
280         const char *    key
281         const char *    val
282
283 void
284 ZOOM_resultset_sort(r, sort_type, sort_spec)
285         ZOOM_resultset  r
286         const char *    sort_type
287         const char *    sort_spec
288
289 ZOOM_options_callback
290 ZOOM_options_set_callback(opt, c, handle)
291         ZOOM_options    opt
292         ZOOM_options_callback   c
293         void *  handle
294
295 # TESTING
296 ZOOM_options
297 ZOOM_options_create()
298
299 ZOOM_options
300 ZOOM_options_create_with_parent(parent)
301         ZOOM_options    parent
302
303 ZOOM_options
304 ZOOM_options_create_with_parent2(parent1, parent2)
305         ZOOM_options    parent1
306         ZOOM_options    parent2
307
308 const char *
309 ZOOM_options_get(opt, name)
310         ZOOM_options    opt
311         const char *    name
312
313 void
314 ZOOM_options_set(opt, name, v)
315         ZOOM_options    opt
316         const char *    name
317         const char *    v
318
319 void
320 ZOOM_options_setl(opt, name, value, len)
321         ZOOM_options    opt
322         const char *    name
323         const char *    value
324         int     len
325
326 void
327 ZOOM_options_destroy(opt)
328         ZOOM_options    opt
329
330 int
331 ZOOM_options_get_bool(opt, name, defa)
332         ZOOM_options    opt
333         const char *    name
334         int     defa
335
336 int
337 ZOOM_options_get_int(opt, name, defa)
338         ZOOM_options    opt
339         const char *    name
340         int     defa
341
342 void
343 ZOOM_options_set_int(opt, name, value)
344         ZOOM_options    opt
345         const char *    name
346         int     value
347
348 int
349 ZOOM_event(no, cs)
350         int     no
351         ZOOM_connection *       cs
352