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