/[Search-TokyoDystopia]/lib/Search/TokyoDystopia.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /lib/Search/TokyoDystopia.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 37 - (hide annotations)
Sun Sep 21 20:16:39 2008 UTC (10 years, 9 months ago) by dpavlin
File size: 7663 byte(s)
first cut at simple API which currently segfaults after second open :-(
1 dpavlin 1 package Search::TokyoDystopia;
2    
3     use strict;
4     use warnings;
5    
6     require Exporter;
7     require XSLoader;
8     use base qw(Exporter);
9 dpavlin 32 our $VERSION = '0.01';
10 dpavlin 1 our $debug = 0;
11     XSLoader::load('Search::TokyoDystopia', $VERSION);
12    
13 dpavlin 10 our @EXPORT = qw(
14     tcidberrmsg
15     tcidbnew
16     tcidbdel
17     tcidbnew
18     tcidbecode
19     tcidbtune
20     IDBTLARGE
21     IDBTDEFLATE
22     IDBTTCBS
23     tcidbsetcache
24     tcidbsetfwmmax
25     tcidbopen
26     IDBOREADER
27     IDBOWRITER
28     IDBOCREAT
29     IDBOTRUNC
30     IDBONOLCK
31     IDBOLCKNB
32 dpavlin 11 tcidbclose
33 dpavlin 14 tcidbput
34 dpavlin 15 tcidbout
35 dpavlin 17 tcidbget
36 dpavlin 18 tcidbsearch
37 dpavlin 22 tcidbsearch2
38 dpavlin 18 IDBSSUBSTR
39     IDBSPREFIX
40     IDBSSUFFIX
41     IDBSFULL
42     IDBSTOKEN
43     IDBSTOKPRE
44     IDBSTOKSUF
45 dpavlin 19 tcidbiterinit
46 dpavlin 20 tcidbiternext
47 dpavlin 21 tcidbsync
48 dpavlin 23 tcidboptimize
49 dpavlin 24 tcidbvanish
50 dpavlin 25 tcidbcopy
51 dpavlin 26 tcidbpath
52 dpavlin 27 tcidbrnum
53 dpavlin 28 tcidbfsiz
54 dpavlin 32
55     tdversion
56     tcqdberrmsg
57     tcqdbnew
58     tcqdbdel
59     tcqdbnew
60     tcqdbecode
61     tcqdbtune
62     QDBTLARGE
63     QDBTDEFLATE
64     QDBTTCBS
65     tcqdbsetcache
66     tcqdbsetfwmmax
67     tcqdbopen
68     QDBOREADER
69     QDBOWRITER
70     QDBOCREAT
71     QDBOTRUNC
72     QDBONOLCK
73     QDBOLCKNB
74     tcqdbclose
75     tcqdbput
76     tcqdbout
77     tcqdbget
78     tcqdbsearch
79     tcqdbsearch2
80     QDBSSUBSTR
81     QDBSPREFIX
82     QDBSSUFFIX
83     QDBSFULL
84     QDBSTOKEN
85     QDBSTOKPRE
86     QDBSTOKSUF
87     tcqdbiterinit
88     tcqdbiternext
89     tcqdbsync
90     tcqdboptimize
91     tcqdbvanish
92     tcqdbcopy
93     tcqdbpath
94 dpavlin 34 tcqdbtnum
95 dpavlin 32 tcqdbfsiz
96    
97 dpavlin 37 tcjdberrmsg
98     tcjdbnew
99     tcjdbdel
100     tcjdbnew
101     tcjdbecode
102     tcjdbtune
103     JDBTLARGE
104     JDBTDEFLATE
105     JDBTTCBS
106     tcjdbsetcache
107     tcjdbsetfwmmax
108     tcjdbopen
109     JDBOREADER
110     JDBOWRITER
111     JDBOCREAT
112     JDBOTRUNC
113     JDBONOLCK
114     JDBOLCKNB
115     tcjdbclose
116     tcjdbput
117     tcjdbput2
118     tcjdbout
119     tcjdbget
120     tcjdbget2
121     tcjdbsearch
122     tcjdbsearch2
123     JDBSSUBSTR
124     JDBSPREFIX
125     JDBSSUFFIX
126     JDBSFULL
127     JDBSTOKEN
128     JDBSTOKPRE
129     JDBSTOKSUF
130     tcjdbiterinit
131     tcjdbiternext
132     tcjdbsync
133     tcjdboptimize
134     tcjdbvanish
135     tcjdbcopy
136     tcjdbpath
137     tcjdbtnum
138     tcjdbfsiz
139 dpavlin 10 );
140    
141 dpavlin 1 =head1 NAME
142    
143     Search::TokyoDystopia - XS bindings for Tokyo Dystopia
144    
145 dpavlin 32 =head1 Core API
146 dpavlin 1
147 dpavlin 10 If you don't prevent it, it will export all kind of stuff into your namespace to cut down on typing.
148 dpavlin 32 void
149     tcqdbget(qdb, id)
150     void * qdb
151     int id
152     PREINIT:
153     char *vbuf;
154     PPCODE:
155     vbuf = tcqdbget(qdb, id);
156     if(vbuf){
157     XPUSHs(sv_2mortal(newSVpvn(vbuf, strlen(vbuf))));
158     tcfree(vbuf);
159     } else {
160     XPUSHs((SV *)&PL_sv_undef);
161     }
162     XSRETURN(1);
163 dpavlin 10
164 dpavlin 32
165    
166 dpavlin 10 =head2 tcidberrmsg
167    
168 dpavlin 12 my $message = tcidberrmsg( $ecode );
169 dpavlin 10
170     =head2 tcidbnew
171    
172 dpavlin 12 my $idb = tcidbnew;
173 dpavlin 10
174     =head2 tcidbdel
175    
176 dpavlin 12 tcidbdel( $idb );
177 dpavlin 10
178     =head2 tcidbecode
179    
180 dpavlin 12 my $ecode = tcidbecode( $idb );
181 dpavlin 10
182     =head2 tcidbtune
183    
184 dpavlin 13 my $success = tcidbtune( $idb, $ernum, $etnum, $iusiz, IDBTLARGE | IDBTDEFLATE );
185 dpavlin 10
186 dpavlin 1 =cut
187    
188 dpavlin 10 use constant {
189     IDBTLARGE => 1 << 0,
190     IDBTDEFLATE => 1 << 1,
191     IDBTTCBS => 1 << 2,
192     };
193    
194     =head2 tcidbsetcache
195    
196 dpavlin 12 my $success = tcidbsetcache( $idb, $icsiz, $lcnum );
197 dpavlin 10
198     =head2 tcidbsetfwmmax
199    
200 dpavlin 37 my $success = tcidbsetfwmmax( $idb, $fwmax );
201 dpavlin 10
202     =head2 tcidbopen
203    
204 dpavlin 13 my $success = tcidbopen( $idb, 'casket', IDBOWRITER | IDBOCREAT );
205 dpavlin 10
206     =cut
207    
208     use constant {
209     IDBOREADER => 1 << 0,
210     IDBOWRITER => 1 << 1,
211     IDBOCREAT => 1 << 2,
212     IDBOTRUNC => 1 << 3,
213     IDBONOLCK => 1 << 4,
214     IDBOLCKNB => 1 << 5,
215     };
216    
217 dpavlin 12 =head2 tcidbclose
218    
219     my $success = tcidbclose( $idb );
220    
221 dpavlin 14 =head2 tcidbput
222    
223 dpavlin 17 my $success = tcidbput( $idb, $id, $text );
224 dpavlin 14
225 dpavlin 16 =head2 tcidbout
226    
227     my $success = tcidbout( $idb, $id );
228    
229 dpavlin 17 =head2 tcidbget
230    
231     my $text = tcidbget( $idb, $id );
232    
233 dpavlin 18 =head2 tcidbsearch
234    
235 dpavlin 22 my $ids = tcidbsearch( $idb, $word, IDBSSUBSTR );
236 dpavlin 18
237     =cut
238    
239     use constant {
240     IDBSSUBSTR => 0, # substring matching
241     IDBSPREFIX => 1, # prefix matching
242     IDBSSUFFIX => 2, # suffix matching
243     IDBSFULL => 3, # full matching
244     IDBSTOKEN => 4, # token matching
245     IDBSTOKPRE => 5, # token prefix matching
246     IDBSTOKSUF => 6, # token suffix matching
247     };
248    
249 dpavlin 22 =head2 tcidbsearch2
250    
251     my $ids = tcidbsearch2( $idb, $expr );
252    
253 dpavlin 19 =head2 tcidbiterinit
254    
255 dpavlin 20 my $success = tcidbiterinit( $idb );
256 dpavlin 19
257 dpavlin 20 =head2 tcidbiternext
258    
259     my $id = tcidbiternext( $idb );
260    
261 dpavlin 21 =head2 tcidbsync
262    
263     my $success = tcidbsync( $idb );
264    
265 dpavlin 23 =head2 tcidboptimize
266    
267     my $success = tcidboptimize( $idb );
268    
269 dpavlin 24 =head2 tcidbvanish
270    
271     my $success = tcidbvanish( $idb );
272    
273 dpavlin 25 =head2 tcidbcopy
274    
275     my $success = tcidbcopy( $idb, '/path/of/copy' );
276    
277 dpavlin 26 =head2 tcidbpath
278    
279     my $path = tcidbpath( $idb );
280    
281 dpavlin 27 =head2 tcidbrnum
282    
283     my $number_of_records = tcidbrnum( $idb );
284    
285 dpavlin 28 =head2 tcidbfsiz
286    
287     my $file_size = tcidbfsiz( $idb );
288    
289 dpavlin 19 =cut
290    
291 dpavlin 37
292 dpavlin 32 =head1 Q-gram API
293    
294     =head2 tcqdberrmsg
295    
296     my $message = tcqdberrmsg( $ecode );
297    
298     =head2 tcqdbnew
299    
300     my $qdb = tcqdbnew;
301    
302     =head2 tcqdbdel
303    
304     tcqdbdel( $qdb );
305    
306     =head2 tcqdbecode
307    
308     my $ecode = tcqdbecode( $qdb );
309    
310     =head2 tcqdbtune
311    
312     my $success = tcqdbtune( $qdb, $etnum, QDBTLARGE | QDBTDEFLATE );
313    
314     =cut
315    
316     use constant {
317     QDBTLARGE => 1 << 0,
318     QDBTDEFLATE => 1 << 1,
319     QDBTTCBS => 1 << 2,
320     };
321    
322     =head2 tcqdbsetcache
323    
324     my $success = tcqdbsetcache( $qdb, $icsiz, $lcnum );
325    
326     =head2 tcqdbsetfwmmax
327    
328 dpavlin 37 my $success = tcqdbsetfwmmax( $qdb, $fwmax );
329 dpavlin 32
330     =head2 tcqdbopen
331    
332     my $success = tcqdbopen( $qdb, 'casket', QDBOWRITER | QDBOCREAT );
333    
334     =cut
335    
336     use constant {
337     QDBOREADER => 1 << 0,
338     QDBOWRITER => 1 << 1,
339     QDBOCREAT => 1 << 2,
340     QDBOTRUNC => 1 << 3,
341     QDBONOLCK => 1 << 4,
342     QDBOLCKNB => 1 << 5,
343     };
344    
345     =head2 tcqdbclose
346    
347     my $success = tcqdbclose( $qdb );
348    
349     =head2 tcqdbput
350    
351     my $success = tcqdbput( $qdb, $id, $text );
352    
353     =head2 tcqdbout
354    
355     my $success = tcqdbout( $qdb, $id );
356    
357     =head2 tcqdbsearch
358    
359     my $ids = tcqdbsearch( $qdb, $word, QDBSSUBSTR );
360    
361     =cut
362    
363     use constant {
364     QDBSSUBSTR => 0, # substring matching
365     QDBSPREFIX => 1, # prefix matching
366     QDBSUFFIX => 2, # suffix matching
367     QDBFULL => 3, # full matching
368     QDBTOKEN => 4, # token matching
369     QDBTOKPRE => 5, # token prefix matching
370     QDBTOKSUF => 6, # token suffix matching
371     };
372    
373     =head2 tcqdbsync
374    
375     my $success = tcqdbsync( $qdb );
376    
377     =head2 tcqdboptimize
378    
379     my $success = tcqdboptimize( $qdb );
380    
381     =head2 tcqdbvanish
382    
383     my $success = tcqdbvanish( $qdb );
384    
385     =head2 tcqdbcopy
386    
387     my $success = tcqdbcopy( $qdb, '/path/of/copy' );
388    
389     =head2 tcqdbpath
390    
391     my $path = tcqdbpath( $qdb );
392    
393     =head2 tcqdbtnum
394    
395     my $number_of_records = tcqdbtnum( $qdb );
396    
397     =head2 tcqdbfsiz
398    
399     my $file_size = tcqdbtsiz( $qdb );
400    
401 dpavlin 37
402     =head1 Simple API
403    
404     =head2 tcjdberrmsg
405    
406     my $message = tcjdberrmsg( $ecode );
407    
408     =head2 tcjdbnew
409    
410     my $jdb = tcjdbnew;
411    
412     =head2 tcjdbdel
413    
414     tcjdbdel( $jdb );
415    
416     =head2 tcjdbecode
417    
418     my $ecode = tcjdbecode( $jdb );
419    
420     =head2 tcjdbtune
421    
422     my $success = tcjdbtune( $jdb, $ernum, $etnum, $iusiz, JDBTLARGE | JDBTDEFLATE );
423    
424 dpavlin 32 =cut
425    
426 dpavlin 37 use constant {
427     JDBTLARGE => 1 << 0,
428     JDBTDEFLATE => 1 << 1,
429     JDBTTCBS => 1 << 2,
430     };
431    
432     =head2 tcjdbsetcache
433    
434     my $success = tcjdbsetcache( $jdb, $icsiz, $lcnum );
435    
436     =head2 tcjdbsetfwmmax
437    
438     my $success = tcjdbsetfwmmax( $jdb, $fwmax );
439    
440     =head2 tcjdbopen
441    
442     my $success = tcjdbopen( $jdb, 'casket', JDBOWRITER | JDBOCREAT );
443    
444     =cut
445    
446     use constant {
447     JDBOREADER => 1 << 0,
448     JDBOWRITER => 1 << 1,
449     JDBOCREAT => 1 << 2,
450     JDBOTRUNC => 1 << 3,
451     JDBONOLCK => 1 << 4,
452     JDBOLCKNB => 1 << 5,
453     };
454    
455     =head2 tcjdbclose
456    
457     my $success = tcjdbclose( $jdb );
458    
459     =head2 tcjdbput
460    
461     my $success = tcjdbput( $jdb, $id, $text );
462    
463     =head2 tcjdbput2
464    
465     my $success = tcjdbput2( $jdb, $id, $text );
466    
467     =head2 tcjdbout
468    
469     my $success = tcjdbout( $jdb, $id );
470    
471     =head2 tcjdbsearch
472    
473     my $ids = tcjdbsearch( $jdb, $word, JDBSSUBSTR );
474    
475     =cut
476    
477     use constant {
478     JDBSSUBSTR => 0, # substring matching
479     JDBSPREFIX => 1, # prefix matching
480     JDBSUFFIX => 2, # suffix matching
481     JDBFULL => 3, # full matching
482     JDBTOKEN => 4, # token matching
483     JDBTOKPRE => 5, # token prefix matching
484     JDBTOKSUF => 6, # token suffix matching
485     };
486    
487     =head2 tcjdbsync
488    
489     my $success = tcjdbsync( $jdb );
490    
491     =head2 tcjdboptimize
492    
493     my $success = tcjdboptimize( $jdb );
494    
495     =head2 tcjdbvanish
496    
497     my $success = tcjdbvanish( $jdb );
498    
499     =head2 tcjdbcopy
500    
501     my $success = tcjdbcopy( $jdb, '/path/of/copy' );
502    
503     =head2 tcjdbpath
504    
505     my $path = tcjdbpath( $jdb );
506    
507     =head2 tcjdbtnum
508    
509     my $number_of_records = tcjdbtnum( $jdb );
510    
511     =head2 tcjdbfsiz
512    
513     my $file_size = tcjdbtsiz( $jdb );
514    
515     =cut
516    
517 dpavlin 5 =head1 KNOWN BUGS
518 dpavlin 1
519 dpavlin 5 Low-level functions often just die when called on invalid (or deleted) database
520    
521     =cut
522    
523 dpavlin 1 1;

  ViewVC Help
Powered by ViewVC 1.1.26