The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
MODULE = Search::Xapian			PACKAGE = Search::Xapian::Query

PROTOTYPES: ENABLE

Query *
new0()
    CODE:
        RETVAL = new Query();
    OUTPUT:
        RETVAL

Query *
new1(term)
    string	term
    CODE:
        RETVAL = new Query(term);
    OUTPUT:
        RETVAL

Query *
new1weight(term, wqf, pos)
    string	term
    termcount	wqf
    termpos	pos
    CODE:
	RETVAL = new Query(term, wqf, pos);
    OUTPUT:
	RETVAL

Query *
new3scale(int op, Query * query, double factor)
    CODE:
        RETVAL = new Query( (Query::op) op, *query, factor );
    OUTPUT:
        RETVAL

Query *
new3range(op, valno, limit)
    int		op
    valueno	valno
    string	limit
    CODE:
        RETVAL = new Query( (Query::op) op, valno, limit );
    OUTPUT:
        RETVAL

Query *
new4range(op, valno, start, end)
    int		op
    valueno	valno
    string	start
    string	end
    CODE:
        RETVAL = new Query( (Query::op) op, valno, start, end );
    OUTPUT:
        RETVAL

Query *
newN(int op_, ...)
    CODE:
	Query::op op = (Query::op)op_;
	try {
	    vector<Query> queries;
	    queries.reserve(items - 1);
	    for( int i = 1; i < items; i++ ) {
		SV *sv = ST (i);
		if (sv_isa(sv, "Search::Xapian::Query")) {
		    Query *query = (Query*) SvIV((SV*) SvRV(sv));
		    queries.push_back(*query);
		} else if ( SvOK(sv) ) {
		    STRLEN len;
		    const char * ptr = SvPV(sv, len);
		    queries.push_back(Query(string(ptr, len)));
		} else {
		    croak( "USAGE: Search::Xapian::Query->new(OP, @TERMS_OR_QUERY_OBJECTS)" );
		}
	    }
            RETVAL = new Query(op, queries.begin(), queries.end());
	} catch (...) {
	    handle_exception();
        }
    OUTPUT:
        RETVAL

termcount
Query::get_length()

TermIterator *
Query::get_terms_begin()
    CODE:
        RETVAL = new TermIterator(THIS->get_terms_begin());
    OUTPUT:
        RETVAL

TermIterator *
Query::get_terms_end()
    CODE:
        RETVAL = new TermIterator(THIS->get_terms_end());
    OUTPUT:
        RETVAL

bool
Query::empty()

string
Query::get_description()

void
Query::DESTROY()