fix image text
[pear] / Xapian.php
1 <?php
2
3 /* ----------------------------------------------------------------------------
4  * This file was automatically generated by SWIG (http://www.swig.org).
5  * Version 3.0.13
6  *
7  * This file is not intended to be easily readable and contains a number of
8  * coding conventions designed to improve portability and efficiency. Do not make
9  * changes to this file unless you know what you are doing--modify the SWIG
10  * interface file instead.
11  * ----------------------------------------------------------------------------- */
12
13 // Try to load our extension if it's not already loaded.
14 if (!extension_loaded('xapian')) {
15   if (strtolower(substr(PHP_OS, 0, 3)) === 'win') {
16     if (!dl('php_xapian.dll')) return;
17   } else {
18     // PHP_SHLIB_SUFFIX gives 'dylib' on MacOS X but modules are 'so'.
19     if (PHP_SHLIB_SUFFIX === 'dylib') {
20       if (!dl('xapian.so')) return;
21     } else {
22       if (!dl('xapian.'.PHP_SHLIB_SUFFIX)) return;
23     }
24   }
25 }
26
27
28
29 abstract class Xapian {
30         static function version_string() {
31                 return version_string();
32         }
33
34         static function major_version() {
35                 return major_version();
36         }
37
38         static function minor_version() {
39                 return minor_version();
40         }
41
42         static function revision() {
43                 return revision();
44         }
45
46         const BAD_VALUENO = BAD_VALUENO;
47
48         const DB_CREATE = DB_CREATE;
49
50         const DB_CREATE_OR_OPEN = DB_CREATE_OR_OPEN;
51
52         const DB_CREATE_OR_OVERWRITE = DB_CREATE_OR_OVERWRITE;
53
54         const DB_OPEN = DB_OPEN;
55
56         const DB_NO_SYNC = DB_NO_SYNC;
57
58         const DB_FULL_SYNC = DB_FULL_SYNC;
59
60         const DB_DANGEROUS = DB_DANGEROUS;
61
62         const DB_NO_TERMLIST = DB_NO_TERMLIST;
63
64         const DB_BACKEND_CHERT = DB_BACKEND_CHERT;
65
66         const DB_BACKEND_GLASS = DB_BACKEND_GLASS;
67
68         const DB_BACKEND_INMEMORY = DB_BACKEND_INMEMORY;
69
70         const DB_BACKEND_STUB = DB_BACKEND_STUB;
71
72         const DB_RETRY_LOCK = DB_RETRY_LOCK;
73
74         const DBCHECK_SHORT_TREE = DBCHECK_SHORT_TREE;
75
76         const DBCHECK_FULL_TREE = DBCHECK_FULL_TREE;
77
78         const DBCHECK_SHOW_FREELIST = DBCHECK_SHOW_FREELIST;
79
80         const DBCHECK_SHOW_STATS = DBCHECK_SHOW_STATS;
81
82         const DBCHECK_FIX = DBCHECK_FIX;
83
84         const DBCOMPACT_MULTIPASS = DBCOMPACT_MULTIPASS;
85
86         const DBCOMPACT_NO_RENUMBER = DBCOMPACT_NO_RENUMBER;
87
88         const DBCOMPACT_SINGLE_FILE = DBCOMPACT_SINGLE_FILE;
89
90         const DOC_ASSUME_VALID = DOC_ASSUME_VALID;
91
92         const RP_SUFFIX = RP_SUFFIX;
93
94         const RP_REPEATED = RP_REPEATED;
95
96         const RP_DATE_PREFER_MDY = RP_DATE_PREFER_MDY;
97
98         static function sortable_serialise($value) {
99                 return sortable_serialise($value);
100         }
101
102         static function sortable_unserialise($serialised) {
103                 return sortable_unserialise($serialised);
104         }
105
106         static function miles_to_metres($miles) {
107                 return miles_to_metres($miles);
108         }
109
110         static function metres_to_miles($metres) {
111                 return metres_to_miles($metres);
112         }
113
114         static function auto_open_stub($file,$action=null) {
115                 switch (func_num_args()) {
116                 case 1: $r=auto_open_stub($file); break;
117                 default: $r=auto_open_stub($file,$action);
118                 }
119                 if (!is_resource($r)) return $r;
120                 switch (get_resource_type($r)) {
121                 case '_p_Xapian__WritableDatabase': return new XapianWritableDatabase($r);
122                 default: return new XapianDatabase($r);
123                 }
124         }
125
126         static function inmemory_open() {
127                 $r=inmemory_open();
128                 if (is_resource($r)) {
129                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
130                         if (class_exists($c)) return new $c($r);
131                         return new XapianWritableDatabase($r);
132                 }
133                 return $r;
134         }
135
136         static function chert_open($dir,$action=null,$block_size=0) {
137                 switch (func_num_args()) {
138                 case 1: $r=chert_open($dir); break;
139                 default: $r=chert_open($dir,$action,$block_size);
140                 }
141                 if (!is_resource($r)) return $r;
142                 switch (get_resource_type($r)) {
143                 case '_p_Xapian__WritableDatabase': return new XapianWritableDatabase($r);
144                 default: return new XapianDatabase($r);
145                 }
146         }
147
148         static function remote_open($host_or_program,$port_or_args,$timeout=null,$connect_timeout=null) {
149                 switch (func_num_args()) {
150                 case 2: $r=remote_open($host_or_program,$port_or_args); break;
151                 case 3: $r=remote_open($host_or_program,$port_or_args,$timeout); break;
152                 default: $r=remote_open($host_or_program,$port_or_args,$timeout,$connect_timeout);
153                 }
154                 if (is_resource($r)) {
155                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
156                         if (class_exists($c)) return new $c($r);
157                         return new XapianDatabase($r);
158                 }
159                 return $r;
160         }
161
162         static function remote_open_writable($host_or_program,$port_or_args,$timeout=null,$connect_timeout_or_flags=null,$flags=null) {
163                 switch (func_num_args()) {
164                 case 2: $r=remote_open_writable($host_or_program,$port_or_args); break;
165                 case 3: $r=remote_open_writable($host_or_program,$port_or_args,$timeout); break;
166                 case 4: $r=remote_open_writable($host_or_program,$port_or_args,$timeout,$connect_timeout_or_flags); break;
167                 default: $r=remote_open_writable($host_or_program,$port_or_args,$timeout,$connect_timeout_or_flags,$flags);
168                 }
169                 if (is_resource($r)) {
170                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
171                         if (class_exists($c)) return new $c($r);
172                         return new XapianWritableDatabase($r);
173                 }
174                 return $r;
175         }
176
177         static function BAD_VALUENO_get() {
178                 return BAD_VALUENO_get();
179         }
180 }
181
182 /* PHP Proxy Classes */
183 class XapianPositionIterator implements Iterator {
184         public $_cPtr=null;
185         protected $_pData=array();
186
187         function __set($var,$value) {
188                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
189                 $this->_pData[$var] = $value;
190         }
191
192         function __get($var) {
193                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
194                 return $this->_pData[$var];
195         }
196
197         function __isset($var) {
198                 if ($var === 'thisown') return true;
199                 return array_key_exists($var, $this->_pData);
200         }
201
202         function __construct($res=null) {
203                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__PositionIterator') {
204                         $this->_cPtr=$res;
205                         return;
206                 }
207                 $this->_cPtr=new_PositionIterator();
208         }
209
210         function skip_to($termpos) {
211                 PositionIterator_skip_to($this->_cPtr,$termpos);
212         }
213
214         function get_description() {
215                 return PositionIterator_get_description($this->_cPtr);
216         }
217
218         function key() {
219                 $r=PositionIterator_key($this->_cPtr);
220                 if (is_resource($r)) {
221                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
222                         if (class_exists($c)) return new $c($r);
223                         return new XapianPositionIterator($r);
224                 }
225                 return $r;
226         }
227
228         function current() {
229                 return PositionIterator_current($this->_cPtr);
230         }
231
232         function valid() {
233                 return PositionIterator_valid($this->_cPtr);
234         }
235
236         function rewind() {
237                 PositionIterator_rewind($this->_cPtr);
238         }
239
240         function equals(XapianPositionIterator $o) {
241                 return PositionIterator_equals($this->_cPtr,$o);
242         }
243
244         function get_termpos() {
245                 return PositionIterator_get_termpos($this->_cPtr);
246         }
247
248         function next() {
249                 PositionIterator_next($this->_cPtr);
250         }
251 }
252
253 class XapianPostingIterator implements Iterator {
254         public $_cPtr=null;
255         protected $_pData=array();
256
257         function __set($var,$value) {
258                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
259                 $this->_pData[$var] = $value;
260         }
261
262         function __get($var) {
263                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
264                 return $this->_pData[$var];
265         }
266
267         function __isset($var) {
268                 if ($var === 'thisown') return true;
269                 return array_key_exists($var, $this->_pData);
270         }
271
272         function __construct($res=null) {
273                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__PostingIterator') {
274                         $this->_cPtr=$res;
275                         return;
276                 }
277                 $this->_cPtr=new_PostingIterator();
278         }
279
280         function get_wdf() {
281                 return PostingIterator_get_wdf($this->_cPtr);
282         }
283
284         function get_doclength() {
285                 return PostingIterator_get_doclength($this->_cPtr);
286         }
287
288         function get_unique_terms() {
289                 return PostingIterator_get_unique_terms($this->_cPtr);
290         }
291
292         function positionlist_begin() {
293                 $r=PostingIterator_positionlist_begin($this->_cPtr);
294                 if (is_resource($r)) {
295                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
296                         if (class_exists($c)) return new $c($r);
297                         return new XapianPositionIterator($r);
298                 }
299                 return $r;
300         }
301
302         function positionlist_end() {
303                 $r=PostingIterator_positionlist_end($this->_cPtr);
304                 if (is_resource($r)) {
305                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
306                         if (class_exists($c)) return new $c($r);
307                         return new XapianPositionIterator($r);
308                 }
309                 return $r;
310         }
311
312         function skip_to($did) {
313                 PostingIterator_skip_to($this->_cPtr,$did);
314         }
315
316         function get_description() {
317                 return PostingIterator_get_description($this->_cPtr);
318         }
319
320         function key() {
321                 $r=PostingIterator_key($this->_cPtr);
322                 if (is_resource($r)) {
323                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
324                         if (class_exists($c)) return new $c($r);
325                         return new XapianPostingIterator($r);
326                 }
327                 return $r;
328         }
329
330         function current() {
331                 return PostingIterator_current($this->_cPtr);
332         }
333
334         function valid() {
335                 return PostingIterator_valid($this->_cPtr);
336         }
337
338         function rewind() {
339                 PostingIterator_rewind($this->_cPtr);
340         }
341
342         function equals(XapianPostingIterator $o) {
343                 return PostingIterator_equals($this->_cPtr,$o);
344         }
345
346         function get_docid() {
347                 return PostingIterator_get_docid($this->_cPtr);
348         }
349
350         function next() {
351                 PostingIterator_next($this->_cPtr);
352         }
353 }
354
355 class XapianTermIterator implements Iterator {
356         public $_cPtr=null;
357         protected $_pData=array();
358
359         function __set($var,$value) {
360                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
361                 $this->_pData[$var] = $value;
362         }
363
364         function __get($var) {
365                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
366                 return $this->_pData[$var];
367         }
368
369         function __isset($var) {
370                 if ($var === 'thisown') return true;
371                 return array_key_exists($var, $this->_pData);
372         }
373
374         function __construct($res=null) {
375                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__TermIterator') {
376                         $this->_cPtr=$res;
377                         return;
378                 }
379                 $this->_cPtr=new_TermIterator();
380         }
381
382         function get_wdf() {
383                 return TermIterator_get_wdf($this->_cPtr);
384         }
385
386         function get_termfreq() {
387                 return TermIterator_get_termfreq($this->_cPtr);
388         }
389
390         function positionlist_count() {
391                 return TermIterator_positionlist_count($this->_cPtr);
392         }
393
394         function positionlist_begin() {
395                 $r=TermIterator_positionlist_begin($this->_cPtr);
396                 if (is_resource($r)) {
397                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
398                         if (class_exists($c)) return new $c($r);
399                         return new XapianPositionIterator($r);
400                 }
401                 return $r;
402         }
403
404         function positionlist_end() {
405                 $r=TermIterator_positionlist_end($this->_cPtr);
406                 if (is_resource($r)) {
407                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
408                         if (class_exists($c)) return new $c($r);
409                         return new XapianPositionIterator($r);
410                 }
411                 return $r;
412         }
413
414         function skip_to($term) {
415                 TermIterator_skip_to($this->_cPtr,$term);
416         }
417
418         function get_description() {
419                 return TermIterator_get_description($this->_cPtr);
420         }
421
422         function key() {
423                 $r=TermIterator_key($this->_cPtr);
424                 if (is_resource($r)) {
425                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
426                         if (class_exists($c)) return new $c($r);
427                         return new XapianTermIterator($r);
428                 }
429                 return $r;
430         }
431
432         function current() {
433                 return TermIterator_current($this->_cPtr);
434         }
435
436         function valid() {
437                 return TermIterator_valid($this->_cPtr);
438         }
439
440         function rewind() {
441                 TermIterator_rewind($this->_cPtr);
442         }
443
444         function equals(XapianTermIterator $o) {
445                 return TermIterator_equals($this->_cPtr,$o);
446         }
447
448         function get_term() {
449                 return TermIterator_get_term($this->_cPtr);
450         }
451
452         function next() {
453                 TermIterator_next($this->_cPtr);
454         }
455 }
456
457 class XapianValueIterator implements Iterator {
458         public $_cPtr=null;
459         protected $_pData=array();
460
461         function __set($var,$value) {
462                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
463                 $this->_pData[$var] = $value;
464         }
465
466         function __get($var) {
467                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
468                 return $this->_pData[$var];
469         }
470
471         function __isset($var) {
472                 if ($var === 'thisown') return true;
473                 return array_key_exists($var, $this->_pData);
474         }
475
476         function __construct($res=null) {
477                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__ValueIterator') {
478                         $this->_cPtr=$res;
479                         return;
480                 }
481                 $this->_cPtr=new_ValueIterator();
482         }
483
484         function get_docid() {
485                 return ValueIterator_get_docid($this->_cPtr);
486         }
487
488         function get_valueno() {
489                 return ValueIterator_get_valueno($this->_cPtr);
490         }
491
492         function skip_to($docid_or_slot) {
493                 ValueIterator_skip_to($this->_cPtr,$docid_or_slot);
494         }
495
496         function check($docid) {
497                 return ValueIterator_check($this->_cPtr,$docid);
498         }
499
500         function get_description() {
501                 return ValueIterator_get_description($this->_cPtr);
502         }
503
504         function key() {
505                 $r=ValueIterator_key($this->_cPtr);
506                 if (is_resource($r)) {
507                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
508                         if (class_exists($c)) return new $c($r);
509                         return new XapianValueIterator($r);
510                 }
511                 return $r;
512         }
513
514         function current() {
515                 return ValueIterator_current($this->_cPtr);
516         }
517
518         function valid() {
519                 return ValueIterator_valid($this->_cPtr);
520         }
521
522         function rewind() {
523                 ValueIterator_rewind($this->_cPtr);
524         }
525
526         function equals(XapianValueIterator $o) {
527                 return ValueIterator_equals($this->_cPtr,$o);
528         }
529
530         function get_value() {
531                 return ValueIterator_get_value($this->_cPtr);
532         }
533
534         function next() {
535                 ValueIterator_next($this->_cPtr);
536         }
537 }
538
539 class XapianDocument {
540         public $_cPtr=null;
541         protected $_pData=array();
542
543         function __set($var,$value) {
544                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
545                 $this->_pData[$var] = $value;
546         }
547
548         function __get($var) {
549                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
550                 return $this->_pData[$var];
551         }
552
553         function __isset($var) {
554                 if ($var === 'thisown') return true;
555                 return array_key_exists($var, $this->_pData);
556         }
557
558         function __construct($res=null) {
559                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__Document') {
560                         $this->_cPtr=$res;
561                         return;
562                 }
563                 $this->_cPtr=new_Document();
564         }
565
566         function get_value($slot) {
567                 return Document_get_value($this->_cPtr,$slot);
568         }
569
570         function add_value($slot,$value) {
571                 Document_add_value($this->_cPtr,$slot,$value);
572         }
573
574         function remove_value($slot) {
575                 Document_remove_value($this->_cPtr,$slot);
576         }
577
578         function clear_values() {
579                 Document_clear_values($this->_cPtr);
580         }
581
582         function get_data() {
583                 return Document_get_data($this->_cPtr);
584         }
585
586         function set_data($data) {
587                 Document_set_data($this->_cPtr,$data);
588         }
589
590         function add_posting($tname,$tpos,$wdfinc=1) {
591                 Document_add_posting($this->_cPtr,$tname,$tpos,$wdfinc);
592         }
593
594         function add_term($tname,$wdfinc=1) {
595                 Document_add_term($this->_cPtr,$tname,$wdfinc);
596         }
597
598         function add_boolean_term($term) {
599                 Document_add_boolean_term($this->_cPtr,$term);
600         }
601
602         function remove_posting($tname,$tpos,$wdfdec=1) {
603                 Document_remove_posting($this->_cPtr,$tname,$tpos,$wdfdec);
604         }
605
606         function remove_postings($term,$term_pos_first,$term_pos_last,$wdf_dec=1) {
607                 return Document_remove_postings($this->_cPtr,$term,$term_pos_first,$term_pos_last,$wdf_dec);
608         }
609
610         function remove_term($tname) {
611                 Document_remove_term($this->_cPtr,$tname);
612         }
613
614         function clear_terms() {
615                 Document_clear_terms($this->_cPtr);
616         }
617
618         function termlist_count() {
619                 return Document_termlist_count($this->_cPtr);
620         }
621
622         function termlist_begin() {
623                 $r=Document_termlist_begin($this->_cPtr);
624                 if (is_resource($r)) {
625                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
626                         if (class_exists($c)) return new $c($r);
627                         return new XapianTermIterator($r);
628                 }
629                 return $r;
630         }
631
632         function termlist_end() {
633                 $r=Document_termlist_end($this->_cPtr);
634                 if (is_resource($r)) {
635                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
636                         if (class_exists($c)) return new $c($r);
637                         return new XapianTermIterator($r);
638                 }
639                 return $r;
640         }
641
642         function values_count() {
643                 return Document_values_count($this->_cPtr);
644         }
645
646         function values_begin() {
647                 $r=Document_values_begin($this->_cPtr);
648                 if (is_resource($r)) {
649                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
650                         if (class_exists($c)) return new $c($r);
651                         return new XapianValueIterator($r);
652                 }
653                 return $r;
654         }
655
656         function values_end() {
657                 $r=Document_values_end($this->_cPtr);
658                 if (is_resource($r)) {
659                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
660                         if (class_exists($c)) return new $c($r);
661                         return new XapianValueIterator($r);
662                 }
663                 return $r;
664         }
665
666         function get_docid() {
667                 return Document_get_docid($this->_cPtr);
668         }
669
670         function serialise() {
671                 return Document_serialise($this->_cPtr);
672         }
673
674         static function unserialise($serialised) {
675                 $r=Document_unserialise($serialised);
676                 if (is_resource($r)) {
677                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
678                         if (class_exists($c)) return new $c($r);
679                         return new XapianDocument($r);
680                 }
681                 return $r;
682         }
683
684         function get_description() {
685                 return Document_get_description($this->_cPtr);
686         }
687 }
688
689 class XapianRegistry {
690         public $_cPtr=null;
691         protected $_pData=array();
692
693         function __set($var,$value) {
694                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
695                 $this->_pData[$var] = $value;
696         }
697
698         function __get($var) {
699                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
700                 return $this->_pData[$var];
701         }
702
703         function __isset($var) {
704                 if ($var === 'thisown') return true;
705                 return array_key_exists($var, $this->_pData);
706         }
707
708         function __construct($res=null) {
709                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__Registry') {
710                         $this->_cPtr=$res;
711                         return;
712                 }
713                 $this->_cPtr=new_Registry();
714         }
715
716         function register_weighting_scheme(XapianWeight $wt) {
717                 Registry_register_weighting_scheme($this->_cPtr,$wt);
718         }
719
720         function get_weighting_scheme($name) {
721                 $r=Registry_get_weighting_scheme($this->_cPtr,$name);
722                 $this->_cPtr = $r;
723                 return $this;
724         }
725
726         function register_posting_source(XapianPostingSource $source) {
727                 Registry_register_posting_source($this->_cPtr,$source);
728         }
729
730         function get_posting_source($name) {
731                 $r=Registry_get_posting_source($this->_cPtr,$name);
732                 $this->_cPtr = $r;
733                 return $this;
734         }
735
736         function register_match_spy(XapianMatchSpy $spy) {
737                 Registry_register_match_spy($this->_cPtr,$spy);
738         }
739
740         function get_match_spy($name) {
741                 $r=Registry_get_match_spy($this->_cPtr,$name);
742                 $this->_cPtr = $r;
743                 return $this;
744         }
745
746         function register_lat_long_metric($metric) {
747                 Registry_register_lat_long_metric($this->_cPtr,$metric);
748         }
749
750         function get_lat_long_metric($name) {
751                 $r=Registry_get_lat_long_metric($this->_cPtr,$name);
752                 $this->_cPtr = $r;
753                 return $this;
754         }
755 }
756
757 class XapianQuery {
758         public $_ps=null;
759         public $_cPtr=null;
760         protected $_pData=array();
761
762         function __set($var,$value) {
763                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
764                 $this->_pData[$var] = $value;
765         }
766
767         function __get($var) {
768                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
769                 return $this->_pData[$var];
770         }
771
772         function __isset($var) {
773                 if ($var === 'thisown') return true;
774                 return array_key_exists($var, $this->_pData);
775         }
776
777         static function MatchNothing() {
778                 $r=Query_MatchNothing_get();
779                 if (is_resource($r)) {
780                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
781                         if (class_exists($c)) return new $c($r);
782                         return new XapianQuery($r);
783                 }
784                 return $r;
785         }
786
787         static function MatchAll() {
788                 $r=Query_MatchAll_get();
789                 if (is_resource($r)) {
790                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
791                         if (class_exists($c)) return new $c($r);
792                         return new XapianQuery($r);
793                 }
794                 return $r;
795         }
796
797         const OP_AND = 0;
798
799         const OP_OR = 1;
800
801         const OP_AND_NOT = 2;
802
803         const OP_XOR = 3;
804
805         const OP_AND_MAYBE = 4;
806
807         const OP_FILTER = 5;
808
809         const OP_NEAR = 6;
810
811         const OP_PHRASE = 7;
812
813         const OP_VALUE_RANGE = 8;
814
815         const OP_SCALE_WEIGHT = 9;
816
817         const OP_ELITE_SET = 10;
818
819         const OP_VALUE_GE = 11;
820
821         const OP_VALUE_LE = 12;
822
823         const OP_SYNONYM = 13;
824
825         const OP_MAX = 14;
826
827         const OP_WILDCARD = 15;
828
829         const OP_INVALID = 99;
830
831         const WILDCARD_LIMIT_ERROR = 0;
832
833         const WILDCARD_LIMIT_FIRST = Query_WILDCARD_LIMIT_FIRST;
834
835         const WILDCARD_LIMIT_MOST_FREQUENT = Query_WILDCARD_LIMIT_MOST_FREQUENT;
836
837         function get_terms_begin() {
838                 $r=Query_get_terms_begin($this->_cPtr);
839                 if (is_resource($r)) {
840                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
841                         if (class_exists($c)) return new $c($r);
842                         return new XapianTermIterator($r);
843                 }
844                 return $r;
845         }
846
847         function get_terms_end() {
848                 $r=Query_get_terms_end($this->_cPtr);
849                 if (is_resource($r)) {
850                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
851                         if (class_exists($c)) return new $c($r);
852                         return new XapianTermIterator($r);
853                 }
854                 return $r;
855         }
856
857         function get_unique_terms_begin() {
858                 $r=Query_get_unique_terms_begin($this->_cPtr);
859                 if (is_resource($r)) {
860                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
861                         if (class_exists($c)) return new $c($r);
862                         return new XapianTermIterator($r);
863                 }
864                 return $r;
865         }
866
867         function get_unique_terms_end() {
868                 $r=Query_get_unique_terms_end($this->_cPtr);
869                 if (is_resource($r)) {
870                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
871                         if (class_exists($c)) return new $c($r);
872                         return new XapianTermIterator($r);
873                 }
874                 return $r;
875         }
876
877         function get_length() {
878                 return Query_get_length($this->_cPtr);
879         }
880
881         function is_empty() {
882                 return Query_is_empty($this->_cPtr);
883         }
884
885         function serialise() {
886                 return Query_serialise($this->_cPtr);
887         }
888
889         static function unserialise($serialised,$reg=null) {
890                 switch (func_num_args()) {
891                 case 1: $r=Query_unserialise($serialised); break;
892                 default: $r=Query_unserialise($serialised,$reg);
893                 }
894                 if (is_resource($r)) {
895                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
896                         if (class_exists($c)) return new $c($r);
897                         return new XapianQuery($r);
898                 }
899                 return $r;
900         }
901
902         function get_type() {
903                 return Query_get_type($this->_cPtr);
904         }
905
906         function get_num_subqueries() {
907                 return Query_get_num_subqueries($this->_cPtr);
908         }
909
910         function get_subquery($n) {
911                 $r=Query_get_subquery($this->_cPtr,$n);
912                 if (is_resource($r)) {
913                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
914                         if (class_exists($c)) return new $c($r);
915                         return new XapianQuery($r);
916                 }
917                 return $r;
918         }
919
920         function get_description() {
921                 return Query_get_description($this->_cPtr);
922         }
923
924         function __construct($term_or_source_or_factor_or_op_=null,$wqf_or_subquery_or_a_or_slot_or_pattern_or_qbegin=null,$pos_or_factor_or_b_or_range_limit_or_range_lower_or_max_expansion_or_parameter=null,$range_upper_or_max_type=null,$combiner=null) {
925                 if ($term_or_source_or_factor_or_op_ instanceof XapianPostingSource) {
926                         $this->_ps[]=$term_or_source_or_factor_or_op_;
927                 } else if (is_array($wqf_or_subquery_or_a_or_slot_or_pattern_or_qbegin)) {
928                         foreach ($wqf_or_subquery_or_a_or_slot_or_pattern_or_qbegin as $xxx) {
929                                 if ($xxx instanceof XapianQuery) $this->_ps[]=$xxx->_ps;
930                         }
931                 } else {
932                         if ($term_or_source_or_factor_or_op_ instanceof XapianQuery) $this->_ps[]=$term_or_source_or_factor_or_op_->_ps;
933                         if ($wqf_or_subquery_or_a_or_slot_or_pattern_or_qbegin instanceof XapianQuery) $this->_ps[]=$wqf_or_subquery_or_a_or_slot_or_pattern_or_qbegin->_ps;
934                         if ($pos_or_factor_or_b_or_range_limit_or_range_lower_or_max_expansion_or_parameter instanceof XapianQuery) $this->_ps[]=$pos_or_factor_or_b_or_range_limit_or_range_lower_or_max_expansion_or_parameter->_ps;
935                 }
936                 if (is_resource($term_or_source_or_factor_or_op_) && get_resource_type($term_or_source_or_factor_or_op_) === '_p_Xapian__Query') {
937                         $this->_cPtr=$term_or_source_or_factor_or_op_;
938                         return;
939                 }
940                 switch (func_num_args()) {
941                 case 0: $this->_cPtr=new_Query(); break;
942                 case 1: $this->_cPtr=new_Query($term_or_source_or_factor_or_op_); break;
943                 case 2: $this->_cPtr=new_Query($term_or_source_or_factor_or_op_,$wqf_or_subquery_or_a_or_slot_or_pattern_or_qbegin); break;
944                 case 3: $this->_cPtr=new_Query($term_or_source_or_factor_or_op_,$wqf_or_subquery_or_a_or_slot_or_pattern_or_qbegin,$pos_or_factor_or_b_or_range_limit_or_range_lower_or_max_expansion_or_parameter); break;
945                 case 4: $this->_cPtr=new_Query($term_or_source_or_factor_or_op_,$wqf_or_subquery_or_a_or_slot_or_pattern_or_qbegin,$pos_or_factor_or_b_or_range_limit_or_range_lower_or_max_expansion_or_parameter,$range_upper_or_max_type); break;
946                 default: $this->_cPtr=new_Query($term_or_source_or_factor_or_op_,$wqf_or_subquery_or_a_or_slot_or_pattern_or_qbegin,$pos_or_factor_or_b_or_range_limit_or_range_lower_or_max_expansion_or_parameter,$range_upper_or_max_type,$combiner);
947                 }
948         }
949 }
950
951 abstract class XapianStemImplementation {
952         public $_cPtr=null;
953         protected $_pData=array();
954
955         function __set($var,$value) {
956                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
957                 $this->_pData[$var] = $value;
958         }
959
960         function __get($var) {
961                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
962                 return $this->_pData[$var];
963         }
964
965         function __isset($var) {
966                 if ($var === 'thisown') return true;
967                 return array_key_exists($var, $this->_pData);
968         }
969
970         function __construct($res=null) {
971                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__StemImplementation') {
972                         $this->_cPtr=$res;
973                         return;
974                 }
975                 if (get_class($this) === 'XapianStemImplementation') {
976                         $_this = null;
977                 } else {
978                         $_this = $this;
979                 }
980                 $this->_cPtr=new_StemImplementation($_this);
981         }
982
983         function apply($word) {
984                 return StemImplementation_apply($this->_cPtr,$word);
985         }
986
987         function get_description() {
988                 return StemImplementation_get_description($this->_cPtr);
989         }
990 }
991
992 class XapianStem {
993         public $_cPtr=null;
994         protected $_pData=array();
995
996         function __set($var,$value) {
997                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
998                 $this->_pData[$var] = $value;
999         }
1000
1001         function __get($var) {
1002                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
1003                 return $this->_pData[$var];
1004         }
1005
1006         function __isset($var) {
1007                 if ($var === 'thisown') return true;
1008                 return array_key_exists($var, $this->_pData);
1009         }
1010
1011         function __construct($language_or_p,$fallback=null) {
1012                 if (is_resource($language_or_p) && get_resource_type($language_or_p) === '_p_Xapian__Stem') {
1013                         $this->_cPtr=$language_or_p;
1014                         return;
1015                 }
1016                 switch (func_num_args()) {
1017                 case 1: $this->_cPtr=new_Stem($language_or_p); break;
1018                 default: $this->_cPtr=new_Stem($language_or_p,$fallback);
1019                 }
1020         }
1021
1022         function apply($word) {
1023                 return Stem_apply($this->_cPtr,$word);
1024         }
1025
1026         function is_none() {
1027                 return Stem_is_none($this->_cPtr);
1028         }
1029
1030         function get_description() {
1031                 return Stem_get_description($this->_cPtr);
1032         }
1033
1034         static function get_available_languages() {
1035                 return Stem_get_available_languages();
1036         }
1037 }
1038
1039 class XapianTermGenerator {
1040         protected $_stopper=null;
1041         public $_cPtr=null;
1042         protected $_pData=array();
1043
1044         function __set($var,$value) {
1045                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
1046                 $this->_pData[$var] = $value;
1047         }
1048
1049         function __get($var) {
1050                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
1051                 return $this->_pData[$var];
1052         }
1053
1054         function __isset($var) {
1055                 if ($var === 'thisown') return true;
1056                 return array_key_exists($var, $this->_pData);
1057         }
1058
1059         function __construct($res=null) {
1060                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__TermGenerator') {
1061                         $this->_cPtr=$res;
1062                         return;
1063                 }
1064                 $this->_cPtr=new_TermGenerator();
1065         }
1066
1067         function set_stemmer(XapianStem $stemmer) {
1068                 TermGenerator_set_stemmer($this->_cPtr,$stemmer);
1069         }
1070
1071         function set_stopper(XapianStopper $stop=null) {
1072                 $this->_stopper=$stop;
1073                 TermGenerator_set_stopper($this->_cPtr,$stop);
1074         }
1075
1076         function set_document(XapianDocument $doc) {
1077                 TermGenerator_set_document($this->_cPtr,$doc);
1078         }
1079
1080         function get_document() {
1081                 $r=TermGenerator_get_document($this->_cPtr);
1082                 if (is_resource($r)) {
1083                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
1084                         if (class_exists($c)) return new $c($r);
1085                         return new XapianDocument($r);
1086                 }
1087                 return $r;
1088         }
1089
1090         function set_database(XapianDatabase $db) {
1091                 TermGenerator_set_database($this->_cPtr,$db);
1092         }
1093
1094         const FLAG_SPELLING = 128;
1095
1096         const FLAG_CJK_NGRAM = 2048;
1097
1098         const STEM_NONE = 0;
1099
1100         const STEM_SOME = TermGenerator_STEM_SOME;
1101
1102         const STEM_ALL = TermGenerator_STEM_ALL;
1103
1104         const STEM_ALL_Z = TermGenerator_STEM_ALL_Z;
1105
1106         const STEM_SOME_FULL_POS = TermGenerator_STEM_SOME_FULL_POS;
1107
1108         const STOP_NONE = 0;
1109
1110         const STOP_ALL = TermGenerator_STOP_ALL;
1111
1112         const STOP_STEMMED = TermGenerator_STOP_STEMMED;
1113
1114         function set_flags($toggle,$mask=null) {
1115                 switch (func_num_args()) {
1116                 case 1: $r=TermGenerator_set_flags($this->_cPtr,$toggle); break;
1117                 default: $r=TermGenerator_set_flags($this->_cPtr,$toggle,$mask);
1118                 }
1119                 return $r;
1120         }
1121
1122         function set_stemming_strategy($strategy) {
1123                 TermGenerator_set_stemming_strategy($this->_cPtr,$strategy);
1124         }
1125
1126         function set_stopper_strategy($strategy) {
1127                 TermGenerator_set_stopper_strategy($this->_cPtr,$strategy);
1128         }
1129
1130         function set_max_word_length($max_word_length) {
1131                 TermGenerator_set_max_word_length($this->_cPtr,$max_word_length);
1132         }
1133
1134         function index_text($text,$wdf_inc=1,$prefix=null) {
1135                 switch (func_num_args()) {
1136                 case 1: case 2: TermGenerator_index_text($this->_cPtr,$text,$wdf_inc); break;
1137                 default: TermGenerator_index_text($this->_cPtr,$text,$wdf_inc,$prefix);
1138                 }
1139         }
1140
1141         function index_text_without_positions($text,$wdf_inc=1,$prefix=null) {
1142                 switch (func_num_args()) {
1143                 case 1: case 2: TermGenerator_index_text_without_positions($this->_cPtr,$text,$wdf_inc); break;
1144                 default: TermGenerator_index_text_without_positions($this->_cPtr,$text,$wdf_inc,$prefix);
1145                 }
1146         }
1147
1148         function increase_termpos($delta=100) {
1149                 TermGenerator_increase_termpos($this->_cPtr,$delta);
1150         }
1151
1152         function get_termpos() {
1153                 return TermGenerator_get_termpos($this->_cPtr);
1154         }
1155
1156         function set_termpos($termpos) {
1157                 TermGenerator_set_termpos($this->_cPtr,$termpos);
1158         }
1159
1160         function get_description() {
1161                 return TermGenerator_get_description($this->_cPtr);
1162         }
1163 }
1164
1165 class XapianMSet {
1166         public $_cPtr=null;
1167         protected $_pData=array();
1168
1169         function __set($var,$value) {
1170                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
1171                 $this->_pData[$var] = $value;
1172         }
1173
1174         function __get($var) {
1175                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
1176                 return $this->_pData[$var];
1177         }
1178
1179         function __isset($var) {
1180                 if ($var === 'thisown') return true;
1181                 return array_key_exists($var, $this->_pData);
1182         }
1183
1184         function __construct($res=null) {
1185                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__MSet') {
1186                         $this->_cPtr=$res;
1187                         return;
1188                 }
1189                 $this->_cPtr=new_MSet();
1190         }
1191
1192         function convert_to_percent($weight_or_it) {
1193                 return MSet_convert_to_percent($this->_cPtr,$weight_or_it);
1194         }
1195
1196         function get_termfreq($term) {
1197                 return MSet_get_termfreq($this->_cPtr,$term);
1198         }
1199
1200         function get_termweight($term) {
1201                 return MSet_get_termweight($this->_cPtr,$term);
1202         }
1203
1204         function get_firstitem() {
1205                 return MSet_get_firstitem($this->_cPtr);
1206         }
1207
1208         function get_matches_lower_bound() {
1209                 return MSet_get_matches_lower_bound($this->_cPtr);
1210         }
1211
1212         function get_matches_estimated() {
1213                 return MSet_get_matches_estimated($this->_cPtr);
1214         }
1215
1216         function get_matches_upper_bound() {
1217                 return MSet_get_matches_upper_bound($this->_cPtr);
1218         }
1219
1220         function get_uncollapsed_matches_lower_bound() {
1221                 return MSet_get_uncollapsed_matches_lower_bound($this->_cPtr);
1222         }
1223
1224         function get_uncollapsed_matches_estimated() {
1225                 return MSet_get_uncollapsed_matches_estimated($this->_cPtr);
1226         }
1227
1228         function get_uncollapsed_matches_upper_bound() {
1229                 return MSet_get_uncollapsed_matches_upper_bound($this->_cPtr);
1230         }
1231
1232         function get_max_attained() {
1233                 return MSet_get_max_attained($this->_cPtr);
1234         }
1235
1236         function get_max_possible() {
1237                 return MSet_get_max_possible($this->_cPtr);
1238         }
1239
1240         const SNIPPET_BACKGROUND_MODEL = 1;
1241
1242         const SNIPPET_EXHAUSTIVE = 2;
1243
1244         const SNIPPET_EMPTY_WITHOUT_MATCH = 4;
1245
1246         const SNIPPET_CJK_NGRAM = 2048;
1247
1248         function snippet($text,$length=null,$stemmer=null,$flags=null,$hi_start=null,$hi_end=null,$omit=null) {
1249                 switch (func_num_args()) {
1250                 case 1: $r=MSet_snippet($this->_cPtr,$text); break;
1251                 case 2: $r=MSet_snippet($this->_cPtr,$text,$length); break;
1252                 case 3: $r=MSet_snippet($this->_cPtr,$text,$length,$stemmer); break;
1253                 case 4: $r=MSet_snippet($this->_cPtr,$text,$length,$stemmer,$flags); break;
1254                 case 5: $r=MSet_snippet($this->_cPtr,$text,$length,$stemmer,$flags,$hi_start); break;
1255                 case 6: $r=MSet_snippet($this->_cPtr,$text,$length,$stemmer,$flags,$hi_start,$hi_end); break;
1256                 default: $r=MSet_snippet($this->_cPtr,$text,$length,$stemmer,$flags,$hi_start,$hi_end,$omit);
1257                 }
1258                 return $r;
1259         }
1260
1261         function fetch($begin_or_item=null,$end=null) {
1262                 switch (func_num_args()) {
1263                 case 0: MSet_fetch($this->_cPtr); break;
1264                 case 1: MSet_fetch($this->_cPtr,$begin_or_item); break;
1265                 default: MSet_fetch($this->_cPtr,$begin_or_item,$end);
1266                 }
1267         }
1268
1269         function size() {
1270                 return MSet_size($this->_cPtr);
1271         }
1272
1273         function is_empty() {
1274                 return MSet_is_empty($this->_cPtr);
1275         }
1276
1277         function begin() {
1278                 $r=MSet_begin($this->_cPtr);
1279                 if (is_resource($r)) {
1280                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
1281                         if (class_exists($c)) return new $c($r);
1282                         return new XapianMSetIterator($r);
1283                 }
1284                 return $r;
1285         }
1286
1287         function end() {
1288                 $r=MSet_end($this->_cPtr);
1289                 if (is_resource($r)) {
1290                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
1291                         if (class_exists($c)) return new $c($r);
1292                         return new XapianMSetIterator($r);
1293                 }
1294                 return $r;
1295         }
1296
1297         function back() {
1298                 $r=MSet_back($this->_cPtr);
1299                 if (is_resource($r)) {
1300                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
1301                         if (class_exists($c)) return new $c($r);
1302                         return new XapianMSetIterator($r);
1303                 }
1304                 return $r;
1305         }
1306
1307         function get_description() {
1308                 return MSet_get_description($this->_cPtr);
1309         }
1310
1311         function get_docid($i) {
1312                 return MSet_get_docid($this->_cPtr,$i);
1313         }
1314
1315         function get_document($i) {
1316                 $r=MSet_get_document($this->_cPtr,$i);
1317                 if (is_resource($r)) {
1318                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
1319                         if (class_exists($c)) return new $c($r);
1320                         return new XapianDocument($r);
1321                 }
1322                 return $r;
1323         }
1324
1325         function get_hit($i) {
1326                 $r=MSet_get_hit($this->_cPtr,$i);
1327                 if (is_resource($r)) {
1328                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
1329                         if (class_exists($c)) return new $c($r);
1330                         return new XapianMSetIterator($r);
1331                 }
1332                 return $r;
1333         }
1334
1335         function get_document_percentage($i) {
1336                 return MSet_get_document_percentage($this->_cPtr,$i);
1337         }
1338 }
1339
1340 class XapianMSetIterator implements Iterator {
1341         public $_cPtr=null;
1342         protected $_pData=array();
1343
1344         function __set($var,$value) {
1345                 if ($var === 'off_from_end') return MSetIterator_off_from_end_set($this->_cPtr,$value);
1346                 if ($var === 'mset') return MSetIterator_mset_set($this->_cPtr,$value);
1347                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
1348                 $this->_pData[$var] = $value;
1349         }
1350
1351         function __get($var) {
1352                 if ($var === 'mset') return new XapianMSet(MSetIterator_mset_get($this->_cPtr));
1353                 if ($var === 'off_from_end') return MSetIterator_off_from_end_get($this->_cPtr);
1354                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
1355                 return $this->_pData[$var];
1356         }
1357
1358         function __isset($var) {
1359                 if (function_exists('MSetIterator_'.$var.'_get')) return true;
1360                 if ($var === 'thisown') return true;
1361                 return array_key_exists($var, $this->_pData);
1362         }
1363
1364         function __construct($res=null) {
1365                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__MSetIterator') {
1366                         $this->_cPtr=$res;
1367                         return;
1368                 }
1369                 $this->_cPtr=new_MSetIterator();
1370         }
1371
1372         function get_rank() {
1373                 return MSetIterator_get_rank($this->_cPtr);
1374         }
1375
1376         function get_document() {
1377                 $r=MSetIterator_get_document($this->_cPtr);
1378                 if (is_resource($r)) {
1379                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
1380                         if (class_exists($c)) return new $c($r);
1381                         return new XapianDocument($r);
1382                 }
1383                 return $r;
1384         }
1385
1386         function get_weight() {
1387                 return MSetIterator_get_weight($this->_cPtr);
1388         }
1389
1390         function get_collapse_key() {
1391                 return MSetIterator_get_collapse_key($this->_cPtr);
1392         }
1393
1394         function get_collapse_count() {
1395                 return MSetIterator_get_collapse_count($this->_cPtr);
1396         }
1397
1398         function get_sort_key() {
1399                 return MSetIterator_get_sort_key($this->_cPtr);
1400         }
1401
1402         function get_percent() {
1403                 return MSetIterator_get_percent($this->_cPtr);
1404         }
1405
1406         function get_description() {
1407                 return MSetIterator_get_description($this->_cPtr);
1408         }
1409
1410         function key() {
1411                 $r=MSetIterator_key($this->_cPtr);
1412                 if (is_resource($r)) {
1413                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
1414                         if (class_exists($c)) return new $c($r);
1415                         return new XapianMSetIterator($r);
1416                 }
1417                 return $r;
1418         }
1419
1420         function current() {
1421                 return MSetIterator_current($this->_cPtr);
1422         }
1423
1424         function valid() {
1425                 return MSetIterator_valid($this->_cPtr);
1426         }
1427
1428         function rewind() {
1429                 MSetIterator_rewind($this->_cPtr);
1430         }
1431
1432         function equals(XapianMSetIterator $o) {
1433                 return MSetIterator_equals($this->_cPtr,$o);
1434         }
1435
1436         function get_docid() {
1437                 return MSetIterator_get_docid($this->_cPtr);
1438         }
1439
1440         function next() {
1441                 MSetIterator_next($this->_cPtr);
1442         }
1443
1444         function prev() {
1445                 MSetIterator_prev($this->_cPtr);
1446         }
1447 }
1448
1449 class XapianESet {
1450         public $_cPtr=null;
1451         protected $_pData=array();
1452
1453         function __set($var,$value) {
1454                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
1455                 $this->_pData[$var] = $value;
1456         }
1457
1458         function __get($var) {
1459                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
1460                 return $this->_pData[$var];
1461         }
1462
1463         function __isset($var) {
1464                 if ($var === 'thisown') return true;
1465                 return array_key_exists($var, $this->_pData);
1466         }
1467
1468         function __construct($res=null) {
1469                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__ESet') {
1470                         $this->_cPtr=$res;
1471                         return;
1472                 }
1473                 $this->_cPtr=new_ESet();
1474         }
1475
1476         function size() {
1477                 return ESet_size($this->_cPtr);
1478         }
1479
1480         function is_empty() {
1481                 return ESet_is_empty($this->_cPtr);
1482         }
1483
1484         function get_ebound() {
1485                 return ESet_get_ebound($this->_cPtr);
1486         }
1487
1488         function begin() {
1489                 $r=ESet_begin($this->_cPtr);
1490                 if (is_resource($r)) {
1491                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
1492                         if (class_exists($c)) return new $c($r);
1493                         return new XapianESetIterator($r);
1494                 }
1495                 return $r;
1496         }
1497
1498         function end() {
1499                 $r=ESet_end($this->_cPtr);
1500                 if (is_resource($r)) {
1501                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
1502                         if (class_exists($c)) return new $c($r);
1503                         return new XapianESetIterator($r);
1504                 }
1505                 return $r;
1506         }
1507
1508         function back() {
1509                 $r=ESet_back($this->_cPtr);
1510                 if (is_resource($r)) {
1511                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
1512                         if (class_exists($c)) return new $c($r);
1513                         return new XapianESetIterator($r);
1514                 }
1515                 return $r;
1516         }
1517
1518         function get_description() {
1519                 return ESet_get_description($this->_cPtr);
1520         }
1521 }
1522
1523 class XapianESetIterator implements Iterator {
1524         public $_cPtr=null;
1525         protected $_pData=array();
1526
1527         function __set($var,$value) {
1528                 if ($var === 'off_from_end') return ESetIterator_off_from_end_set($this->_cPtr,$value);
1529                 if ($var === 'eset') return ESetIterator_eset_set($this->_cPtr,$value);
1530                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
1531                 $this->_pData[$var] = $value;
1532         }
1533
1534         function __get($var) {
1535                 if ($var === 'eset') return new XapianESet(ESetIterator_eset_get($this->_cPtr));
1536                 if ($var === 'off_from_end') return ESetIterator_off_from_end_get($this->_cPtr);
1537                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
1538                 return $this->_pData[$var];
1539         }
1540
1541         function __isset($var) {
1542                 if (function_exists('ESetIterator_'.$var.'_get')) return true;
1543                 if ($var === 'thisown') return true;
1544                 return array_key_exists($var, $this->_pData);
1545         }
1546
1547         function __construct($res=null) {
1548                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__ESetIterator') {
1549                         $this->_cPtr=$res;
1550                         return;
1551                 }
1552                 $this->_cPtr=new_ESetIterator();
1553         }
1554
1555         function get_weight() {
1556                 return ESetIterator_get_weight($this->_cPtr);
1557         }
1558
1559         function get_description() {
1560                 return ESetIterator_get_description($this->_cPtr);
1561         }
1562
1563         function key() {
1564                 $r=ESetIterator_key($this->_cPtr);
1565                 if (is_resource($r)) {
1566                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
1567                         if (class_exists($c)) return new $c($r);
1568                         return new XapianESetIterator($r);
1569                 }
1570                 return $r;
1571         }
1572
1573         function current() {
1574                 return ESetIterator_current($this->_cPtr);
1575         }
1576
1577         function valid() {
1578                 return ESetIterator_valid($this->_cPtr);
1579         }
1580
1581         function rewind() {
1582                 ESetIterator_rewind($this->_cPtr);
1583         }
1584
1585         function equals(XapianESetIterator $o) {
1586                 return ESetIterator_equals($this->_cPtr,$o);
1587         }
1588
1589         function get_term() {
1590                 return ESetIterator_get_term($this->_cPtr);
1591         }
1592
1593         function next() {
1594                 ESetIterator_next($this->_cPtr);
1595         }
1596
1597         function prev() {
1598                 ESetIterator_prev($this->_cPtr);
1599         }
1600 }
1601
1602 class XapianRSet {
1603         public $_cPtr=null;
1604         protected $_pData=array();
1605
1606         function __set($var,$value) {
1607                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
1608                 $this->_pData[$var] = $value;
1609         }
1610
1611         function __get($var) {
1612                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
1613                 return $this->_pData[$var];
1614         }
1615
1616         function __isset($var) {
1617                 if ($var === 'thisown') return true;
1618                 return array_key_exists($var, $this->_pData);
1619         }
1620
1621         function __construct($res=null) {
1622                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__RSet') {
1623                         $this->_cPtr=$res;
1624                         return;
1625                 }
1626                 $this->_cPtr=new_RSet();
1627         }
1628
1629         function size() {
1630                 return RSet_size($this->_cPtr);
1631         }
1632
1633         function is_empty() {
1634                 return RSet_is_empty($this->_cPtr);
1635         }
1636
1637         function add_document($did_or_i) {
1638                 RSet_add_document($this->_cPtr,$did_or_i);
1639         }
1640
1641         function remove_document($did_or_i) {
1642                 RSet_remove_document($this->_cPtr,$did_or_i);
1643         }
1644
1645         function contains($did_or_i) {
1646                 return RSet_contains($this->_cPtr,$did_or_i);
1647         }
1648
1649         function get_description() {
1650                 return RSet_get_description($this->_cPtr);
1651         }
1652 }
1653
1654 abstract class XapianMatchDecider {
1655         public $_cPtr=null;
1656         protected $_pData=array();
1657
1658         function __set($var,$value) {
1659                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
1660                 $this->_pData[$var] = $value;
1661         }
1662
1663         function __get($var) {
1664                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
1665                 return $this->_pData[$var];
1666         }
1667
1668         function __isset($var) {
1669                 if ($var === 'thisown') return true;
1670                 return array_key_exists($var, $this->_pData);
1671         }
1672
1673         function __construct($res=null) {
1674                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__MatchDecider') {
1675                         $this->_cPtr=$res;
1676                         return;
1677                 }
1678                 if (get_class($this) === 'XapianMatchDecider') {
1679                         $_this = null;
1680                 } else {
1681                         $_this = $this;
1682                 }
1683                 $this->_cPtr=new_MatchDecider($_this);
1684         }
1685
1686         function apply($doc) {
1687                 return MatchDecider_apply($this->_cPtr,$doc);
1688         }
1689 }
1690
1691 class XapianEnquire {
1692         protected $_ps=null;
1693         protected $_sorter=null;
1694         protected $_spies=null;
1695         public $_cPtr=null;
1696         protected $_pData=array();
1697
1698         function __set($var,$value) {
1699                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
1700                 $this->_pData[$var] = $value;
1701         }
1702
1703         function __get($var) {
1704                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
1705                 return $this->_pData[$var];
1706         }
1707
1708         function __isset($var) {
1709                 if ($var === 'thisown') return true;
1710                 return array_key_exists($var, $this->_pData);
1711         }
1712
1713         function __construct($database) {
1714                 if (is_resource($database) && get_resource_type($database) === '_p_Xapian__Enquire') {
1715                         $this->_cPtr=$database;
1716                         return;
1717                 }
1718                 $this->_cPtr=new_Enquire($database);
1719         }
1720
1721         function set_query(XapianQuery $query,$qlen=0) {
1722                 $this->_ps=$query->_ps;
1723                 Enquire_set_query($this->_cPtr,$query,$qlen);
1724         }
1725
1726         function get_query() {
1727                 $r=Enquire_get_query($this->_cPtr);
1728                 if (is_resource($r)) {
1729                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
1730                         if (class_exists($c)) return new $c($r);
1731                         return new XapianQuery($r);
1732                 }
1733                 return $r;
1734         }
1735
1736         function add_matchspy(XapianMatchSpy $spy) {
1737                 $this->_spies[]=$spy;
1738                 Enquire_add_matchspy($this->_cPtr,$spy);
1739         }
1740
1741         function clear_matchspies() {
1742                 $this->_spies=null;
1743                 Enquire_clear_matchspies($this->_cPtr);
1744         }
1745
1746         function set_weighting_scheme(XapianWeight $weight_) {
1747                 Enquire_set_weighting_scheme($this->_cPtr,$weight_);
1748         }
1749
1750         function set_expansion_scheme($eweightname_,$expand_k_=1.0) {
1751                 Enquire_set_expansion_scheme($this->_cPtr,$eweightname_,$expand_k_);
1752         }
1753
1754         function set_collapse_key($collapse_key,$collapse_max=1) {
1755                 Enquire_set_collapse_key($this->_cPtr,$collapse_key,$collapse_max);
1756         }
1757
1758         const ASCENDING = 1;
1759
1760         const DESCENDING = 0;
1761
1762         const DONT_CARE = 2;
1763
1764         function set_docid_order($order) {
1765                 Enquire_set_docid_order($this->_cPtr,$order);
1766         }
1767
1768         function set_cutoff($percent_cutoff,$weight_cutoff=0.0) {
1769                 Enquire_set_cutoff($this->_cPtr,$percent_cutoff,$weight_cutoff);
1770         }
1771
1772         function set_sort_by_relevance() {
1773                 Enquire_set_sort_by_relevance($this->_cPtr);
1774         }
1775
1776         function set_sort_by_value($sort_key,$reverse) {
1777                 Enquire_set_sort_by_value($this->_cPtr,$sort_key,$reverse);
1778         }
1779
1780         function set_sort_by_key(XapianKeyMaker $sorter,$reverse) {
1781                 $this->_sorter=$sorter;
1782                 Enquire_set_sort_by_key($this->_cPtr,$sorter,$reverse);
1783         }
1784
1785         function set_sort_by_value_then_relevance($sort_key,$reverse) {
1786                 Enquire_set_sort_by_value_then_relevance($this->_cPtr,$sort_key,$reverse);
1787         }
1788
1789         function set_sort_by_key_then_relevance(XapianKeyMaker $sorter,$reverse) {
1790                 $this->_sorter=$sorter;
1791                 Enquire_set_sort_by_key_then_relevance($this->_cPtr,$sorter,$reverse);
1792         }
1793
1794         function set_sort_by_relevance_then_value($sort_key,$reverse) {
1795                 Enquire_set_sort_by_relevance_then_value($this->_cPtr,$sort_key,$reverse);
1796         }
1797
1798         function set_sort_by_relevance_then_key(XapianKeyMaker $sorter,$reverse) {
1799                 $this->_sorter=$sorter;
1800                 Enquire_set_sort_by_relevance_then_key($this->_cPtr,$sorter,$reverse);
1801         }
1802
1803         function set_time_limit($time_limit) {
1804                 Enquire_set_time_limit($this->_cPtr,$time_limit);
1805         }
1806
1807         function get_mset($first,$maxitems,$checkatleast_or_omrset=null,$omrset_or_mdecider=null,XapianMatchDecider $mdecider=null) {
1808                 switch (func_num_args()) {
1809                 case 2: $r=Enquire_get_mset($this->_cPtr,$first,$maxitems); break;
1810                 case 3: $r=Enquire_get_mset($this->_cPtr,$first,$maxitems,$checkatleast_or_omrset); break;
1811                 case 4: $r=Enquire_get_mset($this->_cPtr,$first,$maxitems,$checkatleast_or_omrset,$omrset_or_mdecider); break;
1812                 default: $r=Enquire_get_mset($this->_cPtr,$first,$maxitems,$checkatleast_or_omrset,$omrset_or_mdecider,$mdecider);
1813                 }
1814                 if (is_resource($r)) {
1815                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
1816                         if (class_exists($c)) return new $c($r);
1817                         return new XapianMSet($r);
1818                 }
1819                 return $r;
1820         }
1821
1822         const INCLUDE_QUERY_TERMS = Enquire_INCLUDE_QUERY_TERMS;
1823
1824         const USE_EXACT_TERMFREQ = Enquire_USE_EXACT_TERMFREQ;
1825
1826         function get_eset($maxitems,$omrset_or_rset,$flags_or_edecider=null,$edecider_or_k=null,$min_wt_or_edecider=null,$min_wt=null) {
1827                 switch (func_num_args()) {
1828                 case 2: $r=Enquire_get_eset($this->_cPtr,$maxitems,$omrset_or_rset); break;
1829                 case 3: $r=Enquire_get_eset($this->_cPtr,$maxitems,$omrset_or_rset,$flags_or_edecider); break;
1830                 case 4: $r=Enquire_get_eset($this->_cPtr,$maxitems,$omrset_or_rset,$flags_or_edecider,$edecider_or_k); break;
1831                 case 5: $r=Enquire_get_eset($this->_cPtr,$maxitems,$omrset_or_rset,$flags_or_edecider,$edecider_or_k,$min_wt_or_edecider); break;
1832                 default: $r=Enquire_get_eset($this->_cPtr,$maxitems,$omrset_or_rset,$flags_or_edecider,$edecider_or_k,$min_wt_or_edecider,$min_wt);
1833                 }
1834                 if (is_resource($r)) {
1835                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
1836                         if (class_exists($c)) return new $c($r);
1837                         return new XapianESet($r);
1838                 }
1839                 return $r;
1840         }
1841
1842         function get_matching_terms_begin($did_or_it) {
1843                 $r=Enquire_get_matching_terms_begin($this->_cPtr,$did_or_it);
1844                 if (is_resource($r)) {
1845                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
1846                         if (class_exists($c)) return new $c($r);
1847                         return new XapianTermIterator($r);
1848                 }
1849                 return $r;
1850         }
1851
1852         function get_matching_terms_end($arg1) {
1853                 $r=Enquire_get_matching_terms_end($this->_cPtr,$arg1);
1854                 if (is_resource($r)) {
1855                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
1856                         if (class_exists($c)) return new $c($r);
1857                         return new XapianTermIterator($r);
1858                 }
1859                 return $r;
1860         }
1861
1862         function get_description() {
1863                 return Enquire_get_description($this->_cPtr);
1864         }
1865
1866         function get_matching_terms($item) {
1867                 return Enquire_get_matching_terms($this->_cPtr,$item);
1868         }
1869 }
1870
1871 abstract class XapianExpandDecider {
1872         public $_cPtr=null;
1873         protected $_pData=array();
1874
1875         function __set($var,$value) {
1876                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
1877                 $this->_pData[$var] = $value;
1878         }
1879
1880         function __get($var) {
1881                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
1882                 return $this->_pData[$var];
1883         }
1884
1885         function __isset($var) {
1886                 if ($var === 'thisown') return true;
1887                 return array_key_exists($var, $this->_pData);
1888         }
1889
1890         function __construct($res=null) {
1891                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__ExpandDecider') {
1892                         $this->_cPtr=$res;
1893                         return;
1894                 }
1895                 if (get_class($this) === 'XapianExpandDecider') {
1896                         $_this = null;
1897                 } else {
1898                         $_this = $this;
1899                 }
1900                 $this->_cPtr=new_ExpandDecider($_this);
1901         }
1902
1903         function apply($term) {
1904                 return ExpandDecider_apply($this->_cPtr,$term);
1905         }
1906
1907         function release() {
1908                 $r=ExpandDecider_release($this->_cPtr);
1909                 $this->_cPtr = $r;
1910                 return $this;
1911         }
1912 }
1913
1914 class XapianExpandDeciderAnd extends XapianExpandDecider {
1915         public $_cPtr=null;
1916
1917         function __set($var,$value) {
1918                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
1919                 XapianExpandDecider::__set($var,$value);
1920         }
1921
1922         function __get($var) {
1923                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
1924                 return XapianExpandDecider::__get($var);
1925         }
1926
1927         function __isset($var) {
1928                 if ($var === 'thisown') return true;
1929                 return XapianExpandDecider::__isset($var);
1930         }
1931
1932         function __construct($first_,$second_=null) {
1933                 if (is_resource($first_) && get_resource_type($first_) === '_p_Xapian__ExpandDeciderAnd') {
1934                         $this->_cPtr=$first_;
1935                         return;
1936                 }
1937                 $this->_cPtr=new_ExpandDeciderAnd($first_,$second_);
1938         }
1939
1940         function apply($term) {
1941                 return ExpandDeciderAnd_apply($this->_cPtr,$term);
1942         }
1943 }
1944
1945 class XapianExpandDeciderFilterPrefix extends XapianExpandDecider {
1946         public $_cPtr=null;
1947
1948         function __set($var,$value) {
1949                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
1950                 XapianExpandDecider::__set($var,$value);
1951         }
1952
1953         function __get($var) {
1954                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
1955                 return XapianExpandDecider::__get($var);
1956         }
1957
1958         function __isset($var) {
1959                 if ($var === 'thisown') return true;
1960                 return XapianExpandDecider::__isset($var);
1961         }
1962
1963         function __construct($prefix_) {
1964                 if (is_resource($prefix_) && get_resource_type($prefix_) === '_p_Xapian__ExpandDeciderFilterPrefix') {
1965                         $this->_cPtr=$prefix_;
1966                         return;
1967                 }
1968                 $this->_cPtr=new_ExpandDeciderFilterPrefix($prefix_);
1969         }
1970
1971         function apply($term) {
1972                 return ExpandDeciderFilterPrefix_apply($this->_cPtr,$term);
1973         }
1974 }
1975
1976 abstract class XapianKeyMaker {
1977         public $_cPtr=null;
1978         protected $_pData=array();
1979
1980         function __set($var,$value) {
1981                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
1982                 $this->_pData[$var] = $value;
1983         }
1984
1985         function __get($var) {
1986                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
1987                 return $this->_pData[$var];
1988         }
1989
1990         function __isset($var) {
1991                 if ($var === 'thisown') return true;
1992                 return array_key_exists($var, $this->_pData);
1993         }
1994
1995         function __construct($res=null) {
1996                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__KeyMaker') {
1997                         $this->_cPtr=$res;
1998                         return;
1999                 }
2000                 if (get_class($this) === 'XapianKeyMaker') {
2001                         $_this = null;
2002                 } else {
2003                         $_this = $this;
2004                 }
2005                 $this->_cPtr=new_KeyMaker($_this);
2006         }
2007
2008         function apply($doc) {
2009                 return KeyMaker_apply($this->_cPtr,$doc);
2010         }
2011
2012         function release() {
2013                 $r=KeyMaker_release($this->_cPtr);
2014                 $this->_cPtr = $r;
2015                 return $this;
2016         }
2017 }
2018
2019 class XapianMultiValueKeyMaker extends XapianKeyMaker {
2020         public $_cPtr=null;
2021
2022         function __set($var,$value) {
2023                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
2024                 XapianKeyMaker::__set($var,$value);
2025         }
2026
2027         function __get($var) {
2028                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
2029                 return XapianKeyMaker::__get($var);
2030         }
2031
2032         function __isset($var) {
2033                 if ($var === 'thisown') return true;
2034                 return XapianKeyMaker::__isset($var);
2035         }
2036
2037         function __construct($res=null) {
2038                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__MultiValueKeyMaker') {
2039                         $this->_cPtr=$res;
2040                         return;
2041                 }
2042                 $this->_cPtr=new_MultiValueKeyMaker();
2043         }
2044
2045         function apply($doc) {
2046                 return MultiValueKeyMaker_apply($this->_cPtr,$doc);
2047         }
2048
2049         function add_value($slot,$reverse=false,$defvalue=null) {
2050                 switch (func_num_args()) {
2051                 case 1: case 2: MultiValueKeyMaker_add_value($this->_cPtr,$slot,$reverse); break;
2052                 default: MultiValueKeyMaker_add_value($this->_cPtr,$slot,$reverse,$defvalue);
2053                 }
2054         }
2055 }
2056
2057 abstract class XapianStopper {
2058         public $_cPtr=null;
2059         protected $_pData=array();
2060
2061         function __set($var,$value) {
2062                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
2063                 $this->_pData[$var] = $value;
2064         }
2065
2066         function __get($var) {
2067                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
2068                 return $this->_pData[$var];
2069         }
2070
2071         function __isset($var) {
2072                 if ($var === 'thisown') return true;
2073                 return array_key_exists($var, $this->_pData);
2074         }
2075
2076         function __construct($res=null) {
2077                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__Stopper') {
2078                         $this->_cPtr=$res;
2079                         return;
2080                 }
2081                 if (get_class($this) === 'XapianStopper') {
2082                         $_this = null;
2083                 } else {
2084                         $_this = $this;
2085                 }
2086                 $this->_cPtr=new_Stopper($_this);
2087         }
2088
2089         function apply($term) {
2090                 return Stopper_apply($this->_cPtr,$term);
2091         }
2092
2093         function get_description() {
2094                 return Stopper_get_description($this->_cPtr);
2095         }
2096
2097         function release() {
2098                 $r=Stopper_release($this->_cPtr);
2099                 $this->_cPtr = $r;
2100                 return $this;
2101         }
2102 }
2103
2104 class XapianSimpleStopper extends XapianStopper {
2105         public $_cPtr=null;
2106
2107         function __set($var,$value) {
2108                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
2109                 XapianStopper::__set($var,$value);
2110         }
2111
2112         function __get($var) {
2113                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
2114                 return XapianStopper::__get($var);
2115         }
2116
2117         function __isset($var) {
2118                 if ($var === 'thisown') return true;
2119                 return XapianStopper::__isset($var);
2120         }
2121
2122         function add($word) {
2123                 SimpleStopper_add($this->_cPtr,$word);
2124         }
2125
2126         function apply($term) {
2127                 return SimpleStopper_apply($this->_cPtr,$term);
2128         }
2129
2130         function get_description() {
2131                 return SimpleStopper_get_description($this->_cPtr);
2132         }
2133
2134         function __construct($file=null) {
2135                 if (is_resource($file) && get_resource_type($file) === '_p_Xapian__SimpleStopper') {
2136                         $this->_cPtr=$file;
2137                         return;
2138                 }
2139                 switch (func_num_args()) {
2140                 case 0: $this->_cPtr=new_SimpleStopper(); break;
2141                 default: $this->_cPtr=new_SimpleStopper($file);
2142                 }
2143         }
2144 }
2145
2146 class XapianRangeProcessor {
2147         public $_cPtr=null;
2148         protected $_pData=array();
2149
2150         function __set($var,$value) {
2151                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
2152                 $this->_pData[$var] = $value;
2153         }
2154
2155         function __get($var) {
2156                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
2157                 return $this->_pData[$var];
2158         }
2159
2160         function __isset($var) {
2161                 if ($var === 'thisown') return true;
2162                 return array_key_exists($var, $this->_pData);
2163         }
2164
2165         function __construct($slot_=null,$str_=null,$flags_=null) {
2166                 if (is_resource($slot_) && get_resource_type($slot_) === '_p_Xapian__RangeProcessor') {
2167                         $this->_cPtr=$slot_;
2168                         return;
2169                 }
2170                 if (get_class($this) === 'XapianRangeProcessor') {
2171                         $_this = null;
2172                 } else {
2173                         $_this = $this;
2174                 }
2175                 switch (func_num_args()) {
2176                 case 0: $this->_cPtr=new_RangeProcessor($_this); break;
2177                 case 1: $this->_cPtr=new_RangeProcessor($_this, $slot_); break;
2178                 case 2: $this->_cPtr=new_RangeProcessor($_this, $slot_,$str_); break;
2179                 default: $this->_cPtr=new_RangeProcessor($_this, $slot_,$str_,$flags_);
2180                 }
2181         }
2182
2183         function check_range($b,$e) {
2184                 $r=RangeProcessor_check_range($this->_cPtr,$b,$e);
2185                 if (is_resource($r)) {
2186                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
2187                         if (class_exists($c)) return new $c($r);
2188                         return new XapianQuery($r);
2189                 }
2190                 return $r;
2191         }
2192
2193         function apply($begin,$end) {
2194                 $r=RangeProcessor_apply($this->_cPtr,$begin,$end);
2195                 if (is_resource($r)) {
2196                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
2197                         if (class_exists($c)) return new $c($r);
2198                         return new XapianQuery($r);
2199                 }
2200                 return $r;
2201         }
2202
2203         function release() {
2204                 $r=RangeProcessor_release($this->_cPtr);
2205                 if (is_resource($r)) {
2206                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
2207                         if (class_exists($c)) return new $c($r);
2208                         return new XapianRangeProcessor($r);
2209                 }
2210                 return $r;
2211         }
2212 }
2213
2214 class XapianDateRangeProcessor extends XapianRangeProcessor {
2215         public $_cPtr=null;
2216
2217         function __set($var,$value) {
2218                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
2219                 XapianRangeProcessor::__set($var,$value);
2220         }
2221
2222         function __get($var) {
2223                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
2224                 return XapianRangeProcessor::__get($var);
2225         }
2226
2227         function __isset($var) {
2228                 if ($var === 'thisown') return true;
2229                 return XapianRangeProcessor::__isset($var);
2230         }
2231
2232         function __construct($slot_,$flags__or_str_=null,$epoch_year__or_flags_=null,$epoch_year_=null) {
2233                 if (is_resource($slot_) && get_resource_type($slot_) === '_p_Xapian__DateRangeProcessor') {
2234                         $this->_cPtr=$slot_;
2235                         return;
2236                 }
2237                 switch (func_num_args()) {
2238                 case 1: $this->_cPtr=new_DateRangeProcessor($slot_); break;
2239                 case 2: $this->_cPtr=new_DateRangeProcessor($slot_,$flags__or_str_); break;
2240                 case 3: $this->_cPtr=new_DateRangeProcessor($slot_,$flags__or_str_,$epoch_year__or_flags_); break;
2241                 default: $this->_cPtr=new_DateRangeProcessor($slot_,$flags__or_str_,$epoch_year__or_flags_,$epoch_year_);
2242                 }
2243         }
2244
2245         function apply($begin,$end) {
2246                 $r=DateRangeProcessor_apply($this->_cPtr,$begin,$end);
2247                 if (is_resource($r)) {
2248                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
2249                         if (class_exists($c)) return new $c($r);
2250                         return new XapianQuery($r);
2251                 }
2252                 return $r;
2253         }
2254 }
2255
2256 class XapianNumberRangeProcessor extends XapianRangeProcessor {
2257         public $_cPtr=null;
2258
2259         function __set($var,$value) {
2260                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
2261                 XapianRangeProcessor::__set($var,$value);
2262         }
2263
2264         function __get($var) {
2265                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
2266                 return XapianRangeProcessor::__get($var);
2267         }
2268
2269         function __isset($var) {
2270                 if ($var === 'thisown') return true;
2271                 return XapianRangeProcessor::__isset($var);
2272         }
2273
2274         function __construct($slot_,$str_=null,$flags_=0) {
2275                 if (is_resource($slot_) && get_resource_type($slot_) === '_p_Xapian__NumberRangeProcessor') {
2276                         $this->_cPtr=$slot_;
2277                         return;
2278                 }
2279                 switch (func_num_args()) {
2280                 case 1: $this->_cPtr=new_NumberRangeProcessor($slot_); break;
2281                 default: $this->_cPtr=new_NumberRangeProcessor($slot_,$str_,$flags_);
2282                 }
2283         }
2284
2285         function apply($begin,$end) {
2286                 $r=NumberRangeProcessor_apply($this->_cPtr,$begin,$end);
2287                 if (is_resource($r)) {
2288                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
2289                         if (class_exists($c)) return new $c($r);
2290                         return new XapianQuery($r);
2291                 }
2292                 return $r;
2293         }
2294 }
2295
2296 abstract class XapianValueRangeProcessor {
2297         public $_cPtr=null;
2298         protected $_pData=array();
2299
2300         function __set($var,$value) {
2301                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
2302                 $this->_pData[$var] = $value;
2303         }
2304
2305         function __get($var) {
2306                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
2307                 return $this->_pData[$var];
2308         }
2309
2310         function __isset($var) {
2311                 if ($var === 'thisown') return true;
2312                 return array_key_exists($var, $this->_pData);
2313         }
2314
2315         function __construct($res=null) {
2316                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__ValueRangeProcessor') {
2317                         $this->_cPtr=$res;
2318                         return;
2319                 }
2320                 if (get_class($this) === 'XapianValueRangeProcessor') {
2321                         $_this = null;
2322                 } else {
2323                         $_this = $this;
2324                 }
2325                 $this->_cPtr=new_ValueRangeProcessor($_this);
2326         }
2327
2328         function apply(&$begin,&$end) {
2329                 return ValueRangeProcessor_apply($this->_cPtr,$begin,$end);
2330         }
2331
2332         function release() {
2333                 $r=ValueRangeProcessor_release($this->_cPtr);
2334                 $this->_cPtr = $r;
2335                 return $this;
2336         }
2337 }
2338
2339 class XapianStringValueRangeProcessor extends XapianValueRangeProcessor {
2340         public $_cPtr=null;
2341
2342         function __set($var,$value) {
2343                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
2344                 XapianValueRangeProcessor::__set($var,$value);
2345         }
2346
2347         function __get($var) {
2348                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
2349                 return XapianValueRangeProcessor::__get($var);
2350         }
2351
2352         function __isset($var) {
2353                 if ($var === 'thisown') return true;
2354                 return XapianValueRangeProcessor::__isset($var);
2355         }
2356
2357         function __construct($slot_,$str_=null,$prefix_=true) {
2358                 if (is_resource($slot_) && get_resource_type($slot_) === '_p_Xapian__StringValueRangeProcessor') {
2359                         $this->_cPtr=$slot_;
2360                         return;
2361                 }
2362                 switch (func_num_args()) {
2363                 case 1: $this->_cPtr=new_StringValueRangeProcessor($slot_); break;
2364                 default: $this->_cPtr=new_StringValueRangeProcessor($slot_,$str_,$prefix_);
2365                 }
2366         }
2367
2368         function apply(&$begin,&$end) {
2369                 return StringValueRangeProcessor_apply($this->_cPtr,$begin,$end);
2370         }
2371 }
2372
2373 class XapianDateValueRangeProcessor extends XapianStringValueRangeProcessor {
2374         public $_cPtr=null;
2375
2376         function __set($var,$value) {
2377                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
2378                 XapianStringValueRangeProcessor::__set($var,$value);
2379         }
2380
2381         function __get($var) {
2382                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
2383                 return XapianStringValueRangeProcessor::__get($var);
2384         }
2385
2386         function __isset($var) {
2387                 if ($var === 'thisown') return true;
2388                 return XapianStringValueRangeProcessor::__isset($var);
2389         }
2390
2391         function __construct($slot_,$prefer_mdy__or_str_=null,$epoch_year__or_prefix_=null,$prefer_mdy_=null,$epoch_year_=null) {
2392                 if (is_resource($slot_) && get_resource_type($slot_) === '_p_Xapian__DateValueRangeProcessor') {
2393                         $this->_cPtr=$slot_;
2394                         return;
2395                 }
2396                 switch (func_num_args()) {
2397                 case 1: $this->_cPtr=new_DateValueRangeProcessor($slot_); break;
2398                 case 2: $this->_cPtr=new_DateValueRangeProcessor($slot_,$prefer_mdy__or_str_); break;
2399                 case 3: $this->_cPtr=new_DateValueRangeProcessor($slot_,$prefer_mdy__or_str_,$epoch_year__or_prefix_); break;
2400                 case 4: $this->_cPtr=new_DateValueRangeProcessor($slot_,$prefer_mdy__or_str_,$epoch_year__or_prefix_,$prefer_mdy_); break;
2401                 default: $this->_cPtr=new_DateValueRangeProcessor($slot_,$prefer_mdy__or_str_,$epoch_year__or_prefix_,$prefer_mdy_,$epoch_year_);
2402                 }
2403         }
2404
2405         function apply(&$begin,&$end) {
2406                 return DateValueRangeProcessor_apply($this->_cPtr,$begin,$end);
2407         }
2408 }
2409
2410 class XapianNumberValueRangeProcessor extends XapianStringValueRangeProcessor {
2411         public $_cPtr=null;
2412
2413         function __set($var,$value) {
2414                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
2415                 XapianStringValueRangeProcessor::__set($var,$value);
2416         }
2417
2418         function __get($var) {
2419                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
2420                 return XapianStringValueRangeProcessor::__get($var);
2421         }
2422
2423         function __isset($var) {
2424                 if ($var === 'thisown') return true;
2425                 return XapianStringValueRangeProcessor::__isset($var);
2426         }
2427
2428         function __construct($slot_,$str_=null,$prefix_=true) {
2429                 if (is_resource($slot_) && get_resource_type($slot_) === '_p_Xapian__NumberValueRangeProcessor') {
2430                         $this->_cPtr=$slot_;
2431                         return;
2432                 }
2433                 switch (func_num_args()) {
2434                 case 1: $this->_cPtr=new_NumberValueRangeProcessor($slot_); break;
2435                 default: $this->_cPtr=new_NumberValueRangeProcessor($slot_,$str_,$prefix_);
2436                 }
2437         }
2438
2439         function apply(&$begin,&$end) {
2440                 return NumberValueRangeProcessor_apply($this->_cPtr,$begin,$end);
2441         }
2442 }
2443
2444 abstract class XapianFieldProcessor {
2445         public $_cPtr=null;
2446         protected $_pData=array();
2447
2448         function __set($var,$value) {
2449                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
2450                 $this->_pData[$var] = $value;
2451         }
2452
2453         function __get($var) {
2454                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
2455                 return $this->_pData[$var];
2456         }
2457
2458         function __isset($var) {
2459                 if ($var === 'thisown') return true;
2460                 return array_key_exists($var, $this->_pData);
2461         }
2462
2463         function __construct($res=null) {
2464                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__FieldProcessor') {
2465                         $this->_cPtr=$res;
2466                         return;
2467                 }
2468                 if (get_class($this) === 'XapianFieldProcessor') {
2469                         $_this = null;
2470                 } else {
2471                         $_this = $this;
2472                 }
2473                 $this->_cPtr=new_FieldProcessor($_this);
2474         }
2475
2476         function apply($str) {
2477                 $r=FieldProcessor_apply($this->_cPtr,$str);
2478                 if (is_resource($r)) {
2479                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
2480                         if (class_exists($c)) return new $c($r);
2481                         return new XapianQuery($r);
2482                 }
2483                 return $r;
2484         }
2485
2486         function release() {
2487                 $r=FieldProcessor_release($this->_cPtr);
2488                 $this->_cPtr = $r;
2489                 return $this;
2490         }
2491 }
2492
2493 class XapianQueryParser {
2494         protected $_rps=null;
2495         protected $_vrps=null;
2496         protected $_stopper=null;
2497         public $_cPtr=null;
2498         protected $_pData=array();
2499
2500         function __set($var,$value) {
2501                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
2502                 $this->_pData[$var] = $value;
2503         }
2504
2505         function __get($var) {
2506                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
2507                 return $this->_pData[$var];
2508         }
2509
2510         function __isset($var) {
2511                 if ($var === 'thisown') return true;
2512                 return array_key_exists($var, $this->_pData);
2513         }
2514
2515         const FLAG_BOOLEAN = 1;
2516
2517         const FLAG_PHRASE = 2;
2518
2519         const FLAG_LOVEHATE = 4;
2520
2521         const FLAG_BOOLEAN_ANY_CASE = 8;
2522
2523         const FLAG_WILDCARD = 16;
2524
2525         const FLAG_PURE_NOT = 32;
2526
2527         const FLAG_PARTIAL = 64;
2528
2529         const FLAG_SPELLING_CORRECTION = 128;
2530
2531         const FLAG_SYNONYM = 256;
2532
2533         const FLAG_AUTO_SYNONYMS = 512;
2534
2535         const FLAG_AUTO_MULTIWORD_SYNONYMS = 1024;
2536
2537         const FLAG_CJK_NGRAM = 2048;
2538
2539         const FLAG_ACCUMULATE = 65536;
2540
2541         const FLAG_DEFAULT = QueryParser_FLAG_DEFAULT;
2542
2543         const STEM_NONE = 0;
2544
2545         const STEM_SOME = QueryParser_STEM_SOME;
2546
2547         const STEM_ALL = QueryParser_STEM_ALL;
2548
2549         const STEM_ALL_Z = QueryParser_STEM_ALL_Z;
2550
2551         const STEM_SOME_FULL_POS = QueryParser_STEM_SOME_FULL_POS;
2552
2553         function __construct($res=null) {
2554                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__QueryParser') {
2555                         $this->_cPtr=$res;
2556                         return;
2557                 }
2558                 $this->_cPtr=new_QueryParser();
2559         }
2560
2561         function set_stemmer(XapianStem $stemmer) {
2562                 QueryParser_set_stemmer($this->_cPtr,$stemmer);
2563         }
2564
2565         function set_stemming_strategy($strategy) {
2566                 QueryParser_set_stemming_strategy($this->_cPtr,$strategy);
2567         }
2568
2569         function set_stopper(XapianStopper $stop=null) {
2570                 $this->_stopper=$stop;
2571                 QueryParser_set_stopper($this->_cPtr,$stop);
2572         }
2573
2574         function set_default_op($default_op) {
2575                 QueryParser_set_default_op($this->_cPtr,$default_op);
2576         }
2577
2578         function get_default_op() {
2579                 return QueryParser_get_default_op($this->_cPtr);
2580         }
2581
2582         function set_database(XapianDatabase $db) {
2583                 QueryParser_set_database($this->_cPtr,$db);
2584         }
2585
2586         function set_max_expansion($max_expansion,$max_type=null,$flags=null) {
2587                 switch (func_num_args()) {
2588                 case 1: QueryParser_set_max_expansion($this->_cPtr,$max_expansion); break;
2589                 case 2: QueryParser_set_max_expansion($this->_cPtr,$max_expansion,$max_type); break;
2590                 default: QueryParser_set_max_expansion($this->_cPtr,$max_expansion,$max_type,$flags);
2591                 }
2592         }
2593
2594         function set_max_wildcard_expansion($arg1) {
2595                 QueryParser_set_max_wildcard_expansion($this->_cPtr,$arg1);
2596         }
2597
2598         function parse_query($query_string,$flags=null,$default_prefix=null) {
2599                 switch (func_num_args()) {
2600                 case 1: $r=QueryParser_parse_query($this->_cPtr,$query_string); break;
2601                 case 2: $r=QueryParser_parse_query($this->_cPtr,$query_string,$flags); break;
2602                 default: $r=QueryParser_parse_query($this->_cPtr,$query_string,$flags,$default_prefix);
2603                 }
2604                 if (is_resource($r)) {
2605                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
2606                         if (class_exists($c)) return new $c($r);
2607                         return new XapianQuery($r);
2608                 }
2609                 return $r;
2610         }
2611
2612         function add_prefix($field,$prefix_or_proc) {
2613                 QueryParser_add_prefix($this->_cPtr,$field,$prefix_or_proc);
2614         }
2615
2616         function add_boolean_prefix($field,$prefix_or_proc,$grouping_or_exclusive=null) {
2617                 switch (func_num_args()) {
2618                 case 2: QueryParser_add_boolean_prefix($this->_cPtr,$field,$prefix_or_proc); break;
2619                 default: QueryParser_add_boolean_prefix($this->_cPtr,$field,$prefix_or_proc,$grouping_or_exclusive);
2620                 }
2621         }
2622
2623         function stoplist_begin() {
2624                 $r=QueryParser_stoplist_begin($this->_cPtr);
2625                 if (is_resource($r)) {
2626                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
2627                         if (class_exists($c)) return new $c($r);
2628                         return new XapianTermIterator($r);
2629                 }
2630                 return $r;
2631         }
2632
2633         function stoplist_end() {
2634                 $r=QueryParser_stoplist_end($this->_cPtr);
2635                 if (is_resource($r)) {
2636                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
2637                         if (class_exists($c)) return new $c($r);
2638                         return new XapianTermIterator($r);
2639                 }
2640                 return $r;
2641         }
2642
2643         function unstem_begin($term) {
2644                 $r=QueryParser_unstem_begin($this->_cPtr,$term);
2645                 if (is_resource($r)) {
2646                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
2647                         if (class_exists($c)) return new $c($r);
2648                         return new XapianTermIterator($r);
2649                 }
2650                 return $r;
2651         }
2652
2653         function unstem_end($arg1) {
2654                 $r=QueryParser_unstem_end($this->_cPtr,$arg1);
2655                 if (is_resource($r)) {
2656                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
2657                         if (class_exists($c)) return new $c($r);
2658                         return new XapianTermIterator($r);
2659                 }
2660                 return $r;
2661         }
2662
2663         function add_rangeprocessor(XapianRangeProcessor $range_proc,$grouping=null) {
2664                 $this->_rps[]=$range_proc;
2665                 QueryParser_add_rangeprocessor($this->_cPtr,$range_proc,$grouping);
2666         }
2667
2668         function add_valuerangeprocessor(XapianValueRangeProcessor $vrproc) {
2669                 $this->_vrps[]=$vrproc;
2670                 QueryParser_add_valuerangeprocessor($this->_cPtr,$vrproc);
2671         }
2672
2673         function get_corrected_query_string() {
2674                 return QueryParser_get_corrected_query_string($this->_cPtr);
2675         }
2676
2677         function get_description() {
2678                 return QueryParser_get_description($this->_cPtr);
2679         }
2680 }
2681
2682 class XapianValueSetMatchDecider extends XapianMatchDecider {
2683         public $_cPtr=null;
2684
2685         function __set($var,$value) {
2686                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
2687                 XapianMatchDecider::__set($var,$value);
2688         }
2689
2690         function __get($var) {
2691                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
2692                 return XapianMatchDecider::__get($var);
2693         }
2694
2695         function __isset($var) {
2696                 if ($var === 'thisown') return true;
2697                 return XapianMatchDecider::__isset($var);
2698         }
2699
2700         function __construct($slot,$inclusive_=null) {
2701                 if (is_resource($slot) && get_resource_type($slot) === '_p_Xapian__ValueSetMatchDecider') {
2702                         $this->_cPtr=$slot;
2703                         return;
2704                 }
2705                 $this->_cPtr=new_ValueSetMatchDecider($slot,$inclusive_);
2706         }
2707
2708         function add_value($value) {
2709                 ValueSetMatchDecider_add_value($this->_cPtr,$value);
2710         }
2711
2712         function remove_value($value) {
2713                 ValueSetMatchDecider_remove_value($this->_cPtr,$value);
2714         }
2715
2716         function apply($doc) {
2717                 return ValueSetMatchDecider_apply($this->_cPtr,$doc);
2718         }
2719 }
2720
2721 abstract class XapianWeight {
2722         public $_cPtr=null;
2723         protected $_pData=array();
2724
2725         function __set($var,$value) {
2726                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
2727                 $this->_pData[$var] = $value;
2728         }
2729
2730         function __get($var) {
2731                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
2732                 return $this->_pData[$var];
2733         }
2734
2735         function __isset($var) {
2736                 if ($var === 'thisown') return true;
2737                 return array_key_exists($var, $this->_pData);
2738         }
2739         function __construct($h) {
2740                 $this->_cPtr=$h;
2741         }
2742
2743         const TWO_STAGE_SMOOTHING = 1;
2744
2745         const DIRICHLET_SMOOTHING = 2;
2746
2747         const ABSOLUTE_DISCOUNT_SMOOTHING = 3;
2748
2749         const JELINEK_MERCER_SMOOTHING = 4;
2750
2751         const DIRICHLET_PLUS_SMOOTHING = 5;
2752
2753         function name() {
2754                 return Weight_name($this->_cPtr);
2755         }
2756
2757         function get_sumpart($wdf,$doclen,$uniqterms) {
2758                 return Weight_get_sumpart($this->_cPtr,$wdf,$doclen,$uniqterms);
2759         }
2760
2761         function get_maxpart() {
2762                 return Weight_get_maxpart($this->_cPtr);
2763         }
2764
2765         function get_sumextra($doclen,$uniqterms) {
2766                 return Weight_get_sumextra($this->_cPtr,$doclen,$uniqterms);
2767         }
2768
2769         function get_maxextra() {
2770                 return Weight_get_maxextra($this->_cPtr);
2771         }
2772 }
2773
2774 class XapianBoolWeight extends XapianWeight {
2775         public $_cPtr=null;
2776
2777         function __set($var,$value) {
2778                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
2779                 XapianWeight::__set($var,$value);
2780         }
2781
2782         function __get($var) {
2783                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
2784                 return XapianWeight::__get($var);
2785         }
2786
2787         function __isset($var) {
2788                 if ($var === 'thisown') return true;
2789                 return XapianWeight::__isset($var);
2790         }
2791
2792         function __construct($res=null) {
2793                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__BoolWeight') {
2794                         $this->_cPtr=$res;
2795                         return;
2796                 }
2797                 $this->_cPtr=new_BoolWeight();
2798         }
2799
2800         function name() {
2801                 return BoolWeight_name($this->_cPtr);
2802         }
2803
2804         function get_sumpart($wdf,$doclen,$uniqterms) {
2805                 return BoolWeight_get_sumpart($this->_cPtr,$wdf,$doclen,$uniqterms);
2806         }
2807
2808         function get_maxpart() {
2809                 return BoolWeight_get_maxpart($this->_cPtr);
2810         }
2811
2812         function get_sumextra($doclen,$uniqterms) {
2813                 return BoolWeight_get_sumextra($this->_cPtr,$doclen,$uniqterms);
2814         }
2815
2816         function get_maxextra() {
2817                 return BoolWeight_get_maxextra($this->_cPtr);
2818         }
2819 }
2820
2821 class XapianTfIdfWeight extends XapianWeight {
2822         public $_cPtr=null;
2823
2824         function __set($var,$value) {
2825                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
2826                 XapianWeight::__set($var,$value);
2827         }
2828
2829         function __get($var) {
2830                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
2831                 return XapianWeight::__get($var);
2832         }
2833
2834         function __isset($var) {
2835                 if ($var === 'thisown') return true;
2836                 return XapianWeight::__isset($var);
2837         }
2838
2839         function __construct($normalizations=null) {
2840                 if (is_resource($normalizations) && get_resource_type($normalizations) === '_p_Xapian__TfIdfWeight') {
2841                         $this->_cPtr=$normalizations;
2842                         return;
2843                 }
2844                 switch (func_num_args()) {
2845                 case 0: $this->_cPtr=new_TfIdfWeight(); break;
2846                 default: $this->_cPtr=new_TfIdfWeight($normalizations);
2847                 }
2848         }
2849
2850         function name() {
2851                 return TfIdfWeight_name($this->_cPtr);
2852         }
2853
2854         function get_sumpart($wdf,$doclen,$uniqterm) {
2855                 return TfIdfWeight_get_sumpart($this->_cPtr,$wdf,$doclen,$uniqterm);
2856         }
2857
2858         function get_maxpart() {
2859                 return TfIdfWeight_get_maxpart($this->_cPtr);
2860         }
2861
2862         function get_sumextra($doclen,$uniqterms) {
2863                 return TfIdfWeight_get_sumextra($this->_cPtr,$doclen,$uniqterms);
2864         }
2865
2866         function get_maxextra() {
2867                 return TfIdfWeight_get_maxextra($this->_cPtr);
2868         }
2869 }
2870
2871 class XapianBM25Weight extends XapianWeight {
2872         public $_cPtr=null;
2873
2874         function __set($var,$value) {
2875                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
2876                 XapianWeight::__set($var,$value);
2877         }
2878
2879         function __get($var) {
2880                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
2881                 return XapianWeight::__get($var);
2882         }
2883
2884         function __isset($var) {
2885                 if ($var === 'thisown') return true;
2886                 return XapianWeight::__isset($var);
2887         }
2888
2889         function __construct($k1=null,$k2=null,$k3=null,$b=null,$min_normlen=null) {
2890                 if (is_resource($k1) && get_resource_type($k1) === '_p_Xapian__BM25Weight') {
2891                         $this->_cPtr=$k1;
2892                         return;
2893                 }
2894                 switch (func_num_args()) {
2895                 case 0: $this->_cPtr=new_BM25Weight(); break;
2896                 case 1: $this->_cPtr=new_BM25Weight($k1); break;
2897                 case 2: $this->_cPtr=new_BM25Weight($k1,$k2); break;
2898                 case 3: $this->_cPtr=new_BM25Weight($k1,$k2,$k3); break;
2899                 case 4: $this->_cPtr=new_BM25Weight($k1,$k2,$k3,$b); break;
2900                 default: $this->_cPtr=new_BM25Weight($k1,$k2,$k3,$b,$min_normlen);
2901                 }
2902         }
2903
2904         function name() {
2905                 return BM25Weight_name($this->_cPtr);
2906         }
2907
2908         function get_sumpart($wdf,$doclen,$uniqterm) {
2909                 return BM25Weight_get_sumpart($this->_cPtr,$wdf,$doclen,$uniqterm);
2910         }
2911
2912         function get_maxpart() {
2913                 return BM25Weight_get_maxpart($this->_cPtr);
2914         }
2915
2916         function get_sumextra($doclen,$uniqterms) {
2917                 return BM25Weight_get_sumextra($this->_cPtr,$doclen,$uniqterms);
2918         }
2919
2920         function get_maxextra() {
2921                 return BM25Weight_get_maxextra($this->_cPtr);
2922         }
2923 }
2924
2925 class XapianBM25PlusWeight extends XapianWeight {
2926         public $_cPtr=null;
2927
2928         function __set($var,$value) {
2929                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
2930                 XapianWeight::__set($var,$value);
2931         }
2932
2933         function __get($var) {
2934                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
2935                 return XapianWeight::__get($var);
2936         }
2937
2938         function __isset($var) {
2939                 if ($var === 'thisown') return true;
2940                 return XapianWeight::__isset($var);
2941         }
2942
2943         function __construct($k1=null,$k2=null,$k3=null,$b=null,$min_normlen=null,$delta=null) {
2944                 if (is_resource($k1) && get_resource_type($k1) === '_p_Xapian__BM25PlusWeight') {
2945                         $this->_cPtr=$k1;
2946                         return;
2947                 }
2948                 switch (func_num_args()) {
2949                 case 0: $this->_cPtr=new_BM25PlusWeight(); break;
2950                 case 1: $this->_cPtr=new_BM25PlusWeight($k1); break;
2951                 case 2: $this->_cPtr=new_BM25PlusWeight($k1,$k2); break;
2952                 case 3: $this->_cPtr=new_BM25PlusWeight($k1,$k2,$k3); break;
2953                 case 4: $this->_cPtr=new_BM25PlusWeight($k1,$k2,$k3,$b); break;
2954                 case 5: $this->_cPtr=new_BM25PlusWeight($k1,$k2,$k3,$b,$min_normlen); break;
2955                 default: $this->_cPtr=new_BM25PlusWeight($k1,$k2,$k3,$b,$min_normlen,$delta);
2956                 }
2957         }
2958
2959         function name() {
2960                 return BM25PlusWeight_name($this->_cPtr);
2961         }
2962
2963         function get_sumpart($wdf,$doclen,$uniqterm) {
2964                 return BM25PlusWeight_get_sumpart($this->_cPtr,$wdf,$doclen,$uniqterm);
2965         }
2966
2967         function get_maxpart() {
2968                 return BM25PlusWeight_get_maxpart($this->_cPtr);
2969         }
2970
2971         function get_sumextra($doclen,$uniqterms) {
2972                 return BM25PlusWeight_get_sumextra($this->_cPtr,$doclen,$uniqterms);
2973         }
2974
2975         function get_maxextra() {
2976                 return BM25PlusWeight_get_maxextra($this->_cPtr);
2977         }
2978 }
2979
2980 class XapianTradWeight extends XapianWeight {
2981         public $_cPtr=null;
2982
2983         function __set($var,$value) {
2984                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
2985                 XapianWeight::__set($var,$value);
2986         }
2987
2988         function __get($var) {
2989                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
2990                 return XapianWeight::__get($var);
2991         }
2992
2993         function __isset($var) {
2994                 if ($var === 'thisown') return true;
2995                 return XapianWeight::__isset($var);
2996         }
2997
2998         function __construct($k=1.0) {
2999                 if (is_resource($k) && get_resource_type($k) === '_p_Xapian__TradWeight') {
3000                         $this->_cPtr=$k;
3001                         return;
3002                 }
3003                 $this->_cPtr=new_TradWeight($k);
3004         }
3005
3006         function name() {
3007                 return TradWeight_name($this->_cPtr);
3008         }
3009
3010         function get_sumpart($wdf,$doclen,$uniqueterms) {
3011                 return TradWeight_get_sumpart($this->_cPtr,$wdf,$doclen,$uniqueterms);
3012         }
3013
3014         function get_maxpart() {
3015                 return TradWeight_get_maxpart($this->_cPtr);
3016         }
3017
3018         function get_sumextra($doclen,$uniqterms) {
3019                 return TradWeight_get_sumextra($this->_cPtr,$doclen,$uniqterms);
3020         }
3021
3022         function get_maxextra() {
3023                 return TradWeight_get_maxextra($this->_cPtr);
3024         }
3025 }
3026
3027 class XapianInL2Weight extends XapianWeight {
3028         public $_cPtr=null;
3029
3030         function __set($var,$value) {
3031                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
3032                 XapianWeight::__set($var,$value);
3033         }
3034
3035         function __get($var) {
3036                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
3037                 return XapianWeight::__get($var);
3038         }
3039
3040         function __isset($var) {
3041                 if ($var === 'thisown') return true;
3042                 return XapianWeight::__isset($var);
3043         }
3044
3045         function __construct($c_=null) {
3046                 if (is_resource($c_) && get_resource_type($c_) === '_p_Xapian__InL2Weight') {
3047                         $this->_cPtr=$c_;
3048                         return;
3049                 }
3050                 switch (func_num_args()) {
3051                 case 0: $this->_cPtr=new_InL2Weight(); break;
3052                 default: $this->_cPtr=new_InL2Weight($c_);
3053                 }
3054         }
3055
3056         function name() {
3057                 return InL2Weight_name($this->_cPtr);
3058         }
3059
3060         function get_sumpart($wdf,$doclen,$uniqterms) {
3061                 return InL2Weight_get_sumpart($this->_cPtr,$wdf,$doclen,$uniqterms);
3062         }
3063
3064         function get_maxpart() {
3065                 return InL2Weight_get_maxpart($this->_cPtr);
3066         }
3067
3068         function get_sumextra($doclen,$uniqterms) {
3069                 return InL2Weight_get_sumextra($this->_cPtr,$doclen,$uniqterms);
3070         }
3071
3072         function get_maxextra() {
3073                 return InL2Weight_get_maxextra($this->_cPtr);
3074         }
3075 }
3076
3077 class XapianIfB2Weight extends XapianWeight {
3078         public $_cPtr=null;
3079
3080         function __set($var,$value) {
3081                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
3082                 XapianWeight::__set($var,$value);
3083         }
3084
3085         function __get($var) {
3086                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
3087                 return XapianWeight::__get($var);
3088         }
3089
3090         function __isset($var) {
3091                 if ($var === 'thisown') return true;
3092                 return XapianWeight::__isset($var);
3093         }
3094
3095         function __construct($c_=null) {
3096                 if (is_resource($c_) && get_resource_type($c_) === '_p_Xapian__IfB2Weight') {
3097                         $this->_cPtr=$c_;
3098                         return;
3099                 }
3100                 switch (func_num_args()) {
3101                 case 0: $this->_cPtr=new_IfB2Weight(); break;
3102                 default: $this->_cPtr=new_IfB2Weight($c_);
3103                 }
3104         }
3105
3106         function name() {
3107                 return IfB2Weight_name($this->_cPtr);
3108         }
3109
3110         function get_sumpart($wdf,$doclen,$uniqterm) {
3111                 return IfB2Weight_get_sumpart($this->_cPtr,$wdf,$doclen,$uniqterm);
3112         }
3113
3114         function get_maxpart() {
3115                 return IfB2Weight_get_maxpart($this->_cPtr);
3116         }
3117
3118         function get_sumextra($doclen,$uniqterms) {
3119                 return IfB2Weight_get_sumextra($this->_cPtr,$doclen,$uniqterms);
3120         }
3121
3122         function get_maxextra() {
3123                 return IfB2Weight_get_maxextra($this->_cPtr);
3124         }
3125 }
3126
3127 class XapianIneB2Weight extends XapianWeight {
3128         public $_cPtr=null;
3129
3130         function __set($var,$value) {
3131                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
3132                 XapianWeight::__set($var,$value);
3133         }
3134
3135         function __get($var) {
3136                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
3137                 return XapianWeight::__get($var);
3138         }
3139
3140         function __isset($var) {
3141                 if ($var === 'thisown') return true;
3142                 return XapianWeight::__isset($var);
3143         }
3144
3145         function __construct($c_=null) {
3146                 if (is_resource($c_) && get_resource_type($c_) === '_p_Xapian__IneB2Weight') {
3147                         $this->_cPtr=$c_;
3148                         return;
3149                 }
3150                 switch (func_num_args()) {
3151                 case 0: $this->_cPtr=new_IneB2Weight(); break;
3152                 default: $this->_cPtr=new_IneB2Weight($c_);
3153                 }
3154         }
3155
3156         function name() {
3157                 return IneB2Weight_name($this->_cPtr);
3158         }
3159
3160         function get_sumpart($wdf,$doclen,$uniqterms) {
3161                 return IneB2Weight_get_sumpart($this->_cPtr,$wdf,$doclen,$uniqterms);
3162         }
3163
3164         function get_maxpart() {
3165                 return IneB2Weight_get_maxpart($this->_cPtr);
3166         }
3167
3168         function get_sumextra($doclen,$uniqterms) {
3169                 return IneB2Weight_get_sumextra($this->_cPtr,$doclen,$uniqterms);
3170         }
3171
3172         function get_maxextra() {
3173                 return IneB2Weight_get_maxextra($this->_cPtr);
3174         }
3175 }
3176
3177 class XapianBB2Weight extends XapianWeight {
3178         public $_cPtr=null;
3179
3180         function __set($var,$value) {
3181                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
3182                 XapianWeight::__set($var,$value);
3183         }
3184
3185         function __get($var) {
3186                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
3187                 return XapianWeight::__get($var);
3188         }
3189
3190         function __isset($var) {
3191                 if ($var === 'thisown') return true;
3192                 return XapianWeight::__isset($var);
3193         }
3194
3195         function __construct($c_=null) {
3196                 if (is_resource($c_) && get_resource_type($c_) === '_p_Xapian__BB2Weight') {
3197                         $this->_cPtr=$c_;
3198                         return;
3199                 }
3200                 switch (func_num_args()) {
3201                 case 0: $this->_cPtr=new_BB2Weight(); break;
3202                 default: $this->_cPtr=new_BB2Weight($c_);
3203                 }
3204         }
3205
3206         function name() {
3207                 return BB2Weight_name($this->_cPtr);
3208         }
3209
3210         function get_sumpart($wdf,$doclen,$uniqterms) {
3211                 return BB2Weight_get_sumpart($this->_cPtr,$wdf,$doclen,$uniqterms);
3212         }
3213
3214         function get_maxpart() {
3215                 return BB2Weight_get_maxpart($this->_cPtr);
3216         }
3217
3218         function get_sumextra($doclen,$uniqterms) {
3219                 return BB2Weight_get_sumextra($this->_cPtr,$doclen,$uniqterms);
3220         }
3221
3222         function get_maxextra() {
3223                 return BB2Weight_get_maxextra($this->_cPtr);
3224         }
3225 }
3226
3227 class XapianDLHWeight extends XapianWeight {
3228         public $_cPtr=null;
3229
3230         function __set($var,$value) {
3231                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
3232                 XapianWeight::__set($var,$value);
3233         }
3234
3235         function __get($var) {
3236                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
3237                 return XapianWeight::__get($var);
3238         }
3239
3240         function __isset($var) {
3241                 if ($var === 'thisown') return true;
3242                 return XapianWeight::__isset($var);
3243         }
3244
3245         function __construct($res=null) {
3246                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__DLHWeight') {
3247                         $this->_cPtr=$res;
3248                         return;
3249                 }
3250                 $this->_cPtr=new_DLHWeight();
3251         }
3252
3253         function name() {
3254                 return DLHWeight_name($this->_cPtr);
3255         }
3256
3257         function get_sumpart($wdf,$doclen,$uniqterms) {
3258                 return DLHWeight_get_sumpart($this->_cPtr,$wdf,$doclen,$uniqterms);
3259         }
3260
3261         function get_maxpart() {
3262                 return DLHWeight_get_maxpart($this->_cPtr);
3263         }
3264
3265         function get_sumextra($doclen,$uniqterms) {
3266                 return DLHWeight_get_sumextra($this->_cPtr,$doclen,$uniqterms);
3267         }
3268
3269         function get_maxextra() {
3270                 return DLHWeight_get_maxextra($this->_cPtr);
3271         }
3272 }
3273
3274 class XapianPL2Weight extends XapianWeight {
3275         public $_cPtr=null;
3276
3277         function __set($var,$value) {
3278                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
3279                 XapianWeight::__set($var,$value);
3280         }
3281
3282         function __get($var) {
3283                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
3284                 return XapianWeight::__get($var);
3285         }
3286
3287         function __isset($var) {
3288                 if ($var === 'thisown') return true;
3289                 return XapianWeight::__isset($var);
3290         }
3291
3292         function __construct($c_=null) {
3293                 if (is_resource($c_) && get_resource_type($c_) === '_p_Xapian__PL2Weight') {
3294                         $this->_cPtr=$c_;
3295                         return;
3296                 }
3297                 switch (func_num_args()) {
3298                 case 0: $this->_cPtr=new_PL2Weight(); break;
3299                 default: $this->_cPtr=new_PL2Weight($c_);
3300                 }
3301         }
3302
3303         function name() {
3304                 return PL2Weight_name($this->_cPtr);
3305         }
3306
3307         function get_sumpart($wdf,$doclen,$uniqterms) {
3308                 return PL2Weight_get_sumpart($this->_cPtr,$wdf,$doclen,$uniqterms);
3309         }
3310
3311         function get_maxpart() {
3312                 return PL2Weight_get_maxpart($this->_cPtr);
3313         }
3314
3315         function get_sumextra($doclen,$uniqterms) {
3316                 return PL2Weight_get_sumextra($this->_cPtr,$doclen,$uniqterms);
3317         }
3318
3319         function get_maxextra() {
3320                 return PL2Weight_get_maxextra($this->_cPtr);
3321         }
3322 }
3323
3324 class XapianPL2PlusWeight extends XapianWeight {
3325         public $_cPtr=null;
3326
3327         function __set($var,$value) {
3328                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
3329                 XapianWeight::__set($var,$value);
3330         }
3331
3332         function __get($var) {
3333                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
3334                 return XapianWeight::__get($var);
3335         }
3336
3337         function __isset($var) {
3338                 if ($var === 'thisown') return true;
3339                 return XapianWeight::__isset($var);
3340         }
3341
3342         function __construct($c_=null,$delta=null) {
3343                 if (is_resource($c_) && get_resource_type($c_) === '_p_Xapian__PL2PlusWeight') {
3344                         $this->_cPtr=$c_;
3345                         return;
3346                 }
3347                 switch (func_num_args()) {
3348                 case 0: $this->_cPtr=new_PL2PlusWeight(); break;
3349                 case 1: $this->_cPtr=new_PL2PlusWeight($c_); break;
3350                 default: $this->_cPtr=new_PL2PlusWeight($c_,$delta);
3351                 }
3352         }
3353
3354         function name() {
3355                 return PL2PlusWeight_name($this->_cPtr);
3356         }
3357
3358         function get_sumpart($wdf,$doclen,$uniqterms) {
3359                 return PL2PlusWeight_get_sumpart($this->_cPtr,$wdf,$doclen,$uniqterms);
3360         }
3361
3362         function get_maxpart() {
3363                 return PL2PlusWeight_get_maxpart($this->_cPtr);
3364         }
3365
3366         function get_sumextra($doclen,$uniqterms) {
3367                 return PL2PlusWeight_get_sumextra($this->_cPtr,$doclen,$uniqterms);
3368         }
3369
3370         function get_maxextra() {
3371                 return PL2PlusWeight_get_maxextra($this->_cPtr);
3372         }
3373 }
3374
3375 class XapianDPHWeight extends XapianWeight {
3376         public $_cPtr=null;
3377
3378         function __set($var,$value) {
3379                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
3380                 XapianWeight::__set($var,$value);
3381         }
3382
3383         function __get($var) {
3384                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
3385                 return XapianWeight::__get($var);
3386         }
3387
3388         function __isset($var) {
3389                 if ($var === 'thisown') return true;
3390                 return XapianWeight::__isset($var);
3391         }
3392
3393         function __construct($res=null) {
3394                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__DPHWeight') {
3395                         $this->_cPtr=$res;
3396                         return;
3397                 }
3398                 $this->_cPtr=new_DPHWeight();
3399         }
3400
3401         function name() {
3402                 return DPHWeight_name($this->_cPtr);
3403         }
3404
3405         function get_sumpart($wdf,$doclen,$uniqterms) {
3406                 return DPHWeight_get_sumpart($this->_cPtr,$wdf,$doclen,$uniqterms);
3407         }
3408
3409         function get_maxpart() {
3410                 return DPHWeight_get_maxpart($this->_cPtr);
3411         }
3412
3413         function get_sumextra($doclen,$uniqterms) {
3414                 return DPHWeight_get_sumextra($this->_cPtr,$doclen,$uniqterms);
3415         }
3416
3417         function get_maxextra() {
3418                 return DPHWeight_get_maxextra($this->_cPtr);
3419         }
3420 }
3421
3422 class XapianLMWeight extends XapianWeight {
3423         public $_cPtr=null;
3424
3425         function __set($var,$value) {
3426                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
3427                 XapianWeight::__set($var,$value);
3428         }
3429
3430         function __get($var) {
3431                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
3432                 return XapianWeight::__get($var);
3433         }
3434
3435         function __isset($var) {
3436                 if ($var === 'thisown') return true;
3437                 return XapianWeight::__isset($var);
3438         }
3439
3440         function __construct($param_log_=0.0,$select_smoothing_=null,$param_smoothing1_=-1.0,$param_smoothing2_=-1.0) {
3441                 if (is_resource($param_log_) && get_resource_type($param_log_) === '_p_Xapian__LMWeight') {
3442                         $this->_cPtr=$param_log_;
3443                         return;
3444                 }
3445                 switch (func_num_args()) {
3446                 case 0: case 1: $this->_cPtr=new_LMWeight($param_log_); break;
3447                 default: $this->_cPtr=new_LMWeight($param_log_,$select_smoothing_,$param_smoothing1_,$param_smoothing2_);
3448                 }
3449         }
3450
3451         function name() {
3452                 return LMWeight_name($this->_cPtr);
3453         }
3454
3455         function get_sumpart($wdf,$doclen,$uniqterm) {
3456                 return LMWeight_get_sumpart($this->_cPtr,$wdf,$doclen,$uniqterm);
3457         }
3458
3459         function get_maxpart() {
3460                 return LMWeight_get_maxpart($this->_cPtr);
3461         }
3462
3463         function get_sumextra($doclen,$arg2) {
3464                 return LMWeight_get_sumextra($this->_cPtr,$doclen,$arg2);
3465         }
3466
3467         function get_maxextra() {
3468                 return LMWeight_get_maxextra($this->_cPtr);
3469         }
3470 }
3471
3472 class XapianCoordWeight extends XapianWeight {
3473         public $_cPtr=null;
3474
3475         function __set($var,$value) {
3476                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
3477                 XapianWeight::__set($var,$value);
3478         }
3479
3480         function __get($var) {
3481                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
3482                 return XapianWeight::__get($var);
3483         }
3484
3485         function __isset($var) {
3486                 if ($var === 'thisown') return true;
3487                 return XapianWeight::__isset($var);
3488         }
3489
3490         function init($factor_) {
3491                 CoordWeight_init($this->_cPtr,$factor_);
3492         }
3493
3494         function __construct($res=null) {
3495                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__CoordWeight') {
3496                         $this->_cPtr=$res;
3497                         return;
3498                 }
3499                 $this->_cPtr=new_CoordWeight();
3500         }
3501
3502         function name() {
3503                 return CoordWeight_name($this->_cPtr);
3504         }
3505
3506         function get_sumpart($wdf,$doclen,$uniqterm) {
3507                 return CoordWeight_get_sumpart($this->_cPtr,$wdf,$doclen,$uniqterm);
3508         }
3509
3510         function get_maxpart() {
3511                 return CoordWeight_get_maxpart($this->_cPtr);
3512         }
3513
3514         function get_sumextra($arg1,$arg2) {
3515                 return CoordWeight_get_sumextra($this->_cPtr,$arg1,$arg2);
3516         }
3517
3518         function get_maxextra() {
3519                 return CoordWeight_get_maxextra($this->_cPtr);
3520         }
3521 }
3522
3523 class XapianCompactor {
3524         public $_cPtr=null;
3525         protected $_pData=array();
3526
3527         function __set($var,$value) {
3528                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
3529                 $this->_pData[$var] = $value;
3530         }
3531
3532         function __get($var) {
3533                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
3534                 return $this->_pData[$var];
3535         }
3536
3537         function __isset($var) {
3538                 if ($var === 'thisown') return true;
3539                 return array_key_exists($var, $this->_pData);
3540         }
3541
3542         const STANDARD = 0;
3543
3544         const FULL = 1;
3545
3546         const FULLER = 2;
3547
3548         function __construct($res=null) {
3549                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__Compactor') {
3550                         $this->_cPtr=$res;
3551                         return;
3552                 }
3553                 if (get_class($this) === 'XapianCompactor') {
3554                         $_this = null;
3555                 } else {
3556                         $_this = $this;
3557                 }
3558                 $this->_cPtr=new_Compactor($_this);
3559         }
3560
3561         function set_block_size($block_size) {
3562                 Compactor_set_block_size($this->_cPtr,$block_size);
3563         }
3564
3565         function set_renumber($renumber) {
3566                 Compactor_set_renumber($this->_cPtr,$renumber);
3567         }
3568
3569         function set_multipass($multipass) {
3570                 Compactor_set_multipass($this->_cPtr,$multipass);
3571         }
3572
3573         function set_compaction_level($compaction) {
3574                 Compactor_set_compaction_level($this->_cPtr,$compaction);
3575         }
3576
3577         function set_destdir($destdir) {
3578                 Compactor_set_destdir($this->_cPtr,$destdir);
3579         }
3580
3581         function add_source($srcdir) {
3582                 Compactor_add_source($this->_cPtr,$srcdir);
3583         }
3584
3585         function compact() {
3586                 Compactor_compact($this->_cPtr);
3587         }
3588
3589         function set_status($table,$status) {
3590                 Compactor_set_status($this->_cPtr,$table,$status);
3591         }
3592
3593         function resolve_duplicate_metadata($key,$num_tags,$tags) {
3594                 return Compactor_resolve_duplicate_metadata($this->_cPtr,$key,$num_tags,$tags);
3595         }
3596 }
3597
3598 abstract class XapianPostingSource {
3599         public $_cPtr=null;
3600         protected $_pData=array();
3601
3602         function __set($var,$value) {
3603                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
3604                 $this->_pData[$var] = $value;
3605         }
3606
3607         function __get($var) {
3608                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
3609                 return $this->_pData[$var];
3610         }
3611
3612         function __isset($var) {
3613                 if ($var === 'thisown') return true;
3614                 return array_key_exists($var, $this->_pData);
3615         }
3616
3617         function __construct($res=null) {
3618                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__PostingSource') {
3619                         $this->_cPtr=$res;
3620                         return;
3621                 }
3622                 if (get_class($this) === 'XapianPostingSource') {
3623                         $_this = null;
3624                 } else {
3625                         $_this = $this;
3626                 }
3627                 $this->_cPtr=new_PostingSource($_this);
3628         }
3629
3630         function get_termfreq_min() {
3631                 return PostingSource_get_termfreq_min($this->_cPtr);
3632         }
3633
3634         function get_termfreq_est() {
3635                 return PostingSource_get_termfreq_est($this->_cPtr);
3636         }
3637
3638         function get_termfreq_max() {
3639                 return PostingSource_get_termfreq_max($this->_cPtr);
3640         }
3641
3642         function set_maxweight($max_weight) {
3643                 PostingSource_set_maxweight($this->_cPtr,$max_weight);
3644         }
3645
3646         function get_maxweight() {
3647                 return PostingSource_get_maxweight($this->_cPtr);
3648         }
3649
3650         function get_weight() {
3651                 return PostingSource_get_weight($this->_cPtr);
3652         }
3653
3654         function get_docid() {
3655                 return PostingSource_get_docid($this->_cPtr);
3656         }
3657
3658         function next($min_wt) {
3659                 PostingSource_next($this->_cPtr,$min_wt);
3660         }
3661
3662         function skip_to($did,$min_wt) {
3663                 PostingSource_skip_to($this->_cPtr,$did,$min_wt);
3664         }
3665
3666         function check($did,$min_wt) {
3667                 return PostingSource_check($this->_cPtr,$did,$min_wt);
3668         }
3669
3670         function at_end() {
3671                 return PostingSource_at_end($this->_cPtr);
3672         }
3673
3674         function name() {
3675                 return PostingSource_name($this->_cPtr);
3676         }
3677
3678         function init(XapianDatabase $db) {
3679                 PostingSource_init($this->_cPtr,$db);
3680         }
3681
3682         function get_description() {
3683                 return PostingSource_get_description($this->_cPtr);
3684         }
3685
3686         function release() {
3687                 $r=PostingSource_release($this->_cPtr);
3688                 $this->_cPtr = $r;
3689                 return $this;
3690         }
3691 }
3692
3693 class XapianValuePostingSource extends XapianPostingSource {
3694         public $_cPtr=null;
3695
3696         function __set($var,$value) {
3697                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
3698                 XapianPostingSource::__set($var,$value);
3699         }
3700
3701         function __get($var) {
3702                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
3703                 return XapianPostingSource::__get($var);
3704         }
3705
3706         function __isset($var) {
3707                 if ($var === 'thisown') return true;
3708                 return XapianPostingSource::__isset($var);
3709         }
3710
3711         function __construct($slot_) {
3712                 if (is_resource($slot_) && get_resource_type($slot_) === '_p_Xapian__ValuePostingSource') {
3713                         $this->_cPtr=$slot_;
3714                         return;
3715                 }
3716                 if (get_class($this) === 'XapianValuePostingSource') {
3717                         $_this = null;
3718                 } else {
3719                         $_this = $this;
3720                 }
3721                 $this->_cPtr=new_ValuePostingSource($_this, $slot_);
3722         }
3723
3724         function get_termfreq_min() {
3725                 return ValuePostingSource_get_termfreq_min($this->_cPtr);
3726         }
3727
3728         function get_termfreq_est() {
3729                 return ValuePostingSource_get_termfreq_est($this->_cPtr);
3730         }
3731
3732         function get_termfreq_max() {
3733                 return ValuePostingSource_get_termfreq_max($this->_cPtr);
3734         }
3735
3736         function next($min_wt) {
3737                 ValuePostingSource_next($this->_cPtr,$min_wt);
3738         }
3739
3740         function skip_to($min_docid,$min_wt) {
3741                 ValuePostingSource_skip_to($this->_cPtr,$min_docid,$min_wt);
3742         }
3743
3744         function check($min_docid,$min_wt) {
3745                 return ValuePostingSource_check($this->_cPtr,$min_docid,$min_wt);
3746         }
3747
3748         function at_end() {
3749                 return ValuePostingSource_at_end($this->_cPtr);
3750         }
3751
3752         function get_docid() {
3753                 return ValuePostingSource_get_docid($this->_cPtr);
3754         }
3755
3756         function init(XapianDatabase $db_) {
3757                 ValuePostingSource_init($this->_cPtr,$db_);
3758         }
3759
3760         function get_database() {
3761                 $r=ValuePostingSource_get_database($this->_cPtr);
3762                 if (is_resource($r)) {
3763                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
3764                         if (class_exists($c)) return new $c($r);
3765                         return new XapianDatabase($r);
3766                 }
3767                 return $r;
3768         }
3769
3770         function get_slot() {
3771                 return ValuePostingSource_get_slot($this->_cPtr);
3772         }
3773
3774         function get_value() {
3775                 return ValuePostingSource_get_value($this->_cPtr);
3776         }
3777
3778         function done() {
3779                 ValuePostingSource_done($this->_cPtr);
3780         }
3781
3782         function get_started() {
3783                 return ValuePostingSource_get_started($this->_cPtr);
3784         }
3785
3786         function set_termfreq_min($termfreq_min_) {
3787                 ValuePostingSource_set_termfreq_min($this->_cPtr,$termfreq_min_);
3788         }
3789
3790         function set_termfreq_est($termfreq_est_) {
3791                 ValuePostingSource_set_termfreq_est($this->_cPtr,$termfreq_est_);
3792         }
3793
3794         function set_termfreq_max($termfreq_max_) {
3795                 ValuePostingSource_set_termfreq_max($this->_cPtr,$termfreq_max_);
3796         }
3797 }
3798
3799 class XapianValueWeightPostingSource extends XapianValuePostingSource {
3800         public $_cPtr=null;
3801
3802         function __set($var,$value) {
3803                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
3804                 XapianValuePostingSource::__set($var,$value);
3805         }
3806
3807         function __get($var) {
3808                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
3809                 return XapianValuePostingSource::__get($var);
3810         }
3811
3812         function __isset($var) {
3813                 if ($var === 'thisown') return true;
3814                 return XapianValuePostingSource::__isset($var);
3815         }
3816
3817         function __construct($slot_) {
3818                 if (is_resource($slot_) && get_resource_type($slot_) === '_p_Xapian__ValueWeightPostingSource') {
3819                         $this->_cPtr=$slot_;
3820                         return;
3821                 }
3822                 if (get_class($this) === 'XapianValueWeightPostingSource') {
3823                         $_this = null;
3824                 } else {
3825                         $_this = $this;
3826                 }
3827                 $this->_cPtr=new_ValueWeightPostingSource($_this, $slot_);
3828         }
3829
3830         function get_weight() {
3831                 return ValueWeightPostingSource_get_weight($this->_cPtr);
3832         }
3833
3834         function name() {
3835                 return ValueWeightPostingSource_name($this->_cPtr);
3836         }
3837
3838         function init(XapianDatabase $db_) {
3839                 ValueWeightPostingSource_init($this->_cPtr,$db_);
3840         }
3841
3842         function get_description() {
3843                 return ValueWeightPostingSource_get_description($this->_cPtr);
3844         }
3845 }
3846
3847 class XapianDecreasingValueWeightPostingSource extends XapianValueWeightPostingSource {
3848         public $_cPtr=null;
3849
3850         function __set($var,$value) {
3851                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
3852                 XapianValueWeightPostingSource::__set($var,$value);
3853         }
3854
3855         function __get($var) {
3856                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
3857                 return XapianValueWeightPostingSource::__get($var);
3858         }
3859
3860         function __isset($var) {
3861                 if ($var === 'thisown') return true;
3862                 return XapianValueWeightPostingSource::__isset($var);
3863         }
3864
3865         function __construct($slot_,$range_start_=0,$range_end_=0) {
3866                 if (is_resource($slot_) && get_resource_type($slot_) === '_p_Xapian__DecreasingValueWeightPostingSource') {
3867                         $this->_cPtr=$slot_;
3868                         return;
3869                 }
3870                 $this->_cPtr=new_DecreasingValueWeightPostingSource($slot_,$range_start_,$range_end_);
3871         }
3872
3873         function get_weight() {
3874                 return DecreasingValueWeightPostingSource_get_weight($this->_cPtr);
3875         }
3876
3877         function name() {
3878                 return DecreasingValueWeightPostingSource_name($this->_cPtr);
3879         }
3880
3881         function init(XapianDatabase $db_) {
3882                 DecreasingValueWeightPostingSource_init($this->_cPtr,$db_);
3883         }
3884
3885         function next($min_wt) {
3886                 DecreasingValueWeightPostingSource_next($this->_cPtr,$min_wt);
3887         }
3888
3889         function skip_to($min_docid,$min_wt) {
3890                 DecreasingValueWeightPostingSource_skip_to($this->_cPtr,$min_docid,$min_wt);
3891         }
3892
3893         function check($min_docid,$min_wt) {
3894                 return DecreasingValueWeightPostingSource_check($this->_cPtr,$min_docid,$min_wt);
3895         }
3896
3897         function get_description() {
3898                 return DecreasingValueWeightPostingSource_get_description($this->_cPtr);
3899         }
3900 }
3901
3902 class XapianValueMapPostingSource extends XapianValuePostingSource {
3903         public $_cPtr=null;
3904
3905         function __set($var,$value) {
3906                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
3907                 XapianValuePostingSource::__set($var,$value);
3908         }
3909
3910         function __get($var) {
3911                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
3912                 return XapianValuePostingSource::__get($var);
3913         }
3914
3915         function __isset($var) {
3916                 if ($var === 'thisown') return true;
3917                 return XapianValuePostingSource::__isset($var);
3918         }
3919
3920         function __construct($slot_) {
3921                 if (is_resource($slot_) && get_resource_type($slot_) === '_p_Xapian__ValueMapPostingSource') {
3922                         $this->_cPtr=$slot_;
3923                         return;
3924                 }
3925                 $this->_cPtr=new_ValueMapPostingSource($slot_);
3926         }
3927
3928         function add_mapping($key,$wt) {
3929                 ValueMapPostingSource_add_mapping($this->_cPtr,$key,$wt);
3930         }
3931
3932         function clear_mappings() {
3933                 ValueMapPostingSource_clear_mappings($this->_cPtr);
3934         }
3935
3936         function set_default_weight($wt) {
3937                 ValueMapPostingSource_set_default_weight($this->_cPtr,$wt);
3938         }
3939
3940         function get_weight() {
3941                 return ValueMapPostingSource_get_weight($this->_cPtr);
3942         }
3943
3944         function name() {
3945                 return ValueMapPostingSource_name($this->_cPtr);
3946         }
3947
3948         function init(XapianDatabase $db_) {
3949                 ValueMapPostingSource_init($this->_cPtr,$db_);
3950         }
3951
3952         function get_description() {
3953                 return ValueMapPostingSource_get_description($this->_cPtr);
3954         }
3955 }
3956
3957 class XapianFixedWeightPostingSource extends XapianPostingSource {
3958         public $_cPtr=null;
3959
3960         function __set($var,$value) {
3961                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
3962                 XapianPostingSource::__set($var,$value);
3963         }
3964
3965         function __get($var) {
3966                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
3967                 return XapianPostingSource::__get($var);
3968         }
3969
3970         function __isset($var) {
3971                 if ($var === 'thisown') return true;
3972                 return XapianPostingSource::__isset($var);
3973         }
3974
3975         function __construct($wt) {
3976                 if (is_resource($wt) && get_resource_type($wt) === '_p_Xapian__FixedWeightPostingSource') {
3977                         $this->_cPtr=$wt;
3978                         return;
3979                 }
3980                 $this->_cPtr=new_FixedWeightPostingSource($wt);
3981         }
3982
3983         function get_termfreq_min() {
3984                 return FixedWeightPostingSource_get_termfreq_min($this->_cPtr);
3985         }
3986
3987         function get_termfreq_est() {
3988                 return FixedWeightPostingSource_get_termfreq_est($this->_cPtr);
3989         }
3990
3991         function get_termfreq_max() {
3992                 return FixedWeightPostingSource_get_termfreq_max($this->_cPtr);
3993         }
3994
3995         function get_weight() {
3996                 return FixedWeightPostingSource_get_weight($this->_cPtr);
3997         }
3998
3999         function next($min_wt) {
4000                 FixedWeightPostingSource_next($this->_cPtr,$min_wt);
4001         }
4002
4003         function skip_to($min_docid,$min_wt) {
4004                 FixedWeightPostingSource_skip_to($this->_cPtr,$min_docid,$min_wt);
4005         }
4006
4007         function check($min_docid,$min_wt) {
4008                 return FixedWeightPostingSource_check($this->_cPtr,$min_docid,$min_wt);
4009         }
4010
4011         function at_end() {
4012                 return FixedWeightPostingSource_at_end($this->_cPtr);
4013         }
4014
4015         function get_docid() {
4016                 return FixedWeightPostingSource_get_docid($this->_cPtr);
4017         }
4018
4019         function name() {
4020                 return FixedWeightPostingSource_name($this->_cPtr);
4021         }
4022
4023         function init(XapianDatabase $db_) {
4024                 FixedWeightPostingSource_init($this->_cPtr,$db_);
4025         }
4026
4027         function get_description() {
4028                 return FixedWeightPostingSource_get_description($this->_cPtr);
4029         }
4030 }
4031
4032 abstract class XapianMatchSpy {
4033         public $_cPtr=null;
4034         protected $_pData=array();
4035
4036         function __set($var,$value) {
4037                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
4038                 $this->_pData[$var] = $value;
4039         }
4040
4041         function __get($var) {
4042                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
4043                 return $this->_pData[$var];
4044         }
4045
4046         function __isset($var) {
4047                 if ($var === 'thisown') return true;
4048                 return array_key_exists($var, $this->_pData);
4049         }
4050
4051         function __construct($res=null) {
4052                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__MatchSpy') {
4053                         $this->_cPtr=$res;
4054                         return;
4055                 }
4056                 if (get_class($this) === 'XapianMatchSpy') {
4057                         $_this = null;
4058                 } else {
4059                         $_this = $this;
4060                 }
4061                 $this->_cPtr=new_MatchSpy($_this);
4062         }
4063
4064         function apply($doc,$wt) {
4065                 MatchSpy_apply($this->_cPtr,$doc,$wt);
4066         }
4067
4068         function name() {
4069                 return MatchSpy_name($this->_cPtr);
4070         }
4071
4072         function merge_results($serialised) {
4073                 MatchSpy_merge_results($this->_cPtr,$serialised);
4074         }
4075
4076         function get_description() {
4077                 return MatchSpy_get_description($this->_cPtr);
4078         }
4079
4080         function release() {
4081                 $r=MatchSpy_release($this->_cPtr);
4082                 $this->_cPtr = $r;
4083                 return $this;
4084         }
4085 }
4086
4087 class XapianValueCountMatchSpy extends XapianMatchSpy {
4088         public $_cPtr=null;
4089
4090         function __set($var,$value) {
4091                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
4092                 XapianMatchSpy::__set($var,$value);
4093         }
4094
4095         function __get($var) {
4096                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
4097                 return XapianMatchSpy::__get($var);
4098         }
4099
4100         function __isset($var) {
4101                 if ($var === 'thisown') return true;
4102                 return XapianMatchSpy::__isset($var);
4103         }
4104
4105         function __construct($slot_=null) {
4106                 if (is_resource($slot_) && get_resource_type($slot_) === '_p_Xapian__ValueCountMatchSpy') {
4107                         $this->_cPtr=$slot_;
4108                         return;
4109                 }
4110                 switch (func_num_args()) {
4111                 case 0: $this->_cPtr=new_ValueCountMatchSpy(); break;
4112                 default: $this->_cPtr=new_ValueCountMatchSpy($slot_);
4113                 }
4114         }
4115
4116         function get_total() {
4117                 return ValueCountMatchSpy_get_total($this->_cPtr);
4118         }
4119
4120         function values_begin() {
4121                 $r=ValueCountMatchSpy_values_begin($this->_cPtr);
4122                 if (is_resource($r)) {
4123                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
4124                         if (class_exists($c)) return new $c($r);
4125                         return new XapianTermIterator($r);
4126                 }
4127                 return $r;
4128         }
4129
4130         function values_end() {
4131                 $r=ValueCountMatchSpy_values_end($this->_cPtr);
4132                 if (is_resource($r)) {
4133                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
4134                         if (class_exists($c)) return new $c($r);
4135                         return new XapianTermIterator($r);
4136                 }
4137                 return $r;
4138         }
4139
4140         function top_values_begin($maxvalues) {
4141                 $r=ValueCountMatchSpy_top_values_begin($this->_cPtr,$maxvalues);
4142                 if (is_resource($r)) {
4143                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
4144                         if (class_exists($c)) return new $c($r);
4145                         return new XapianTermIterator($r);
4146                 }
4147                 return $r;
4148         }
4149
4150         function top_values_end($arg1) {
4151                 $r=ValueCountMatchSpy_top_values_end($this->_cPtr,$arg1);
4152                 if (is_resource($r)) {
4153                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
4154                         if (class_exists($c)) return new $c($r);
4155                         return new XapianTermIterator($r);
4156                 }
4157                 return $r;
4158         }
4159
4160         function apply($doc,$wt) {
4161                 ValueCountMatchSpy_apply($this->_cPtr,$doc,$wt);
4162         }
4163
4164         function name() {
4165                 return ValueCountMatchSpy_name($this->_cPtr);
4166         }
4167
4168         function merge_results($serialised) {
4169                 ValueCountMatchSpy_merge_results($this->_cPtr,$serialised);
4170         }
4171
4172         function get_description() {
4173                 return ValueCountMatchSpy_get_description($this->_cPtr);
4174         }
4175 }
4176
4177 class XapianLatLongCoord {
4178         public $_cPtr=null;
4179         protected $_pData=array();
4180
4181         function __set($var,$value) {
4182                 if ($var === 'latitude') return LatLongCoord_latitude_set($this->_cPtr,$value);
4183                 if ($var === 'longitude') return LatLongCoord_longitude_set($this->_cPtr,$value);
4184                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
4185                 $this->_pData[$var] = $value;
4186         }
4187
4188         function __get($var) {
4189                 if ($var === 'latitude') return LatLongCoord_latitude_get($this->_cPtr);
4190                 if ($var === 'longitude') return LatLongCoord_longitude_get($this->_cPtr);
4191                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
4192                 return $this->_pData[$var];
4193         }
4194
4195         function __isset($var) {
4196                 if (function_exists('LatLongCoord_'.$var.'_get')) return true;
4197                 if ($var === 'thisown') return true;
4198                 return array_key_exists($var, $this->_pData);
4199         }
4200
4201         function __construct($latitude_=null,$longitude_=null) {
4202                 if (is_resource($latitude_) && get_resource_type($latitude_) === '_p_Xapian__LatLongCoord') {
4203                         $this->_cPtr=$latitude_;
4204                         return;
4205                 }
4206                 switch (func_num_args()) {
4207                 case 0: $this->_cPtr=new_LatLongCoord(); break;
4208                 case 1: $this->_cPtr=new_LatLongCoord($latitude_); break;
4209                 default: $this->_cPtr=new_LatLongCoord($latitude_,$longitude_);
4210                 }
4211         }
4212
4213         function unserialise($serialised) {
4214                 LatLongCoord_unserialise($this->_cPtr,$serialised);
4215         }
4216
4217         function serialise() {
4218                 return LatLongCoord_serialise($this->_cPtr);
4219         }
4220
4221         function get_description() {
4222                 return LatLongCoord_get_description($this->_cPtr);
4223         }
4224 }
4225
4226 class XapianLatLongCoordsIterator {
4227         public $_cPtr=null;
4228         protected $_pData=array();
4229
4230         function __set($var,$value) {
4231                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
4232                 $this->_pData[$var] = $value;
4233         }
4234
4235         function __get($var) {
4236                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
4237                 return $this->_pData[$var];
4238         }
4239
4240         function __isset($var) {
4241                 if ($var === 'thisown') return true;
4242                 return array_key_exists($var, $this->_pData);
4243         }
4244
4245         function __construct($res=null) {
4246                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__LatLongCoordsIterator') {
4247                         $this->_cPtr=$res;
4248                         return;
4249                 }
4250                 $this->_cPtr=new_LatLongCoordsIterator();
4251         }
4252
4253         function equals(XapianLatLongCoordsIterator $o) {
4254                 return LatLongCoordsIterator_equals($this->_cPtr,$o);
4255         }
4256
4257         function get_coord() {
4258                 $r=LatLongCoordsIterator_get_coord($this->_cPtr);
4259                 if (is_resource($r)) {
4260                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
4261                         if (class_exists($c)) return new $c($r);
4262                         return new XapianLatLongCoord($r);
4263                 }
4264                 return $r;
4265         }
4266
4267         function next() {
4268                 LatLongCoordsIterator_next($this->_cPtr);
4269         }
4270 }
4271
4272 class XapianLatLongCoords {
4273         public $_cPtr=null;
4274         protected $_pData=array();
4275
4276         function __set($var,$value) {
4277                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
4278                 $this->_pData[$var] = $value;
4279         }
4280
4281         function __get($var) {
4282                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
4283                 return $this->_pData[$var];
4284         }
4285
4286         function __isset($var) {
4287                 if ($var === 'thisown') return true;
4288                 return array_key_exists($var, $this->_pData);
4289         }
4290
4291         function begin() {
4292                 $r=LatLongCoords_begin($this->_cPtr);
4293                 if (is_resource($r)) {
4294                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
4295                         if (class_exists($c)) return new $c($r);
4296                         return new XapianLatLongCoordsIterator($r);
4297                 }
4298                 return $r;
4299         }
4300
4301         function end() {
4302                 $r=LatLongCoords_end($this->_cPtr);
4303                 if (is_resource($r)) {
4304                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
4305                         if (class_exists($c)) return new $c($r);
4306                         return new XapianLatLongCoordsIterator($r);
4307                 }
4308                 return $r;
4309         }
4310
4311         function size() {
4312                 return LatLongCoords_size($this->_cPtr);
4313         }
4314
4315         function is_empty() {
4316                 return LatLongCoords_is_empty($this->_cPtr);
4317         }
4318
4319         function append($coord) {
4320                 LatLongCoords_append($this->_cPtr,$coord);
4321         }
4322
4323         function __construct($coord=null) {
4324                 if (is_resource($coord) && get_resource_type($coord) === '_p_Xapian__LatLongCoords') {
4325                         $this->_cPtr=$coord;
4326                         return;
4327                 }
4328                 switch (func_num_args()) {
4329                 case 0: $this->_cPtr=new_LatLongCoords(); break;
4330                 default: $this->_cPtr=new_LatLongCoords($coord);
4331                 }
4332         }
4333
4334         function unserialise($serialised) {
4335                 LatLongCoords_unserialise($this->_cPtr,$serialised);
4336         }
4337
4338         function serialise() {
4339                 return LatLongCoords_serialise($this->_cPtr);
4340         }
4341
4342         function get_description() {
4343                 return LatLongCoords_get_description($this->_cPtr);
4344         }
4345 }
4346
4347 abstract class XapianLatLongMetric {
4348         public $_cPtr=null;
4349         protected $_pData=array();
4350
4351         function __set($var,$value) {
4352                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
4353                 $this->_pData[$var] = $value;
4354         }
4355
4356         function __get($var) {
4357                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
4358                 return $this->_pData[$var];
4359         }
4360
4361         function __isset($var) {
4362                 if ($var === 'thisown') return true;
4363                 return array_key_exists($var, $this->_pData);
4364         }
4365
4366         function pointwise_distance($a,$b) {
4367                 return LatLongMetric_pointwise_distance($this->_cPtr,$a,$b);
4368         }
4369
4370         function apply($a,$b_or_b_ptr,$b_len=null) {
4371                 switch (func_num_args()) {
4372                 case 2: $this->_cPtr=LatLongMetric_apply($this->_cPtr,$a,$b_or_b_ptr); break;
4373                 default: $this->_cPtr=LatLongMetric_apply($this->_cPtr,$a,$b_or_b_ptr,$b_len);
4374                 }
4375                 return $r;
4376         }
4377
4378         function name() {
4379                 return LatLongMetric_name($this->_cPtr);
4380         }
4381
4382         function __construct($res=null) {
4383                 if (is_resource($res) && get_resource_type($res) === '_p_Xapian__LatLongMetric') {
4384                         $this->_cPtr=$res;
4385                         return;
4386                 }
4387                 if (get_class($this) === 'XapianLatLongMetric') {
4388                         $_this = null;
4389                 } else {
4390                         $_this = $this;
4391                 }
4392                 $this->_cPtr=new_LatLongMetric($_this);
4393         }
4394 }
4395
4396 class XapianGreatCircleMetric extends XapianLatLongMetric {
4397         public $_cPtr=null;
4398
4399         function __set($var,$value) {
4400                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
4401                 XapianLatLongMetric::__set($var,$value);
4402         }
4403
4404         function __get($var) {
4405                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
4406                 return XapianLatLongMetric::__get($var);
4407         }
4408
4409         function __isset($var) {
4410                 if ($var === 'thisown') return true;
4411                 return XapianLatLongMetric::__isset($var);
4412         }
4413
4414         function __construct($radius_=null) {
4415                 if (is_resource($radius_) && get_resource_type($radius_) === '_p_Xapian__GreatCircleMetric') {
4416                         $this->_cPtr=$radius_;
4417                         return;
4418                 }
4419                 switch (func_num_args()) {
4420                 case 0: $this->_cPtr=new_GreatCircleMetric(); break;
4421                 default: $this->_cPtr=new_GreatCircleMetric($radius_);
4422                 }
4423         }
4424
4425         function pointwise_distance($a,$b) {
4426                 return GreatCircleMetric_pointwise_distance($this->_cPtr,$a,$b);
4427         }
4428
4429         function name() {
4430                 return GreatCircleMetric_name($this->_cPtr);
4431         }
4432 }
4433
4434 class XapianLatLongDistancePostingSource extends XapianValuePostingSource {
4435         public $_cPtr=null;
4436
4437         function __set($var,$value) {
4438                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
4439                 XapianValuePostingSource::__set($var,$value);
4440         }
4441
4442         function __get($var) {
4443                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
4444                 return XapianValuePostingSource::__get($var);
4445         }
4446
4447         function __isset($var) {
4448                 if ($var === 'thisown') return true;
4449                 return XapianValuePostingSource::__isset($var);
4450         }
4451
4452         function __construct($slot_,$centre_=null,$metric__or_max_range_=null,$max_range__or_k1_=null,$k1__or_k2_=null,$k2_=null) {
4453                 if (is_resource($slot_) && get_resource_type($slot_) === '_p_Xapian__LatLongDistancePostingSource') {
4454                         $this->_cPtr=$slot_;
4455                         return;
4456                 }
4457                 switch (func_num_args()) {
4458                 case 2: $this->_cPtr=new_LatLongDistancePostingSource($slot_,$centre_); break;
4459                 case 3: $this->_cPtr=new_LatLongDistancePostingSource($slot_,$centre_,$metric__or_max_range_); break;
4460                 case 4: $this->_cPtr=new_LatLongDistancePostingSource($slot_,$centre_,$metric__or_max_range_,$max_range__or_k1_); break;
4461                 case 5: $this->_cPtr=new_LatLongDistancePostingSource($slot_,$centre_,$metric__or_max_range_,$max_range__or_k1_,$k1__or_k2_); break;
4462                 default: $this->_cPtr=new_LatLongDistancePostingSource($slot_,$centre_,$metric__or_max_range_,$max_range__or_k1_,$k1__or_k2_,$k2_);
4463                 }
4464         }
4465
4466         function next($min_wt) {
4467                 LatLongDistancePostingSource_next($this->_cPtr,$min_wt);
4468         }
4469
4470         function skip_to($min_docid,$min_wt) {
4471                 LatLongDistancePostingSource_skip_to($this->_cPtr,$min_docid,$min_wt);
4472         }
4473
4474         function check($min_docid,$min_wt) {
4475                 return LatLongDistancePostingSource_check($this->_cPtr,$min_docid,$min_wt);
4476         }
4477
4478         function get_weight() {
4479                 return LatLongDistancePostingSource_get_weight($this->_cPtr);
4480         }
4481
4482         function name() {
4483                 return LatLongDistancePostingSource_name($this->_cPtr);
4484         }
4485
4486         function init(XapianDatabase $db_) {
4487                 LatLongDistancePostingSource_init($this->_cPtr,$db_);
4488         }
4489
4490         function get_description() {
4491                 return LatLongDistancePostingSource_get_description($this->_cPtr);
4492         }
4493 }
4494
4495 class XapianLatLongDistanceKeyMaker extends XapianKeyMaker {
4496         public $_cPtr=null;
4497
4498         function __set($var,$value) {
4499                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
4500                 XapianKeyMaker::__set($var,$value);
4501         }
4502
4503         function __get($var) {
4504                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
4505                 return XapianKeyMaker::__get($var);
4506         }
4507
4508         function __isset($var) {
4509                 if ($var === 'thisown') return true;
4510                 return XapianKeyMaker::__isset($var);
4511         }
4512
4513         function __construct($slot_,$centre_=null,$metric_=null,$defdistance=null) {
4514                 if (is_resource($slot_) && get_resource_type($slot_) === '_p_Xapian__LatLongDistanceKeyMaker') {
4515                         $this->_cPtr=$slot_;
4516                         return;
4517                 }
4518                 switch (func_num_args()) {
4519                 case 2: $this->_cPtr=new_LatLongDistanceKeyMaker($slot_,$centre_); break;
4520                 case 3: $this->_cPtr=new_LatLongDistanceKeyMaker($slot_,$centre_,$metric_); break;
4521                 default: $this->_cPtr=new_LatLongDistanceKeyMaker($slot_,$centre_,$metric_,$defdistance);
4522                 }
4523         }
4524
4525         function apply($doc) {
4526                 return LatLongDistanceKeyMaker_apply($this->_cPtr,$doc);
4527         }
4528 }
4529
4530 class XapianDatabase {
4531         public $_cPtr=null;
4532         protected $_pData=array();
4533
4534         function __set($var,$value) {
4535                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
4536                 $this->_pData[$var] = $value;
4537         }
4538
4539         function __get($var) {
4540                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
4541                 return $this->_pData[$var];
4542         }
4543
4544         function __isset($var) {
4545                 if ($var === 'thisown') return true;
4546                 return array_key_exists($var, $this->_pData);
4547         }
4548
4549         function add_database(XapianDatabase $database) {
4550                 Database_add_database($this->_cPtr,$database);
4551         }
4552
4553         function size() {
4554                 return Database_size($this->_cPtr);
4555         }
4556
4557         function __construct($path_or_fd=null,$flags=0) {
4558                 if (is_resource($path_or_fd) && get_resource_type($path_or_fd) === '_p_Xapian__Database') {
4559                         $this->_cPtr=$path_or_fd;
4560                         return;
4561                 }
4562                 switch (func_num_args()) {
4563                 case 0: $this->_cPtr=new_Database(); break;
4564                 default: $this->_cPtr=new_Database($path_or_fd,$flags);
4565                 }
4566         }
4567
4568         function reopen() {
4569                 return Database_reopen($this->_cPtr);
4570         }
4571
4572         function close() {
4573                 Database_close($this->_cPtr);
4574         }
4575
4576         function get_description() {
4577                 return Database_get_description($this->_cPtr);
4578         }
4579
4580         function postlist_begin($tname) {
4581                 $r=Database_postlist_begin($this->_cPtr,$tname);
4582                 if (is_resource($r)) {
4583                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
4584                         if (class_exists($c)) return new $c($r);
4585                         return new XapianPostingIterator($r);
4586                 }
4587                 return $r;
4588         }
4589
4590         function postlist_end($arg1) {
4591                 $r=Database_postlist_end($this->_cPtr,$arg1);
4592                 if (is_resource($r)) {
4593                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
4594                         if (class_exists($c)) return new $c($r);
4595                         return new XapianPostingIterator($r);
4596                 }
4597                 return $r;
4598         }
4599
4600         function termlist_begin($did) {
4601                 $r=Database_termlist_begin($this->_cPtr,$did);
4602                 if (is_resource($r)) {
4603                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
4604                         if (class_exists($c)) return new $c($r);
4605                         return new XapianTermIterator($r);
4606                 }
4607                 return $r;
4608         }
4609
4610         function termlist_end($arg1) {
4611                 $r=Database_termlist_end($this->_cPtr,$arg1);
4612                 if (is_resource($r)) {
4613                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
4614                         if (class_exists($c)) return new $c($r);
4615                         return new XapianTermIterator($r);
4616                 }
4617                 return $r;
4618         }
4619
4620         function has_positions() {
4621                 return Database_has_positions($this->_cPtr);
4622         }
4623
4624         function positionlist_begin($did,$tname) {
4625                 $r=Database_positionlist_begin($this->_cPtr,$did,$tname);
4626                 if (is_resource($r)) {
4627                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
4628                         if (class_exists($c)) return new $c($r);
4629                         return new XapianPositionIterator($r);
4630                 }
4631                 return $r;
4632         }
4633
4634         function positionlist_end($arg1,$arg2) {
4635                 $r=Database_positionlist_end($this->_cPtr,$arg1,$arg2);
4636                 if (is_resource($r)) {
4637                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
4638                         if (class_exists($c)) return new $c($r);
4639                         return new XapianPositionIterator($r);
4640                 }
4641                 return $r;
4642         }
4643
4644         function allterms_begin($prefix=null) {
4645                 switch (func_num_args()) {
4646                 case 0: $r=Database_allterms_begin($this->_cPtr); break;
4647                 default: $r=Database_allterms_begin($this->_cPtr,$prefix);
4648                 }
4649                 if (is_resource($r)) {
4650                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
4651                         if (class_exists($c)) return new $c($r);
4652                         return new XapianTermIterator($r);
4653                 }
4654                 return $r;
4655         }
4656
4657         function allterms_end($arg1=null) {
4658                 switch (func_num_args()) {
4659                 case 0: $r=Database_allterms_end($this->_cPtr); break;
4660                 default: $r=Database_allterms_end($this->_cPtr,$arg1);
4661                 }
4662                 if (is_resource($r)) {
4663                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
4664                         if (class_exists($c)) return new $c($r);
4665                         return new XapianTermIterator($r);
4666                 }
4667                 return $r;
4668         }
4669
4670         function get_doccount() {
4671                 return Database_get_doccount($this->_cPtr);
4672         }
4673
4674         function get_lastdocid() {
4675                 return Database_get_lastdocid($this->_cPtr);
4676         }
4677
4678         function get_avlength() {
4679                 return Database_get_avlength($this->_cPtr);
4680         }
4681
4682         function get_average_length() {
4683                 return Database_get_average_length($this->_cPtr);
4684         }
4685
4686         function get_total_length() {
4687                 return Database_get_total_length($this->_cPtr);
4688         }
4689
4690         function get_termfreq($tname) {
4691                 return Database_get_termfreq($this->_cPtr,$tname);
4692         }
4693
4694         function term_exists($tname) {
4695                 return Database_term_exists($this->_cPtr,$tname);
4696         }
4697
4698         function get_collection_freq($tname) {
4699                 return Database_get_collection_freq($this->_cPtr,$tname);
4700         }
4701
4702         function get_value_freq($slot) {
4703                 return Database_get_value_freq($this->_cPtr,$slot);
4704         }
4705
4706         function get_value_lower_bound($slot) {
4707                 return Database_get_value_lower_bound($this->_cPtr,$slot);
4708         }
4709
4710         function get_value_upper_bound($slot) {
4711                 return Database_get_value_upper_bound($this->_cPtr,$slot);
4712         }
4713
4714         function get_doclength_lower_bound() {
4715                 return Database_get_doclength_lower_bound($this->_cPtr);
4716         }
4717
4718         function get_doclength_upper_bound() {
4719                 return Database_get_doclength_upper_bound($this->_cPtr);
4720         }
4721
4722         function get_wdf_upper_bound($term) {
4723                 return Database_get_wdf_upper_bound($this->_cPtr,$term);
4724         }
4725
4726         function valuestream_begin($slot) {
4727                 $r=Database_valuestream_begin($this->_cPtr,$slot);
4728                 if (is_resource($r)) {
4729                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
4730                         if (class_exists($c)) return new $c($r);
4731                         return new XapianValueIterator($r);
4732                 }
4733                 return $r;
4734         }
4735
4736         function valuestream_end($arg1) {
4737                 $r=Database_valuestream_end($this->_cPtr,$arg1);
4738                 if (is_resource($r)) {
4739                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
4740                         if (class_exists($c)) return new $c($r);
4741                         return new XapianValueIterator($r);
4742                 }
4743                 return $r;
4744         }
4745
4746         function get_doclength($did) {
4747                 return Database_get_doclength($this->_cPtr,$did);
4748         }
4749
4750         function get_unique_terms($did) {
4751                 return Database_get_unique_terms($this->_cPtr,$did);
4752         }
4753
4754         function keep_alive() {
4755                 Database_keep_alive($this->_cPtr);
4756         }
4757
4758         function get_document($did,$flags=null) {
4759                 switch (func_num_args()) {
4760                 case 1: $r=Database_get_document($this->_cPtr,$did); break;
4761                 default: $r=Database_get_document($this->_cPtr,$did,$flags);
4762                 }
4763                 if (is_resource($r)) {
4764                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
4765                         if (class_exists($c)) return new $c($r);
4766                         return new XapianDocument($r);
4767                 }
4768                 return $r;
4769         }
4770
4771         function get_spelling_suggestion($word,$max_edit_distance=2) {
4772                 return Database_get_spelling_suggestion($this->_cPtr,$word,$max_edit_distance);
4773         }
4774
4775         function spellings_begin() {
4776                 $r=Database_spellings_begin($this->_cPtr);
4777                 if (is_resource($r)) {
4778                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
4779                         if (class_exists($c)) return new $c($r);
4780                         return new XapianTermIterator($r);
4781                 }
4782                 return $r;
4783         }
4784
4785         function spellings_end() {
4786                 $r=Database_spellings_end($this->_cPtr);
4787                 if (is_resource($r)) {
4788                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
4789                         if (class_exists($c)) return new $c($r);
4790                         return new XapianTermIterator($r);
4791                 }
4792                 return $r;
4793         }
4794
4795         function synonyms_begin($term) {
4796                 $r=Database_synonyms_begin($this->_cPtr,$term);
4797                 if (is_resource($r)) {
4798                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
4799                         if (class_exists($c)) return new $c($r);
4800                         return new XapianTermIterator($r);
4801                 }
4802                 return $r;
4803         }
4804
4805         function synonyms_end($arg1) {
4806                 $r=Database_synonyms_end($this->_cPtr,$arg1);
4807                 if (is_resource($r)) {
4808                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
4809                         if (class_exists($c)) return new $c($r);
4810                         return new XapianTermIterator($r);
4811                 }
4812                 return $r;
4813         }
4814
4815         function synonym_keys_begin($prefix=null) {
4816                 switch (func_num_args()) {
4817                 case 0: $r=Database_synonym_keys_begin($this->_cPtr); break;
4818                 default: $r=Database_synonym_keys_begin($this->_cPtr,$prefix);
4819                 }
4820                 if (is_resource($r)) {
4821                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
4822                         if (class_exists($c)) return new $c($r);
4823                         return new XapianTermIterator($r);
4824                 }
4825                 return $r;
4826         }
4827
4828         function synonym_keys_end($arg1=null) {
4829                 switch (func_num_args()) {
4830                 case 0: $r=Database_synonym_keys_end($this->_cPtr); break;
4831                 default: $r=Database_synonym_keys_end($this->_cPtr,$arg1);
4832                 }
4833                 if (is_resource($r)) {
4834                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
4835                         if (class_exists($c)) return new $c($r);
4836                         return new XapianTermIterator($r);
4837                 }
4838                 return $r;
4839         }
4840
4841         function get_metadata($key) {
4842                 return Database_get_metadata($this->_cPtr,$key);
4843         }
4844
4845         function metadata_keys_begin($prefix=null) {
4846                 switch (func_num_args()) {
4847                 case 0: $r=Database_metadata_keys_begin($this->_cPtr); break;
4848                 default: $r=Database_metadata_keys_begin($this->_cPtr,$prefix);
4849                 }
4850                 if (is_resource($r)) {
4851                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
4852                         if (class_exists($c)) return new $c($r);
4853                         return new XapianTermIterator($r);
4854                 }
4855                 return $r;
4856         }
4857
4858         function metadata_keys_end($arg1=null) {
4859                 switch (func_num_args()) {
4860                 case 0: $r=Database_metadata_keys_end($this->_cPtr); break;
4861                 default: $r=Database_metadata_keys_end($this->_cPtr,$arg1);
4862                 }
4863                 if (is_resource($r)) {
4864                         $c='Xapian'.substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));
4865                         if (class_exists($c)) return new $c($r);
4866                         return new XapianTermIterator($r);
4867                 }
4868                 return $r;
4869         }
4870
4871         function get_uuid() {
4872                 return Database_get_uuid($this->_cPtr);
4873         }
4874
4875         function locked() {
4876                 return Database_locked($this->_cPtr);
4877         }
4878
4879         function get_revision() {
4880                 return Database_get_revision($this->_cPtr);
4881         }
4882
4883         static function check($path_or_fd,$opts=0) {
4884                 $r=Database_check($path_or_fd,$opts);
4885                 return $r;
4886         }
4887
4888         function compact($output_or_fd,$flags=null,$block_size=null,$compactor=null) {
4889                 switch (func_num_args()) {
4890                 case 1: Database_compact($this->_cPtr,$output_or_fd); break;
4891                 case 2: Database_compact($this->_cPtr,$output_or_fd,$flags); break;
4892                 case 3: Database_compact($this->_cPtr,$output_or_fd,$flags,$block_size); break;
4893                 default: Database_compact($this->_cPtr,$output_or_fd,$flags,$block_size,$compactor);
4894                 }
4895         }
4896 }
4897
4898 class XapianWritableDatabase extends XapianDatabase {
4899         public $_cPtr=null;
4900
4901         function __set($var,$value) {
4902                 if ($var === 'thisown') return swig_xapian_alter_newobject($this->_cPtr,$value);
4903                 XapianDatabase::__set($var,$value);
4904         }
4905
4906         function __get($var) {
4907                 if ($var === 'thisown') return swig_xapian_get_newobject($this->_cPtr);
4908                 return XapianDatabase::__get($var);
4909         }
4910
4911         function __isset($var) {
4912                 if ($var === 'thisown') return true;
4913                 return XapianDatabase::__isset($var);
4914         }
4915
4916         function __construct($path=null,$flags=0,$block_size=0) {
4917                 if (is_resource($path) && get_resource_type($path) === '_p_Xapian__WritableDatabase') {
4918                         $this->_cPtr=$path;
4919                         return;
4920                 }
4921                 switch (func_num_args()) {
4922                 case 0: $this->_cPtr=new_WritableDatabase(); break;
4923                 default: $this->_cPtr=new_WritableDatabase($path,$flags,$block_size);
4924                 }
4925         }
4926
4927         function commit() {
4928                 WritableDatabase_commit($this->_cPtr);
4929         }
4930
4931         function flush() {
4932                 WritableDatabase_flush($this->_cPtr);
4933         }
4934
4935         function begin_transaction($flushed=true) {
4936                 WritableDatabase_begin_transaction($this->_cPtr,$flushed);
4937         }
4938
4939         function commit_transaction() {
4940                 WritableDatabase_commit_transaction($this->_cPtr);
4941         }
4942
4943         function cancel_transaction() {
4944                 WritableDatabase_cancel_transaction($this->_cPtr);
4945         }
4946
4947         function add_document(XapianDocument $document) {
4948                 return WritableDatabase_add_document($this->_cPtr,$document);
4949         }
4950
4951         function delete_document($did_or_unique_term) {
4952                 WritableDatabase_delete_document($this->_cPtr,$did_or_unique_term);
4953         }
4954
4955         function replace_document($did_or_unique_term,XapianDocument $document) {
4956                 return WritableDatabase_replace_document($this->_cPtr,$did_or_unique_term,$document);
4957         }
4958
4959         function add_spelling($word,$freqinc=1) {
4960                 WritableDatabase_add_spelling($this->_cPtr,$word,$freqinc);
4961         }
4962
4963         function remove_spelling($word,$freqdec=1) {
4964                 WritableDatabase_remove_spelling($this->_cPtr,$word,$freqdec);
4965         }
4966
4967         function add_synonym($term,$synonym) {
4968                 WritableDatabase_add_synonym($this->_cPtr,$term,$synonym);
4969         }
4970
4971         function remove_synonym($term,$synonym) {
4972                 WritableDatabase_remove_synonym($this->_cPtr,$term,$synonym);
4973         }
4974
4975         function clear_synonyms($term) {
4976                 WritableDatabase_clear_synonyms($this->_cPtr,$term);
4977         }
4978
4979         function set_metadata($key,$metadata) {
4980                 WritableDatabase_set_metadata($this->_cPtr,$key,$metadata);
4981         }
4982
4983         function get_description() {
4984                 return WritableDatabase_get_description($this->_cPtr);
4985         }
4986 }
4987
4988
4989 ?>