Tested ZOOM_connection_option_get()
[ZOOM-Perl-moved-to-github.git] / ZOOM.xs
1 /* $Id: ZOOM.xs,v 1.9 2005-10-12 09:45:36 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 const char *
116 ZOOM_diag_str(error)
117         int     error
118
119 int
120 ZOOM_connection_last_event(cs)
121         ZOOM_connection cs
122
123 ZOOM_resultset
124 ZOOM_connection_search(arg0, q)
125         ZOOM_connection arg0
126         ZOOM_query      q
127
128 # TESTED
129 #
130 # "const" discarded from type of `q'
131 ZOOM_resultset
132 ZOOM_connection_search_pqf(c, q)
133         ZOOM_connection c
134         char *q
135
136 # TESTED
137 #
138 void
139 ZOOM_resultset_destroy(r)
140         ZOOM_resultset r
141
142 const char *
143 ZOOM_resultset_option_get(r, key)
144         ZOOM_resultset  r
145         const char *    key
146
147 void
148 ZOOM_resultset_option_set(r, key, val)
149         ZOOM_resultset  r
150         const char *    key
151         const char *    val
152
153 # TESTED
154 #
155 size_t
156 ZOOM_resultset_size(r)
157         ZOOM_resultset r
158
159 void
160 ZOOM_resultset_records(r, recs, start, count)
161         ZOOM_resultset  r
162         ZOOM_record *   recs
163         size_t  start
164         size_t  count
165
166 # TESTED
167 #
168 ZOOM_record
169 ZOOM_resultset_record(s, pos)
170         ZOOM_resultset  s
171         size_t  pos
172
173 ZOOM_record
174 ZOOM_resultset_record_immediate(s, pos)
175         ZOOM_resultset  s
176         size_t  pos
177
178 void
179 ZOOM_resultset_cache_reset(r)
180         ZOOM_resultset  r
181
182 # TESTED
183 #
184 # "const" discarded from type of `type'
185 # See "typemap" for discussion of the "const char *" return-type.
186 const char *
187 ZOOM_record_get(rec, type, len)
188         ZOOM_record rec
189         char* type
190         int &len
191         OUTPUT:
192                 RETVAL
193                 len
194
195 void
196 ZOOM_record_destroy(rec)
197         ZOOM_record     rec
198
199 ZOOM_record
200 ZOOM_record_clone(srec)
201         ZOOM_record     srec
202
203 ZOOM_query
204 ZOOM_query_create()
205
206 void
207 ZOOM_query_destroy(s)
208         ZOOM_query      s
209
210 int
211 ZOOM_query_cql(s, str)
212         ZOOM_query      s
213         const char *    str
214
215 int
216 ZOOM_query_prefix(s, str)
217         ZOOM_query      s
218         const char *    str
219
220 int
221 ZOOM_query_sortby(s, criteria)
222         ZOOM_query      s
223         const char *    criteria
224
225 ZOOM_scanset
226 ZOOM_connection_scan(c, startterm)
227         ZOOM_connection c
228         const char *    startterm
229
230 const char *
231 ZOOM_scanset_term(scan, pos, occ, len)
232         ZOOM_scanset    scan
233         size_t  pos
234         int *   occ
235         int *   len
236
237 const char *
238 ZOOM_scanset_display_term(scan, pos, occ, len)
239         ZOOM_scanset    scan
240         size_t  pos
241         int *   occ
242         int *   len
243
244 size_t
245 ZOOM_scanset_size(scan)
246         ZOOM_scanset    scan
247
248 void
249 ZOOM_scanset_destroy(scan)
250         ZOOM_scanset    scan
251
252 const char *
253 ZOOM_scanset_option_get(scan, key)
254         ZOOM_scanset    scan
255         const char *    key
256
257 void
258 ZOOM_scanset_option_set(scan, key, val)
259         ZOOM_scanset    scan
260         const char *    key
261         const char *    val
262
263 ZOOM_package
264 ZOOM_connection_package(c, options)
265         ZOOM_connection c
266         ZOOM_options    options
267
268 void
269 ZOOM_package_destroy(p)
270         ZOOM_package    p
271
272 void
273 ZOOM_package_send(p, type)
274         ZOOM_package    p
275         const char *    type
276
277 const char *
278 ZOOM_package_option_get(p, key)
279         ZOOM_package    p
280         const char *    key
281
282 void
283 ZOOM_package_option_set(p, key, val)
284         ZOOM_package    p
285         const char *    key
286         const char *    val
287
288 void
289 ZOOM_resultset_sort(r, sort_type, sort_spec)
290         ZOOM_resultset  r
291         const char *    sort_type
292         const char *    sort_spec
293
294 ZOOM_options_callback
295 ZOOM_options_set_callback(opt, c, handle)
296         ZOOM_options    opt
297         ZOOM_options_callback   c
298         void *  handle
299
300 ZOOM_options
301 ZOOM_options_create()
302
303 ZOOM_options
304 ZOOM_options_create_with_parent(parent)
305         ZOOM_options    parent
306
307 ZOOM_options
308 ZOOM_options_create_with_parent2(parent1, parent2)
309         ZOOM_options    parent1
310         ZOOM_options    parent2
311
312 const char *
313 ZOOM_options_get(opt, name)
314         ZOOM_options    opt
315         const char *    name
316
317 void
318 ZOOM_options_set(opt, name, v)
319         ZOOM_options    opt
320         const char *    name
321         const char *    v
322
323 void
324 ZOOM_options_setl(opt, name, value, len)
325         ZOOM_options    opt
326         const char *    name
327         const char *    value
328         int     len
329
330 void
331 ZOOM_options_destroy(opt)
332         ZOOM_options    opt
333
334 int
335 ZOOM_options_get_bool(opt, name, defa)
336         ZOOM_options    opt
337         const char *    name
338         int     defa
339
340 int
341 ZOOM_options_get_int(opt, name, defa)
342         ZOOM_options    opt
343         const char *    name
344         int     defa
345
346 void
347 ZOOM_options_set_int(opt, name, value)
348         ZOOM_options    opt
349         const char *    name
350         int     value
351
352 int
353 ZOOM_event(no, cs)
354         int     no
355         ZOOM_connection *       cs
356