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.
14if (!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
29abstract 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 */
183class 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
253class 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
355class 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
457class 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
539class 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
689class 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
757class 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
951abstract 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
992class 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
1039class 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
1165class 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
1340class 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
1449class 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
1523class 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
1602class 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
1654abstract 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
1691class 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
1871abstract 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
1914class 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
1945class 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
1976abstract 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
2019class 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
2057abstract 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
2104class 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
2146class 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
2214class 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
2256class 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
2296abstract 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
2339class 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
2373class 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
2410class 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
2444abstract 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
2493class 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
2682class 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
2721abstract 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
2774class 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
2821class 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
2871class 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
2925class 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
2980class 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
3027class 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
3077class 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
3127class 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
3177class 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
3227class 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
3274class 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
3324class 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
3375class 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
3422class 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
3472class 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
3523class 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
3598abstract 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
3693class 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
3799class 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
3847class 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
3902class 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
3957class 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
4032abstract 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
4087class 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
4177class 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
4226class 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
4272class 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
4347abstract 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
4396class 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
4434class 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
4495class 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
4530class 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
4898class 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?>
4990