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