1 /**
2  Copyright (c) 2003, Technology Concepts & Design, Inc.
3  Copyright (c) 2006,2008, Olly Betts
4  All rights reserved.
5 
6  Redistribution and use in source and binary forms, with or without modification, are permitted
7  provided that the following conditions are met:
8 
9  - Redistributions of source code must retain the above copyright notice, this list of conditions
10  and the following disclaimer.
11 
12  - Redistributions in binary form must reproduce the above copyright notice, this list of conditions
13  and the following disclaimer in the documentation and/or other materials provided with the distribution.
14 
15  - Neither the name of Technology Concepts & Design, Inc. nor the names of its contributors may be used to
16  endorse or promote products derived from this software without specific prior written permission.
17 
18  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
19  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
20  PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY
21  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
25  THE POSSIBILITY OF SUCH DAMAGE.
26  **/
27 package org.xapian;
28 
29 import org.xapian.errors.*;
30 
31 
32 /**
33  * Static proxy class that gets us access to Xapian.<p>
34  * <p/>
35  * Although this class is defined as <i>public</i>, it is not
36  * meant to be used outside this package.  It is available
37  * for those that desire lower-level access to Xapian without
38  * going through the API classes in this package.
39  */
40 public class XapianJNI {
41 
42     static {
43         // static initialization for loading the native library
44         System.loadLibrary("xapian_jni");
45     }
46 
47 
48     // functions to support the Xapian::Auto namespace
49     public static final int DB_CREATE_OR_OPEN = 1;
50     public static final int DB_CREATE = 2;
51     public static final int DB_CREATE_OR_OVERWRITE = 3;
52     public static final int DB_OPEN = 4;
53 
54     /* Returns id of a Xapian::Database (deprecated) */
auto_open(String path)55     public static native long auto_open(String path) throws XapianError;
56 
57     /* Returns id of a Xapian::WritableDatabase (deprecated) */
auto_open(String path, int mode)58     public static native long auto_open(String path, int mode) throws XapianError;
59 
60     /* Returns id of a Xapian::Database */
auto_open_stub(String path)61     public static native long auto_open_stub(String path) throws XapianError;
62 
63     // support for the Xapian::InMemory namespace
64     /* Returns id of a Xapian::WritableDatabase */
inmemory_open()65     public static native long inmemory_open() throws XapianError;
66 
67     // support for the Xapian::Quartz namespace
68     /* Returns id of a Xapian::Database */
quartz_open(String dir)69     public static native long quartz_open(String dir) throws XapianError;
70 
71     /* Returns id of a Xapian::WritableDatabase */
quartz_open(String dir, int action)72     public static long quartz_open(String dir, int action) throws XapianError {
73         return quartz_open(dir, action, 8192);
74     }
75 
76     /* Returns id of a Xapian::WritableDatabase */
quartz_open(String dir, int action, int block_size)77     public static native long quartz_open(String dir, int action, int block_size) throws XapianError;
78 
79     // support for the Xapian::Remote namespace
80     /* Returns id of a Xapian::Database */
remote_open(String program, String args)81     public static long remote_open(String program, String args) throws XapianError {
82         return remote_open(program, args, 10000);
83     }
84 
85     /* Returns id of a Xapian::Database */
remote_open(String program, String args, int timeout)86     public static native long remote_open(String program, String args, int timeout) throws XapianError;
87 
88     /* Returns id of a Xapian::Database */
remote_open(String host, int port)89     public static long remote_open(String host, int port) throws XapianError {
90         return remote_open(host, port, 10000, 0);
91     }
92 
remote_open(String host, int port, int timeout, int connect_timeout)93     public static native long remote_open(String host, int port, int timeout, int connect_timeout) throws XapianError;
94 
95 
96     // database functions
database_new()97     public static native long database_new() throws XapianError;
98 
database_new(String path)99     public static native long database_new(String path) throws XapianError;
100 
database_new(long dbid)101     public static native long database_new(long dbid) throws XapianError;
102 
database_add_database(long dbid, long toadd_id)103     public static native void database_add_database(long dbid, long toadd_id) throws XapianError;
104 
database_reopen(long dbid)105     public static native void database_reopen(long dbid) throws XapianError;
106 
database_get_description(long dbid)107     public static native String database_get_description(long dbid) throws XapianError;
108 
database_postlist_begin(long dbid, String term)109     public static native long database_postlist_begin(long dbid, String term) throws XapianError;
110 
database_postlist_end(long dbid, String term)111     public static native long database_postlist_end(long dbid, String term) throws XapianError;
112 
database_termlist_begin(long dbid, long assigned_docid)113     public static native long database_termlist_begin(long dbid, long assigned_docid) throws XapianError;
114 
database_termlist_end(long dbid, long assigned_docid)115     public static native long database_termlist_end(long dbid, long assigned_docid) throws XapianError;
116 
database_positionlist_begin(long dbid, long dbdocid, String term)117     public static native long database_positionlist_begin(long dbid, long dbdocid, String term) throws XapianError;
118 
database_positionlist_end(long dbid, long dbdocid, String term)119     public static native long database_positionlist_end(long dbid, long dbdocid, String term) throws XapianError;
120 
database_allterms_begin(long dbid)121     public static native long database_allterms_begin(long dbid) throws XapianError;
122 
database_allterms_end(long dbid)123     public static native long database_allterms_end(long dbid) throws XapianError;
124 
database_get_doccount(long dbid)125     public static native int database_get_doccount(long dbid) throws XapianError;
126 
database_get_lastdocid(long dbid)127     public static native long database_get_lastdocid(long dbid) throws XapianError;
128 
database_get_avlength(long dbid)129     public static native double database_get_avlength(long dbid) throws XapianError;
130 
database_get_termfreq(long dbid, String term)131     public static native int database_get_termfreq(long dbid, String term) throws XapianError;
132 
database_term_exists(long dbid, String term)133     public static native boolean database_term_exists(long dbid, String term) throws XapianError;
134 
database_get_collection_freq(long dbid, String term)135     public static native int database_get_collection_freq(long dbid, String term) throws XapianError;
136 
database_get_doclength(long dbid, long assigned_docid)137     public static native double database_get_doclength(long dbid, long assigned_docid) throws XapianError;
138 
database_keep_alive(long dbid)139     public static native void database_keep_alive(long dbid) throws XapianError;
140 
database_get_document(long dbid, long assigned_docid)141     public static native long database_get_document(long dbid, long assigned_docid) throws XapianError, DocNotFoundError;
142 
database_finalize(long dbid)143     public static native void database_finalize(long dbid);
144 
145     // writable-database functions
writabledatabase_new()146     public static native long writabledatabase_new() throws XapianError;
147 
writabledatabase_new(String path, int mode)148     public static native long writabledatabase_new(String path, int mode) throws XapianError;
149 
writabledatabase_flush(long dbid)150     public static native void writabledatabase_flush(long dbid) throws DatabaseError, DatabaseCorruptError, DatabaseLockError, XapianError;
151 
writabledatabase_begin_transaction(long dbid)152     public static native void writabledatabase_begin_transaction(long dbid) throws UnimplementedError, InvalidOperationError, XapianError;
153 
writabledatabase_commit_transaction(long dbid)154     public static native void writabledatabase_commit_transaction(long dbid) throws DatabaseError, DatabaseCorruptError, InvalidOperationError, UnimplementedError, XapianError;
155 
writabledatabase_cancel_transaction(long dbid)156     public static native void writabledatabase_cancel_transaction(long dbid) throws DatabaseError, DatabaseCorruptError, InvalidOperationError, UnimplementedError, XapianError;
157 
writabledatabase_add_document(long dbid, long docid)158     public static native long writabledatabase_add_document(long dbid, long docid) throws DatabaseError, DatabaseCorruptError, DatabaseLockError, XapianError;
159 
writabledatabase_delete_document(long dbid, long assigned_docid)160     public static native void writabledatabase_delete_document(long dbid, long assigned_docid) throws DatabaseError, DatabaseCorruptError, DatabaseLockError, XapianError;
161 
writabledatabase_replace_document(long dbid, long assigned_docid, long docid)162     public static native void writabledatabase_replace_document(long dbid, long assigned_docid, long docid) throws DatabaseError, DatabaseCorruptError, DatabaseLockError, XapianError;
163 
writabledatabase_get_description(long dbid)164     public static native String writabledatabase_get_description(long dbid) throws XapianError;
165 
writabledatabase_finalize(long dbid)166     public static native void writabledatabase_finalize(long dbid);
167 
168 
169     // document functions
document_new()170     public static native long document_new() throws XapianError;
171 
document_new(long docid)172     public static native long document_new(long docid) throws XapianError;
173 
docment_get_value(long docid, int value_index)174     public static native String docment_get_value(long docid, int value_index) throws XapianError;
175 
document_add_value(long docid, int value_index, String value)176     public static native void document_add_value(long docid, int value_index, String value) throws XapianError, InvalidArgumentError;
177 
document_remove_value(long docid, int value_index)178     public static native void document_remove_value(long docid, int value_index) throws XapianError, InvalidArgumentError;
179 
document_clear_values(long docid)180     public static native void document_clear_values(long docid) throws XapianError;
181 
document_get_data(long docid)182     public static native String document_get_data(long docid) throws XapianError;
183 
document_set_data(long docid, String data)184     public static native void document_set_data(long docid, String data) throws XapianError, InvalidArgumentError;
185 
document_add_posting(long docid, String term, int position)186     public static native void document_add_posting(long docid, String term, int position) throws XapianError, InvalidArgumentError;
187 
document_add_term(long docid, String term)188     public static native void document_add_term(long docid, String term) throws XapianError, InvalidArgumentError;
189 
190     /*
191      * For compatibility with older code.
192      * @deprecated use document_add_term instead
193      */
document_add_term_nopos(long docid, String term)194     public static void document_add_term_nopos(long docid, String term) throws XapianError, InvalidArgumentError {
195         document_add_term(docid, term);
196     }
197 
document_remove_posting(long docid, String term, int position)198     public static native void document_remove_posting(long docid, String term, int position) throws XapianError, InvalidArgumentError;
199 
document_remove_term(long docid, String term)200     public static native void document_remove_term(long docid, String term) throws XapianError, InvalidArgumentError;
201 
document_clear_terms(long docid)202     public static native void document_clear_terms(long docid) throws XapianError;
203 
document_termlist_count(long docid)204     public static native int document_termlist_count(long docid) throws XapianError;
205 
document_values_count(long docid)206     public static native int document_values_count(long docid) throws XapianError;
207 
document_get_description(long docid)208     public static native String document_get_description(long docid) throws XapianError;
209 
document_finalize(long docid)210     public static native void document_finalize(long docid);
211 
212 
213     // mset functions
mset_convert_to_percent(long msetid, long other_msetid)214     public static native int mset_convert_to_percent(long msetid, long other_msetid) throws XapianError;
215 
mset_convert_to_percent(long msetid, double weight)216     public static native int mset_convert_to_percent(long msetid, double weight) throws XapianError;
217 
mset_get_termfreq(long msetid, String term)218     public static native int mset_get_termfreq(long msetid, String term) throws XapianError, InvalidArgumentError;
219 
mset_get_termweight(long msetid, String term)220     public static native double mset_get_termweight(long msetid, String term) throws XapianError, InvalidArgumentError;
221 
mset_get_firstitem(long msetid)222     public static native int mset_get_firstitem(long msetid) throws XapianError;
223 
mset_get_matches_lower_bound(long msetid)224     public static native int mset_get_matches_lower_bound(long msetid) throws XapianError;
225 
mset_get_matches_estimated(long msetid)226     public static native int mset_get_matches_estimated(long msetid) throws XapianError;
227 
mset_get_matches_upper_bound(long msetid)228     public static native int mset_get_matches_upper_bound(long msetid) throws XapianError;
229 
mset_get_max_possible(long msetid)230     public static native double mset_get_max_possible(long msetid) throws XapianError;
231 
mset_get_max_attained(long msetid)232     public static native double mset_get_max_attained(long msetid) throws XapianError;
233 
mset_size(long msetid)234     public static native int mset_size(long msetid) throws XapianError;
235 
mset_empty(long msetid)236     public static native boolean mset_empty(long msetid) throws XapianError;
237 
mset_begin(long msetid)238     public static native long mset_begin(long msetid) throws XapianError;
239 
mset_end(long msetid)240     public static native long mset_end(long msetid) throws XapianError;
241 
mset_back(long msetid)242     public static native long mset_back(long msetid) throws XapianError;
243 
mset_element(long msetid, long index)244     public static native long mset_element(long msetid, long index) throws XapianError;
245 
mset_get_description(long msetid)246     public static native String mset_get_description(long msetid) throws XapianError;
247 
mset_finalize(long msetid)248     public static native void mset_finalize(long msetid);
249 
250     // mset iterator functions
msetiterator_get_document(long msetiteratorid)251     public static native long msetiterator_get_document(long msetiteratorid) throws XapianError, DocNotFoundError;
252 
msetiterator_get_rank(long msetiteratorid)253     public static native int msetiterator_get_rank(long msetiteratorid) throws XapianError;
254 
msetiterator_get_weight(long msetiteratorid)255     public static native double msetiterator_get_weight(long msetiteratorid) throws XapianError;
256 
msetiterator_get_collapse_count(long msetiteratorid)257     public static native int msetiterator_get_collapse_count(long msetiteratorid) throws XapianError;
258 
msetiterator_get_percent(long msetiteratorid)259     public static native int msetiterator_get_percent(long msetiteratorid) throws XapianError;
260 
msetiterator_get_description(long msetiteratorid)261     public static native String msetiterator_get_description(long msetiteratorid) throws XapianError;
262 
msetiterator_prev(long msetiteratorid)263     public static native void msetiterator_prev(long msetiteratorid) throws XapianError;
264 
msetiterator_next(long msetiteratorid)265     public static native void msetiterator_next(long msetiteratorid) throws XapianError;
266 
msetiterator_get_db_docid(long msetiteratorid)267     public static native long msetiterator_get_db_docid(long msetiteratorid) throws XapianError;
268 
msetiterator_equals(long a, long b)269     public static native boolean msetiterator_equals(long a, long b) throws XapianError;
270 
msetiterator_finalize(long msetiteratorid)271     public static native void msetiterator_finalize(long msetiteratorid);
272 
273 
274     // term iterator functions
termiterator_next(long termiteratorid)275     public static native void termiterator_next(long termiteratorid) throws XapianError;
276 
termiterator_get_termname(long termiteratorid)277     public static native String termiterator_get_termname(long termiteratorid) throws XapianError;
278 
termiterator_get_term_freq(long termiteratorid)279     public static native int termiterator_get_term_freq(long termiteratorid) throws XapianError;
280 
termiterator_get_wdf(long termiteratorid)281     public static native long termiterator_get_wdf(long termiteratorid) throws XapianError;
282 
termiterator_skip_to(long termiteratorid, String term)283     public static native void termiterator_skip_to(long termiteratorid, String term) throws XapianError;
284 
termiterator_get_description(long termiteratorid)285     public static native String termiterator_get_description(long termiteratorid) throws XapianError;
286 
termiterator_positionlist_begin(long termiteratorid)287     public static native long termiterator_positionlist_begin(long termiteratorid) throws XapianError;
288 
termiterator_positionlist_end(long termiteratorid)289     public static native long termiterator_positionlist_end(long termiteratorid) throws XapianError;
290 
termiterator_equals(long a, long b)291     public static native boolean termiterator_equals(long a, long b) throws XapianError;
292 
termiterator_finalize(long termiteratorid)293     public static native void termiterator_finalize(long termiteratorid);
294 
295     // query functions
query_new()296     public static native long query_new() throws XapianError;
297 
query_new(String term)298     public static native long query_new(String term) throws XapianError;
299 
query_new(String term, int wqf)300     public static native long query_new(String term, int wqf) throws XapianError;
301 
query_new(String term, int wqf, int pos)302     public static native long query_new(String term, int wqf, int pos) throws XapianError;
303 
query_new(int operator, long left, long right)304     public static native long query_new(int operator, long left, long right) throws XapianError;
305 
query_new(int operator, String left, String right)306     public static native long query_new(int operator, String left, String right) throws XapianError;
307 
query_new(int operator, String[] terms)308     public static native long query_new(int operator, String[] terms) throws XapianError;
309 
query_new(int operator, long[] queries)310     public static native long query_new(int operator, long[] queries) throws XapianError;
311 
query_new(int operator, long id)312     public static native long query_new(int operator, long id) throws XapianError;
313 
query_get_description(long id)314     public static native String query_get_description(long id) throws XapianError;
315 
query_empty(long id)316     public static native boolean query_empty(long id) throws XapianError;
317 
query_terms_begin(long id)318     public static native long query_terms_begin(long id) throws XapianError;
319 
query_terms_end(long id)320     public static native long query_terms_end(long id) throws XapianError;
321 
query_get_length(long id)322     public static native long query_get_length(long id) throws XapianError;
323 
query_finalize(long id)324     public static native void query_finalize(long id);
325 
326     // enquire functions
enquire_new(long dbid)327     public static native long enquire_new(long dbid) throws XapianError;
328 
enquire_set_query(long eid, long queryid)329     public static native void enquire_set_query(long eid, long queryid) throws XapianError;
330 
enquire_set_query(long eid, long queryid, int qlen)331     public static native void enquire_set_query(long eid, long queryid, int qlen) throws XapianError;
332 
333 // We implement get_query in Java and don't use JNI or C++ at all for it.
334 //    public static native long enquire_get_query(long eid) throws XapianError;
335 //    public static native void enquire_set_weighting_scheme(long eid, long weightid) throws XapianError;
enquire_set_collapse_key(long eid, long collapse_key)336     public static native void enquire_set_collapse_key(long eid, long collapse_key) throws XapianError;
337 
enquire_set_sort_forward(long eid, boolean forward)338     public static native void enquire_set_sort_forward(long eid, boolean forward) throws XapianError;
339 
enquire_set_cutoff(long eid, int percent_cutoff, double weight_cutoff)340     public static native void enquire_set_cutoff(long eid, int percent_cutoff, double weight_cutoff) throws XapianError;
341 
enquire_set_sorting(long eid, long sort_key, int sort_bands)342     public static native void enquire_set_sorting(long eid, long sort_key, int sort_bands) throws XapianError;
343 
enquire_get_mset(long eid, long first, long maxitems, long rsetid, MatchDecider md)344     public static native long enquire_get_mset(long eid, long first, long maxitems, long rsetid, MatchDecider md) throws XapianError;
345 
enquire_get_eset(long eid, long maxitems, long rsetid, int flags, double k, ExpandDecider ed)346     public static native long enquire_get_eset(long eid, long maxitems, long rsetid, int flags, double k, ExpandDecider ed) throws XapianError;
347 
enquire_get_eset(long eid, long maxitems, long rsetid, ExpandDecider ed)348     public static native long enquire_get_eset(long eid, long maxitems, long rsetid, ExpandDecider ed) throws XapianError;
349 
enquire_get_matching_terms_begin(long eid, long dbdocid)350     public static native long enquire_get_matching_terms_begin(long eid, long dbdocid) throws XapianError;
351 
enquire_get_matching_terms_end(long eid, long dbdocid)352     public static native long enquire_get_matching_terms_end(long eid, long dbdocid) throws XapianError;
353 
enquire_get_matching_terms_begin_by_msetiterator(long eid, long msetiteratorid)354     public static native long enquire_get_matching_terms_begin_by_msetiterator(long eid, long msetiteratorid) throws XapianError;
355 
enquire_get_matching_terms_end_by_msetiterator(long eid, long msetiteratorid)356     public static native long enquire_get_matching_terms_end_by_msetiterator(long eid, long msetiteratorid) throws XapianError;
357 
enquire_get_description(long eid)358     public static native String enquire_get_description(long eid) throws XapianError;
359 
enquire_finalize(long eid)360     public static native void enquire_finalize(long eid);
361 
362     // rset functions
rset_new()363     public static native long rset_new() throws XapianError;
364 
rset_size(long rsetid)365     public static native long rset_size(long rsetid) throws XapianError;
366 
rset_empty(long rsetid)367     public static native boolean rset_empty(long rsetid) throws XapianError;
368 
rset_add_document(long rsetid, long dbdocid)369     public static native void rset_add_document(long rsetid, long dbdocid) throws XapianError;
370 
rset_add_document_via_msetiterator(long rsetid, long msetiteratorid)371     public static native void rset_add_document_via_msetiterator(long rsetid, long msetiteratorid) throws XapianError;
372 
rset_remove_document(long rsetid, long dbdocid)373     public static native void rset_remove_document(long rsetid, long dbdocid) throws XapianError;
374 
rset_remove_document_via_msetiterator(long rsetid, long msetiteratorid)375     public static native void rset_remove_document_via_msetiterator(long rsetid, long msetiteratorid) throws XapianError;
376 
rset_contains(long rsetid, long dbdocid)377     public static native boolean rset_contains(long rsetid, long dbdocid) throws XapianError;
378 
rset_contains_via_msetiterator(long rsetid, long msetiteratorid)379     public static native boolean rset_contains_via_msetiterator(long rsetid, long msetiteratorid) throws XapianError;
380 
rset_get_description(long rsetid)381     public static native String rset_get_description(long rsetid) throws XapianError;
382 
rset_finalize(long rsetid)383     public static native void rset_finalize(long rsetid);
384 
385     // eset functions
eset_new()386     public static native long eset_new() throws XapianError;
387 
eset_get_ebound(long esetid)388     public static native long eset_get_ebound(long esetid) throws XapianError;
389 
eset_size(long esetid)390     public static native long eset_size(long esetid) throws XapianError;
391 
eset_empty(long esetid)392     public static native boolean eset_empty(long esetid) throws XapianError;
393 
eset_begin(long esetid)394     public static native long eset_begin(long esetid) throws XapianError;
395 
eset_end(long esetid)396     public static native long eset_end(long esetid) throws XapianError;
397 
eset_get_description(long esetid)398     public static native String eset_get_description(long esetid) throws XapianError;
399 
eset_finalize(long esetid)400     public static native void eset_finalize(long esetid);
401 
402     // esetiterator functions
esetiterator_new()403     public static native long esetiterator_new() throws XapianError;
404 
esetiterator_prev(long esetiteratorid)405     public static native void esetiterator_prev(long esetiteratorid) throws XapianError;
406 
esetiterator_next(long esetiteratorid)407     public static native void esetiterator_next(long esetiteratorid) throws XapianError;
408 
esetiterator_equals(long a, long b)409     public static native boolean esetiterator_equals(long a, long b) throws XapianError;
410 
esetiterator_get(long esetiteratorid)411     public static native String esetiterator_get(long esetiteratorid) throws XapianError;
412 
esetiterator_get_weight(long esetiteratorid)413     public static native double esetiterator_get_weight(long esetiteratorid) throws XapianError;
414 
esetiterator_get_description(long esetiteratorid)415     public static native String esetiterator_get_description(long esetiteratorid) throws XapianError;
416 
esetiterator_finalize(long esetiteratorid)417     public static native void esetiterator_finalize(long esetiteratorid);
418 
419     // stem functions
stem_new()420     public static native long stem_new() throws XapianError;
421 
stem_new(String language)422     public static native long stem_new(String language) throws XapianError;
423 
stem_stem_word(long stemid, String word)424     public static native String stem_stem_word(long stemid, String word) throws XapianError;
425 
stem_get_description(long stemid)426     public static native String stem_get_description(long stemid) throws XapianError;
427 
stem_get_available_languages()428     public static native String stem_get_available_languages() throws XapianError;
429 
stem_finalize(long stemid)430     public static native void stem_finalize(long stemid);
431 
432     // position iterator functions
positioniterator_getvalue(long id)433     public static native long positioniterator_getvalue(long id) throws XapianError;
434 
positioniterator_next(long id)435     public static native void positioniterator_next(long id) throws XapianError;
436 
positioniterator_equals(long a, long b)437     public static native boolean positioniterator_equals(long a, long b) throws XapianError;
438 
positioniterator_get_description(long id)439     public static native String positioniterator_get_description(long id) throws XapianError;
440 
positioniterator_finalize(long id)441     public static native void positioniterator_finalize(long id);
442 }
443