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