Home modules.gotpike.org
Username: Password: [Create Account]
[Forgot Password?]

Modules

ADT
Database
GTK2
GUI
IP
PiJAX
Public
Sql
Stdio
Subversion
System
Tools
Xosd
lua
v4l2
wx

Recent Changes

Public.Parser.XML2 1.50
Public.ZeroMQ 1.1
Public.Template.Mustache 1.0
Public.Protocols.XMPP 1.4
Sql.Provider.jdbc 1.0

Popular Downloads

Public.Parser.JSON2 1.0
Public.Parser.JSON 0.2
GTK2 2.23
Public.Web.FCGI 1.8
Public.Parser.XML2 1.48


Module Information
Public.Xapian
Viewing contents of Public_Xapian-1.9/xapian.cc

/* Generated from "xapian.ccmod" by precompile.pike running Pike v8.0 release 358
 *
 * Do NOT edit this file.
 */

#undef PRECOMPILE_API_VERSION
#define PRECOMPILE_API_VERSION 6

#undef PRECOMPILE_SUB_PIKEVARS
#define PRECOMPILE_SUB_PIKEVARS 1

#undef PRECOMPILE_DYNAMIC_TYPES
#define PRECOMPILE_DYNAMIC_TYPES 1



#undef cmod___CMOD__
#define cmod___CMOD__ 1
#line 1 "xapian.ccmod"
#line 1 "xapian.ccmod"
#line 1 "xapian.ccmod"
#line 2998 "/usr/local/pike/8.0.358/lib/modules/Tools.pmod/Standalone.pmod/precompile.pike"







#line 3005 "/usr/local/pike/8.0.358/lib/modules/Tools.pmod/Standalone.pmod/precompile.pike"
#line 1 "xapian.ccmod"
#line 1 "xapian.ccmod"
#define DEFAULT_CMOD_STORAGE
/*! @module Public
 */

/*! @module Xapian
 *!  An interface to the Xapian full text engine.
 *! 
 *!  For details, please see http://www.xapian.org
 */

#define _GNU_SOURCE

extern "C" {
#include "xapian_config.h"
#include "util.h"

}

#include 

#include 
#include 
#include 
#include 

using namespace Xapian;
using std::string;
using std::vector;

#include 

#define OBJ2_MSET(o) ((struct Xapian_MSet_struct *)get_storage(o, Xapian_MSet_program))
#define OBJ2_ESET(o) ((struct Xapian_ESet_struct *)get_storage(o, Xapian_ESet_program))
#define OBJ2_STEM(o) ((struct Xapian_Stem_struct *)get_storage(o, Xapian_Stem_program))
#define OBJ2_RSET(o) ((struct Xapian_RSet_struct *)get_storage(o, Xapian_RSet_program))
#define OBJ2_STOPPER(o) ((struct Xapian_Stopper_struct *)get_storage(o, Xapian_Stopper_program))
#define OBJ2_WEIGHT(o) ((struct Xapian_Weight_struct *)get_storage(o, Xapian_Weight_program))
#define OBJ2_MSETITERATOR(o) ((struct Xapian_MSetIterator_struct *)get_storage(o, Xapian_MSetIterator_program))
#define OBJ2_ESETITERATOR(o) ((struct Xapian_ESetIterator_struct *)get_storage(o, Xapian_ESetIterator_program))
#define OBJ2_VALUEITERATOR(o) ((struct Xapian_ValueIterator_struct *)get_storage(o, Xapian_ValueIterator_program))
#define OBJ2_TERMITERATOR(o) ((struct Xapian_TermIterator_struct *)get_storage(o, Xapian_TermIterator_program))
#define OBJ2_POSITIONITERATOR(o) ((struct Xapian_PositionIterator_struct *)get_storage(o, Xapian_PositionIterator_program))
#define OBJ2_DOCUMENT(o) ((struct Xapian_Document_struct *)get_storage(o, Xapian_Document_program))
#define OBJ2_DATABASE(o) ((struct Xapian_Database_struct *)get_storage(o, Xapian_Database_program))
#define OBJ2_QUERY(o) ((struct Xapian_Query_struct *)get_storage(o, Xapian_Query_program))
#define OBJ2_TERMGENERATOR(o) ((struct Xapian_TermGenerator_struct *)get_storage(o, Xapian_TermGenerator_program))
#define OBJ2_VALUERANGEPROCESSOR(o) ((struct Xapian_ValueRangeProcessor_struct *)get_storage(o, Xapian_ValueRangeProcessor_program))


extern "C" struct program * Xapian_Document_program;
extern "C" struct program * Xapian_MSetIterator_program;
extern "C" struct program * Xapian_ValueIterator_program;
extern "C" struct program * Xapian_TermIterator_program;
extern "C" struct program * Xapian_PositionIterator_program;
extern "C" struct program * Xapian_MSet_program;
extern "C" struct program * Xapian_Stem_program;
extern "C" struct program * Xapian_TermGenerator_program;
extern "C" struct program * Xapian_ValueRangeProcessor_program;
extern "C" typedef struct
{
Database *database;
} XAPIAN_DATABASE_OBJECT_DATA;

extern "C" typedef struct
{
Stem *stem;
} XAPIAN_STEM_OBJECT_DATA;

extern "C" typedef struct
{
Weight *weight;
} XAPIAN_WEIGHT_OBJECT_DATA;

extern "C" typedef struct
{
TermGenerator *termgenerator;
} XAPIAN_TERMGENERATOR_OBJECT_DATA;

extern "C" typedef struct
{
QueryParser *parser;
} XAPIAN_QUERYPARSER_OBJECT_DATA;

extern "C" typedef struct
{
Stopper *stopper;
} XAPIAN_STOPPER_OBJECT_DATA;

extern "C" typedef struct
{
Enquire *enquire;
} XAPIAN_ENQUIRE_OBJECT_DATA;

extern "C" typedef struct
{
Query *query;
} XAPIAN_QUERY_OBJECT_DATA;

extern "C" typedef struct
{
MSet *mset;
} XAPIAN_MSET_OBJECT_DATA;

extern "C" typedef struct
{
RSet *rset;
} XAPIAN_RSET_OBJECT_DATA;

extern "C" typedef struct
{
MSetIterator *mseti;
} XAPIAN_MSETITERATOR_OBJECT_DATA;

extern "C" typedef struct
{
ValueIterator *valuei;
} XAPIAN_VALUEITERATOR_OBJECT_DATA;

extern "C" typedef struct
{
PositionIterator *positioni;
} XAPIAN_POSITIONITERATOR_OBJECT_DATA;

extern "C" typedef struct
{
ESet *eset;
} XAPIAN_ESET_OBJECT_DATA;

extern "C" typedef struct
{
ESetIterator *eseti;
} XAPIAN_ESETITERATOR_OBJECT_DATA;

extern "C" typedef struct
{
TermIterator *termi;
} XAPIAN_TERMITERATOR_OBJECT_DATA;

extern "C" typedef struct
{
Document *document;
} XAPIAN_DOCUMENT_OBJECT_DATA;

extern "C" typedef struct
{
ValueRangeProcessor *processor;
} XAPIAN_VALUERANGEPROCESSOR_OBJECT_DATA;

/*! @decl string sortable_serialise(float value)
 *! 
 *! Convert a floating point number to a string, preserving sort order.  
 */
#define f_Xapian_sortable_serialise_defined

#ifdef f_Xapian_sortable_serialise_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_sortable_serialise_fun_num = 0;

#endif /* f_Xapian_sortable_serialise_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_sortable_serialise(INT32 args) {
#line 153 "xapian.ccmod"
FLOAT_TYPE value;
#line 153 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("sortable_serialise",args,1);
#line 153 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_FLOAT) SIMPLE_ARG_TYPE_ERROR("sortable_serialise",1,"float");
#line 153 "xapian.ccmod"
value=Pike_sp[0-1].u.float_number;
{
string str = sortable_serialise(value);
pop_stack();
push_text(str.c_str()); 
}

}
/*! @decl float sortable_unserialise(string value)
 *!
 *! Convert a string encoded using sortable_serialise back to a floating 
 *! point number. 
 */
#define f_Xapian_sortable_unserialise_defined

#ifdef f_Xapian_sortable_unserialise_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_sortable_unserialise_fun_num = 0;

#endif /* f_Xapian_sortable_unserialise_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_sortable_unserialise(INT32 args) {
#line 165 "xapian.ccmod"
struct pike_string * value;
#line 165 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("sortable_unserialise",args,1);
#line 165 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("sortable_unserialise",1,"string");
#line 165 "xapian.ccmod"
debug_malloc_pass(value=Pike_sp[0-1].u.string);
{
double f;
string str((const char *)value->str, (size_t)value->len);
f = sortable_unserialise(str);
push_float(f);
}

}
/*! @decl int minor_version()
 */
#define f_Xapian_minor_version_defined

#ifdef f_Xapian_minor_version_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_minor_version_fun_num = 0;

#endif /* f_Xapian_minor_version_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_minor_version(INT32 args) {
#line 175 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("minor_version",args,0);
{
push_int(minor_version());
}

}
/*! @decl int major_version()
 */
#define f_Xapian_major_version_defined

#ifdef f_Xapian_major_version_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_major_version_fun_num = 0;

#endif /* f_Xapian_major_version_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_major_version(INT32 args) {
#line 182 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("major_version",args,0);
{
push_int(major_version());
}

}
/*! @decl int revision()
 */
#define f_Xapian_revision_defined

#ifdef f_Xapian_revision_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_revision_fun_num = 0;

#endif /* f_Xapian_revision_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_revision(INT32 args) {
#line 189 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("revision",args,0);
{
push_int(revision());
}


}
/*! @decl string version_string()
 *! Report the version string of the library which the program is linked 
 *! with. 
 */
#define f_Xapian_version_string_defined

#ifdef f_Xapian_version_string_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_version_string_fun_num = 0;

#endif /* f_Xapian_version_string_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_version_string(INT32 args) {
#line 199 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("version_string",args,0);
{
push_text(version_string());
}

}
/*! @class Weight
*/

#undef class_Xapian_Weight_defined
#define class_Xapian_Weight_defined
DEFAULT_CMOD_STORAGE struct program *Xapian_Weight_program=NULL;

#ifdef Xapian_Weight_program_fun_num_used
DEFAULT_CMOD_STORAGE int Xapian_Weight_program_fun_num=-1;
#endif /* Xapian_Weight_program_fun_num_used */

#undef var_object_data_Xapian_Weight_defined
#define var_object_data_Xapian_Weight_defined

#undef THIS
#define THIS ((struct Xapian_Weight_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef THIS_XAPIAN_WEIGHT
#define THIS_XAPIAN_WEIGHT ((struct Xapian_Weight_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef OBJ2_XAPIAN_WEIGHT
#define OBJ2_XAPIAN_WEIGHT(o) ((struct Xapian_Weight_struct *)(o->storage+Xapian_Weight_storage_offset))

#undef GET_XAPIAN_WEIGHT_STORAGE
#define GET_XAPIAN_WEIGHT_STORAGE(o) ((struct Xapian_Weight_struct *)(o->storage+Xapian_Weight_storage_offset)
static ptrdiff_t Xapian_Weight_storage_offset;
struct Xapian_Weight_struct {

#ifdef var_object_data_Xapian_Weight_defined
#line 208 "xapian.ccmod"
XAPIAN_WEIGHT_OBJECT_DATA *object_data;
#endif /* var_object_data_Xapian_Weight_defined */
};
#ifdef PIKE_DEBUG
/* Ensure the struct is used in a variable declaration, or else gdb might not see it. */
static struct Xapian_Weight_struct *Xapian_Weight_gdb_dummy_ptr;
#endif
#line 210 "xapian.ccmod"
/*  Weight.int get_sumpart_needs_doclength() */
/*! @decl int get_sumpart_needs_doclength()
 *!
 *! returns false if the weight object doesn't need doclength   
 *! @returns
 *!  
 *!
 */
#define f_Xapian_Weight_get_sumpart_needs_doclength_defined

#ifdef f_Xapian_Weight_get_sumpart_needs_doclength_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Weight_get_sumpart_needs_doclength_fun_num = 0;

#endif /* f_Xapian_Weight_get_sumpart_needs_doclength_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Weight_get_sumpart_needs_doclength(INT32 args) {
#line 218 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_sumpart_needs_doclength",args,0);
{
#ifdef HAVE_WEIGHT_GET_SUMPART_NEEDS_DOCLENGTH
 Weight *weight;
weight = THIS->object_data->weight;

bool i = weight->get_sumpart_needs_doclength();

push_int(i?1:0);
#else
 push_int(0);
#endif /* HAVE_WEIGHT_GET_SUMPART_NEEDS_DOCLENGTH */
}

}
#line 232 "xapian.ccmod"
/*  Weight.float get_maxpart() */
/*! @decl float get_maxpart()
 *!
 *!  Gets the maximum value that @[get_sumpart]() may return. 
 *!  
 *!  This is used in optimising searches, by having the postlist tree 
 *!  decay appropriately when parts of it can have limited, or no, further 
 *!  effect.
 *! @returns
 *!  
 *!
 */
#define f_Xapian_Weight_get_maxpart_defined

#ifdef f_Xapian_Weight_get_maxpart_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Weight_get_maxpart_fun_num = 0;

#endif /* f_Xapian_Weight_get_maxpart_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Weight_get_maxpart(INT32 args) {
#line 244 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_maxpart",args,0);
{
Weight *weight;
weight = THIS->object_data->weight;

Xapian::weight i = weight->get_maxpart();

push_float((FLOAT_TYPE)i);
}

}
#line 254 "xapian.ccmod"
/*  Weight.float get_maxextra() */
/*! @decl float get_maxextra()
 *!
 *!  Gets the maximum value that @[get_sumextra]() may return. 
 *!  
 *!  This is used in optimising searches.
 *! @returns
 *!  
 *!
 */
#define f_Xapian_Weight_get_maxextra_defined

#ifdef f_Xapian_Weight_get_maxextra_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Weight_get_maxextra_fun_num = 0;

#endif /* f_Xapian_Weight_get_maxextra_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Weight_get_maxextra(INT32 args) {
#line 264 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_maxextra",args,0);
{
Weight *weight;
weight = THIS->object_data->weight;

Xapian::weight i = weight->get_maxextra();

push_float((FLOAT_TYPE)i);
}

}
#line 274 "xapian.ccmod"
/*  Weight.float get_sumextra(int len, int uniqterms) */
/*! @decl float get_sumextra(int len, int uniqterms)
 *!
 *!  Get an extra weight for a document to add to the sum calculated over 
 *!  the query terms. 
 *! 
 *! This returns a weight for a given document, and is used by some 
 *! weighting schemes to account for influence such as document length.
 *! @param len
 *!  the (unnormalised) document length.
 *! @param uniqterms
 *!  the number of unique terms in the document.
 *!
 *! @returns
 *!  
 *!
 */
#define f_Xapian_Weight_get_sumextra_defined

#ifdef f_Xapian_Weight_get_sumextra_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Weight_get_sumextra_fun_num = 0;

#endif /* f_Xapian_Weight_get_sumextra_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Weight_get_sumextra(INT32 args) {
#line 291 "xapian.ccmod"
INT_TYPE len;
#line 291 "xapian.ccmod"
INT_TYPE uniqterms;
#line 291 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("get_sumextra",args,2);
#line 291 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_sumextra",1,"int");
#line 291 "xapian.ccmod"
len=Pike_sp[0-2].u.integer;
#line 291 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_sumextra",2,"int");
#line 291 "xapian.ccmod"
uniqterms=Pike_sp[1-2].u.integer;
{
Weight *weight;
weight = THIS->object_data->weight;

Xapian::weight i = weight->get_sumextra((termcount)len, (termcount)uniqterms);

push_float((FLOAT_TYPE)i);
}

}
#line 301 "xapian.ccmod"
/*  Weight.float get_sumpart(int wdf, int len) */
/*! @decl float get_sumpart(int wdf, int len)
 *!Get a weight which is part of the sum over terms being performed.
 *! 
 *! This returns a weight for a given term and document. These weights are 
 *! summed to give a total weight for the document.
 *!  
 *! @param wdf
 *!  the within document frequency of the term.
 *!
 *! @param len
 *!  the (unnormalised) document length.
 *!
 *! @param uniqterms
 *!  number of unique terms in the document (used for absolute smoothing)
 *! @returns
 *!  
 *!
 */
#define f_Xapian_Weight_get_sumpart_defined

#ifdef f_Xapian_Weight_get_sumpart_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Weight_get_sumpart_fun_num = 0;

#endif /* f_Xapian_Weight_get_sumpart_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Weight_get_sumpart(INT32 args) {
#line 320 "xapian.ccmod"
INT_TYPE wdf;
#line 320 "xapian.ccmod"
INT_TYPE len;
#line 320 "xapian.ccmod"
INT_TYPE uniqterms;
#line 320 "xapian.ccmod"
if(args != 3) wrong_number_of_args_error("get_sumpart",args,3);
#line 320 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_sumpart",1,"int");
#line 320 "xapian.ccmod"
wdf=Pike_sp[0-3].u.integer;
#line 320 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_sumpart",2,"int");
#line 320 "xapian.ccmod"
len=Pike_sp[1-3].u.integer;
#line 320 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_sumpart",3,"int");
#line 320 "xapian.ccmod"
uniqterms=Pike_sp[2-3].u.integer;
{
Weight *weight;
weight = THIS->object_data->weight;

Xapian::weight i = weight->get_sumpart((termcount)wdf, (termcount)len, (termcount)uniqterms);

push_float((FLOAT_TYPE)i);
}


}
#line 331 "xapian.ccmod"
/*  Weight.string serialise() */
/*! @decl string serialise()
 *!
 *!  Serialise object parameters into a string.
 *! @returns
 *!  
 *!
 */
#define f_Xapian_Weight_serialise_defined

#ifdef f_Xapian_Weight_serialise_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Weight_serialise_fun_num = 0;

#endif /* f_Xapian_Weight_serialise_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Weight_serialise(INT32 args) {
#line 339 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("serialise",args,0);
{
Weight *weight;
weight = THIS->object_data->weight;

string str = weight->serialise();

push_text(str.c_str());
}

}
#line 349 "xapian.ccmod"
/*  Weight.string name() */
/*! @decl string name()
 *!
 *!  Name of the weighting scheme.
 *! 
 *! If the subclass is called FooWeight, this should return "Foo".
 *! @returns
 *!  
 *!
 */
#define f_Xapian_Weight_name_defined

#ifdef f_Xapian_Weight_name_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Weight_name_fun_num = 0;

#endif /* f_Xapian_Weight_name_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Weight_name(INT32 args) {
#line 359 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("name",args,0);
{
Weight *weight;
weight = THIS->object_data->weight;

string str = weight->name();

push_text(str.c_str());
}

}

#undef internal_init_Xapian_Weight_defined
#define internal_init_Xapian_Weight_defined

#undef Xapian_Weight_event_handler_defined
#define Xapian_Weight_event_handler_defined
static void init_Xapian_Weight_struct(void)
#line 370 "xapian.ccmod"
{
XAPIAN_WEIGHT_OBJECT_DATA * dta = 
(XAPIAN_WEIGHT_OBJECT_DATA*)malloc(sizeof(XAPIAN_WEIGHT_OBJECT_DATA));
if (!dta)
Pike_error("init_sample: Out of memory!\n");

dta->weight = NULL;
THIS->object_data = dta;
}

/*  Weight.void destroy() */
/*! @decl void destroy()
 *!
 *!  
 *!
 */
#define f_Xapian_Weight_destroy_defined

#ifdef f_Xapian_Weight_destroy_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Weight_destroy_fun_num = 0;

#endif /* f_Xapian_Weight_destroy_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Weight_destroy(INT32 args) {
#line 386 "xapian.ccmod"
struct svalue * reason;
#line 386 "xapian.ccmod"
if(args > 1) wrong_number_of_args_error("destroy",args,1);
#line 386 "xapian.ccmod"
if ((args > 0) &&
    ((TYPEOF(Pike_sp[0-args]) != PIKE_T_INT) ||
     (SUBTYPEOF(Pike_sp[0-args]) != NUMBER_UNDEFINED))) {
#line 386 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-args]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("destroy",1,"int|void");
#line 386 "xapian.ccmod"
reason=Pike_sp+0-args; dmalloc_touch_svalue(Pike_sp+0-args);
#line 386 "xapian.ccmod"
} else reason = NULL;
{

Weight *weight;
weight = THIS->object_data->weight;

if(weight) 
{
delete weight;
}

pop_n_elems(args);
}

}

#undef Xapian_Weight_gc_live_obj
#define Xapian_Weight_gc_live_obj

#undef internal_exit_Xapian_Weight_defined
#define internal_exit_Xapian_Weight_defined

#undef Xapian_Weight_event_handler_defined
#define Xapian_Weight_event_handler_defined
static void exit_Xapian_Weight_struct(void)
#line 401 "xapian.ccmod"
{
if(THIS->object_data)
{

Weight *weight;
weight = THIS->object_data->weight;
/*    printf("shutting down!\n"); */
free(THIS->object_data);
}
}


#ifdef Xapian_Weight_event_handler_defined
static void Xapian_Weight_event_handler(int ev) {
  switch(ev) {

#ifdef internal_init_Xapian_Weight_defined
  case PROG_EVENT_INIT: init_Xapian_Weight_struct(); break;

#endif /* internal_init_Xapian_Weight_defined */

#ifdef internal_exit_Xapian_Weight_defined
  case PROG_EVENT_EXIT: exit_Xapian_Weight_struct(); break;

#endif /* internal_exit_Xapian_Weight_defined */
  default: break; 
  }
}

#endif /* Xapian_Weight_event_handler_defined */
/*!  @endclass
*/

/*! @class BM25Weight
 *! @inherit Weight
 *! BM25 weighting scheme.
*/


#undef class_Xapian_BM25Weight_defined
#define class_Xapian_BM25Weight_defined
DEFAULT_CMOD_STORAGE struct program *Xapian_BM25Weight_program=NULL;

#ifdef Xapian_BM25Weight_program_fun_num_used
DEFAULT_CMOD_STORAGE int Xapian_BM25Weight_program_fun_num=-1;
#endif /* Xapian_BM25Weight_program_fun_num_used */

#undef inherit_Xapian_Weight_Xapian_BM25Weight_defined
#define inherit_Xapian_Weight_Xapian_BM25Weight_defined
#line 424 "xapian.ccmod"
static int Xapian_BM25Weight_Xapian_Weight_inh_num = -1;
#line 424 "xapian.ccmod"
static int Xapian_BM25Weight_Xapian_Weight_inh_offset = -1;
#define f_Xapian_BM25Weight_create_defined

#ifdef f_Xapian_BM25Weight_create_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_BM25Weight_create_fun_num = 0;

#endif /* f_Xapian_BM25Weight_create_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_BM25Weight_create(INT32 args) {
#line 426 "xapian.ccmod"
FLOAT_TYPE k1;
#line 426 "xapian.ccmod"
FLOAT_TYPE k2;
#line 426 "xapian.ccmod"
FLOAT_TYPE k3;
#line 426 "xapian.ccmod"
FLOAT_TYPE b;
#line 426 "xapian.ccmod"
FLOAT_TYPE min_normlen;
#line 426 "xapian.ccmod"
if(args != 5) wrong_number_of_args_error("create",args,5);
#line 426 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-5]) != PIKE_T_FLOAT) SIMPLE_ARG_TYPE_ERROR("create",1,"float");
#line 426 "xapian.ccmod"
k1=Pike_sp[0-5].u.float_number;
#line 426 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-5]) != PIKE_T_FLOAT) SIMPLE_ARG_TYPE_ERROR("create",2,"float");
#line 426 "xapian.ccmod"
k2=Pike_sp[1-5].u.float_number;
#line 426 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-5]) != PIKE_T_FLOAT) SIMPLE_ARG_TYPE_ERROR("create",3,"float");
#line 426 "xapian.ccmod"
k3=Pike_sp[2-5].u.float_number;
#line 426 "xapian.ccmod"
if(TYPEOF(Pike_sp[3-5]) != PIKE_T_FLOAT) SIMPLE_ARG_TYPE_ERROR("create",4,"float");
#line 426 "xapian.ccmod"
b=Pike_sp[3-5].u.float_number;
#line 426 "xapian.ccmod"
if(TYPEOF(Pike_sp[4-5]) != PIKE_T_FLOAT) SIMPLE_ARG_TYPE_ERROR("create",5,"float");
#line 426 "xapian.ccmod"
min_normlen=Pike_sp[4-5].u.float_number;
{
BM25Weight * weight;

weight = new BM25Weight((double)k1, (double)k2, (double)k3, (double)b, (double)min_normlen);

THIS->object_data->weight = weight;
}

}
/*!  @endclass
*/

/*! @class BoolWeight
 *! @inherit Weight
 *! Boolean weighting scheme (everything gets 0).
*/


#undef class_Xapian_BoolWeight_defined
#define class_Xapian_BoolWeight_defined
DEFAULT_CMOD_STORAGE struct program *Xapian_BoolWeight_program=NULL;

#ifdef Xapian_BoolWeight_program_fun_num_used
DEFAULT_CMOD_STORAGE int Xapian_BoolWeight_program_fun_num=-1;
#endif /* Xapian_BoolWeight_program_fun_num_used */

#undef inherit_Xapian_Weight_Xapian_BoolWeight_defined
#define inherit_Xapian_Weight_Xapian_BoolWeight_defined
#line 447 "xapian.ccmod"
static int Xapian_BoolWeight_Xapian_Weight_inh_num = -1;
#line 447 "xapian.ccmod"
static int Xapian_BoolWeight_Xapian_Weight_inh_offset = -1;
#define f_Xapian_BoolWeight_create_defined

#ifdef f_Xapian_BoolWeight_create_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_BoolWeight_create_fun_num = 0;

#endif /* f_Xapian_BoolWeight_create_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_BoolWeight_create(INT32 args) {
#line 449 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("create",args,0);
{
BoolWeight * weight;

weight = new BoolWeight();

THIS->object_data->weight = weight;
}
}
/*!  @endclass
*/

/*! @class TradWeight
 *! @inherit Weight
 *! Traditional probabilistic weighting scheme.
 *! 
 *! This class implements the Traditional Probabilistic Weighting scheme, 
 *! as described by the early papers on Probabilistic Retrieval. @[BM25Weight]
 *! generally gives better results. 
*/


#undef class_Xapian_TradWeight_defined
#define class_Xapian_TradWeight_defined
DEFAULT_CMOD_STORAGE struct program *Xapian_TradWeight_program=NULL;

#ifdef Xapian_TradWeight_program_fun_num_used
DEFAULT_CMOD_STORAGE int Xapian_TradWeight_program_fun_num=-1;
#endif /* Xapian_TradWeight_program_fun_num_used */

#undef inherit_Xapian_Weight_Xapian_TradWeight_defined
#define inherit_Xapian_Weight_Xapian_TradWeight_defined
#line 473 "xapian.ccmod"
static int Xapian_TradWeight_Xapian_Weight_inh_num = -1;
#line 473 "xapian.ccmod"
static int Xapian_TradWeight_Xapian_Weight_inh_offset = -1;
#define f_Xapian_TradWeight_create_defined

#ifdef f_Xapian_TradWeight_create_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_TradWeight_create_fun_num = 0;

#endif /* f_Xapian_TradWeight_create_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_TradWeight_create(INT32 args) {
#line 475 "xapian.ccmod"
FLOAT_TYPE k;
#line 475 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("create",args,1);
#line 475 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_FLOAT) SIMPLE_ARG_TYPE_ERROR("create",1,"float");
#line 475 "xapian.ccmod"
k=Pike_sp[0-1].u.float_number;
{
TradWeight * weight;

weight = new TradWeight((double)k);

THIS->object_data->weight = weight;
}
}
/*!  @endclass
*/

/*! @class ValueRangeProcessor
 *! Base class for value range processors. 
*/


#undef class_Xapian_ValueRangeProcessor_defined
#define class_Xapian_ValueRangeProcessor_defined
DEFAULT_CMOD_STORAGE struct program *Xapian_ValueRangeProcessor_program=NULL;

#ifdef Xapian_ValueRangeProcessor_program_fun_num_used
DEFAULT_CMOD_STORAGE int Xapian_ValueRangeProcessor_program_fun_num=-1;
#endif /* Xapian_ValueRangeProcessor_program_fun_num_used */

#undef var_object_data_Xapian_ValueRangeProcessor_defined
#define var_object_data_Xapian_ValueRangeProcessor_defined

#undef THIS
#define THIS ((struct Xapian_ValueRangeProcessor_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef THIS_XAPIAN_VALUERANGEPROCESSOR
#define THIS_XAPIAN_VALUERANGEPROCESSOR ((struct Xapian_ValueRangeProcessor_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef OBJ2_XAPIAN_VALUERANGEPROCESSOR
#define OBJ2_XAPIAN_VALUERANGEPROCESSOR(o) ((struct Xapian_ValueRangeProcessor_struct *)(o->storage+Xapian_ValueRangeProcessor_storage_offset))

#undef GET_XAPIAN_VALUERANGEPROCESSOR_STORAGE
#define GET_XAPIAN_VALUERANGEPROCESSOR_STORAGE(o) ((struct Xapian_ValueRangeProcessor_struct *)(o->storage+Xapian_ValueRangeProcessor_storage_offset)
static ptrdiff_t Xapian_ValueRangeProcessor_storage_offset;
struct Xapian_ValueRangeProcessor_struct {

#ifdef var_object_data_Xapian_ValueRangeProcessor_defined
#line 494 "xapian.ccmod"
XAPIAN_VALUERANGEPROCESSOR_OBJECT_DATA *object_data;
#endif /* var_object_data_Xapian_ValueRangeProcessor_defined */
};
#ifdef PIKE_DEBUG
/* Ensure the struct is used in a variable declaration, or else gdb might not see it. */
static struct Xapian_ValueRangeProcessor_struct *Xapian_ValueRangeProcessor_gdb_dummy_ptr;
#endif
/*! @decl int `()(string begin, string end)
 *!
 *!  	Is term a stop-word?   
 *! @returns
 *!  1 if true, 0 otherwise.
 *!
 */
#define f_Xapian_ValueRangeProcessor_cq__backtick_28_29_defined

#ifdef f_Xapian_ValueRangeProcessor_cq__backtick_28_29_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ValueRangeProcessor_cq__backtick_28_29_fun_num = 0;

#endif /* f_Xapian_ValueRangeProcessor_cq__backtick_28_29_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ValueRangeProcessor_cq__backtick_28_29(INT32 args) {
#line 503 "xapian.ccmod"
struct pike_string * begin;
#line 503 "xapian.ccmod"
struct pike_string * end;
#line 503 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("`()",args,2);
#line 503 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("`()",1,"string");
#line 503 "xapian.ccmod"
debug_malloc_pass(begin=Pike_sp[0-2].u.string);
#line 503 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("`()",2,"string");
#line 503 "xapian.ccmod"
debug_malloc_pass(end=Pike_sp[1-2].u.string);
{
ValueRangeProcessor * vrp;
bool i;
vrp = THIS->object_data->processor;
string str1((const char *)begin->str, (size_t)begin->len);
string str2((const char *)end->str, (size_t)end->len);

i = (*vrp)(str1, str2); 

push_int(i?1:0);
}

}

#undef internal_init_Xapian_ValueRangeProcessor_defined
#define internal_init_Xapian_ValueRangeProcessor_defined

#undef Xapian_ValueRangeProcessor_event_handler_defined
#define Xapian_ValueRangeProcessor_event_handler_defined
static void init_Xapian_ValueRangeProcessor_struct(void)
#line 517 "xapian.ccmod"
{
XAPIAN_VALUERANGEPROCESSOR_OBJECT_DATA * dta = 
(XAPIAN_VALUERANGEPROCESSOR_OBJECT_DATA*)malloc(sizeof(XAPIAN_VALUERANGEPROCESSOR_OBJECT_DATA));
if (!dta)
Pike_error("init_sample: Out of memory!\n");

dta->processor = NULL;
THIS->object_data = dta;
}

/*! @decl void destroy()
 *!
 *!  
 *!
 */
#define f_Xapian_ValueRangeProcessor_destroy_defined

#ifdef f_Xapian_ValueRangeProcessor_destroy_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ValueRangeProcessor_destroy_fun_num = 0;

#endif /* f_Xapian_ValueRangeProcessor_destroy_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ValueRangeProcessor_destroy(INT32 args) {
#line 532 "xapian.ccmod"
struct svalue * reason;
#line 532 "xapian.ccmod"
if(args > 1) wrong_number_of_args_error("destroy",args,1);
#line 532 "xapian.ccmod"
if ((args > 0) &&
    ((TYPEOF(Pike_sp[0-args]) != PIKE_T_INT) ||
     (SUBTYPEOF(Pike_sp[0-args]) != NUMBER_UNDEFINED))) {
#line 532 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-args]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("destroy",1,"int|void");
#line 532 "xapian.ccmod"
reason=Pike_sp+0-args; dmalloc_touch_svalue(Pike_sp+0-args);
#line 532 "xapian.ccmod"
} else reason = NULL;
{
ValueRangeProcessor *vrp;
vrp = THIS->object_data->processor;

if(vrp) 
{
delete vrp;
}

pop_n_elems(args);
}

}

#undef Xapian_ValueRangeProcessor_gc_live_obj
#define Xapian_ValueRangeProcessor_gc_live_obj

#undef internal_exit_Xapian_ValueRangeProcessor_defined
#define internal_exit_Xapian_ValueRangeProcessor_defined

#undef Xapian_ValueRangeProcessor_event_handler_defined
#define Xapian_ValueRangeProcessor_event_handler_defined
static void exit_Xapian_ValueRangeProcessor_struct(void)
#line 546 "xapian.ccmod"
{
if(THIS->object_data)
{

ValueRangeProcessor *vrp;
vrp = THIS->object_data->processor;
/*   printf("shutting down!\n"); */
free(THIS->object_data);
}
}


#ifdef Xapian_ValueRangeProcessor_event_handler_defined
static void Xapian_ValueRangeProcessor_event_handler(int ev) {
  switch(ev) {

#ifdef internal_init_Xapian_ValueRangeProcessor_defined
  case PROG_EVENT_INIT: init_Xapian_ValueRangeProcessor_struct(); break;

#endif /* internal_init_Xapian_ValueRangeProcessor_defined */

#ifdef internal_exit_Xapian_ValueRangeProcessor_defined
  case PROG_EVENT_EXIT: exit_Xapian_ValueRangeProcessor_struct(); break;

#endif /* internal_exit_Xapian_ValueRangeProcessor_defined */
  default: break; 
  }
}

#endif /* Xapian_ValueRangeProcessor_event_handler_defined */
/*!  @endclass
*/


/*! @class StringValueRangeProcessor
 *! @inherit ValueRangeProcessor
 *!
 *! Handle a string range.
 *!
 *! The end points can be any strings. 
 */


#undef class_Xapian_StringValueRangeProcessor_defined
#define class_Xapian_StringValueRangeProcessor_defined
DEFAULT_CMOD_STORAGE struct program *Xapian_StringValueRangeProcessor_program=NULL;

#ifdef Xapian_StringValueRangeProcessor_program_fun_num_used
DEFAULT_CMOD_STORAGE int Xapian_StringValueRangeProcessor_program_fun_num=-1;
#endif /* Xapian_StringValueRangeProcessor_program_fun_num_used */

#undef inherit_Xapian_ValueRangeProcessor_Xapian_StringValueRangeProcessor_defined
#define inherit_Xapian_ValueRangeProcessor_Xapian_StringValueRangeProcessor_defined
#line 572 "xapian.ccmod"
static int Xapian_StringValueRangeProcessor_Xapian_ValueRangeProcessor_inh_num = -1;
#line 572 "xapian.ccmod"
static int Xapian_StringValueRangeProcessor_Xapian_ValueRangeProcessor_inh_offset = -1;
#define f_Xapian_StringValueRangeProcessor_create_defined

#ifdef f_Xapian_StringValueRangeProcessor_create_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_StringValueRangeProcessor_create_fun_num = 0;

#endif /* f_Xapian_StringValueRangeProcessor_create_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_StringValueRangeProcessor_create(INT32 args) {
#line 574 "xapian.ccmod"
INT_TYPE valueno;
#line 574 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("create",args,1);
#line 574 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("create",1,"int");
#line 574 "xapian.ccmod"
valueno=Pike_sp[0-1].u.integer;
{
StringValueRangeProcessor * vrp = new StringValueRangeProcessor(valueno);

THIS_XAPIAN_VALUERANGEPROCESSOR->object_data->processor = (ValueRangeProcessor*) vrp ;
pop_n_elems(args);
}

}
/*!  @endclass
*/


/*! @class NumberValueRangeProcessor
 *! @inherit ValueRangeProcessor
 *!
 *! Handle a number range.
 *!
 *! This class must be used on values which have been encoded using 
 *! @[Public.Xapian.sortable_serialise]() which turns numbers into strings 
 *! which will sort in the same order as the numbers (the same values can 
 *! be used to implement a numeric sort).
 *!
 */


#undef class_Xapian_NumberValueRangeProcessor_defined
#define class_Xapian_NumberValueRangeProcessor_defined
DEFAULT_CMOD_STORAGE struct program *Xapian_NumberValueRangeProcessor_program=NULL;

#ifdef Xapian_NumberValueRangeProcessor_program_fun_num_used
DEFAULT_CMOD_STORAGE int Xapian_NumberValueRangeProcessor_program_fun_num=-1;
#endif /* Xapian_NumberValueRangeProcessor_program_fun_num_used */

#undef inherit_Xapian_ValueRangeProcessor_Xapian_NumberValueRangeProcessor_defined
#define inherit_Xapian_ValueRangeProcessor_Xapian_NumberValueRangeProcessor_defined
#line 601 "xapian.ccmod"
static int Xapian_NumberValueRangeProcessor_Xapian_ValueRangeProcessor_inh_num = -1;
#line 601 "xapian.ccmod"
static int Xapian_NumberValueRangeProcessor_Xapian_ValueRangeProcessor_inh_offset = -1;
#define f_Xapian_NumberValueRangeProcessor_create_1_defined

#ifdef f_Xapian_NumberValueRangeProcessor_create_1_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_NumberValueRangeProcessor_create_1_fun_num = 0;

#endif /* f_Xapian_NumberValueRangeProcessor_create_1_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_NumberValueRangeProcessor_create_1(INT32 args) {
#line 603 "xapian.ccmod"
INT_TYPE valueno;
#line 603 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("create",args,1);
#line 603 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("create",1,"int");
#line 603 "xapian.ccmod"
valueno=Pike_sp[0-1].u.integer;
{
NumberValueRangeProcessor * vrp = new NumberValueRangeProcessor(valueno);

THIS_XAPIAN_VALUERANGEPROCESSOR->object_data->processor = (ValueRangeProcessor*) vrp ;
pop_n_elems(args);
}

}
/*! @decl void create(int valueno, string _str, int is_prefix)
 *!
 *! The string supplied in str_ is used by operator() to decide whether 
 *! the pair of strings supplied to it constitute a valid range. If 
 *! prefix_ is true, the first value in a range must begin with str_ (and 
 *! the second value may optionally begin with str_); if prefix_ is 
 *! false, the second value in a range must end with str_ (and the first 
 *! value may optionally end with str_).
 *! 
 *! If str_ is empty, the setting of prefix_ is irrelevant, and no special 
 *! strings are required at the start or end of the strings defining the 
 *! range.
 *! 
 *! The remainder of both strings defining the endpoints must be valid 
 *! floating point numbers. (FIXME: define format recognised).
 *! 
 *! For example, if str_ is "$" and prefix_ is true, and the range 
 *! processor has been added to the queryparser, the queryparser will 
 *! accept "$10..50" or "$10..50", but not "10..50" or "10..$50" as valid 
 *! ranges. If str_ is 
 *! "kg" and prefix_ is false, the queryparser will accept "10..50kg" or 
 *! "10kg..50kg", but not "10..50" or "10kg..50" as valid ranges. 
 */
#define f_Xapian_NumberValueRangeProcessor_create_2_defined

#ifdef f_Xapian_NumberValueRangeProcessor_create_2_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_NumberValueRangeProcessor_create_2_fun_num = 0;

#endif /* f_Xapian_NumberValueRangeProcessor_create_2_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_NumberValueRangeProcessor_create_2(INT32 args) {
#line 634 "xapian.ccmod"
INT_TYPE valueno;
#line 634 "xapian.ccmod"
struct pike_string * _str;
#line 634 "xapian.ccmod"
INT_TYPE is_prefix;
#line 634 "xapian.ccmod"
if(args != 3) wrong_number_of_args_error("create",args,3);
#line 634 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("create",1,"int");
#line 634 "xapian.ccmod"
valueno=Pike_sp[0-3].u.integer;
#line 634 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-3]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("create",2,"string");
#line 634 "xapian.ccmod"
debug_malloc_pass(_str=Pike_sp[1-3].u.string);
#line 634 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("create",3,"int");
#line 634 "xapian.ccmod"
is_prefix=Pike_sp[2-3].u.integer;
{
NumberValueRangeProcessor * vrp;
string str((const char *)_str->str, (size_t)_str->len);

vrp = new NumberValueRangeProcessor(valueno, str, is_prefix);

THIS_XAPIAN_VALUERANGEPROCESSOR->object_data->processor = (ValueRangeProcessor*) vrp ;
pop_n_elems(args);
}

}

#if defined(f_Xapian_NumberValueRangeProcessor_create_1_defined) || defined(f_Xapian_NumberValueRangeProcessor_create_2_defined)
#define f_Xapian_NumberValueRangeProcessor_create_defined

#ifdef Xapian_NumberValueRangeProcessor_f_Xapian_NumberValueRangeProcessor_create_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t Xapian_NumberValueRangeProcessor_f_Xapian_NumberValueRangeProcessor_create_fun_num = 0;

#endif /* Xapian_NumberValueRangeProcessor_f_Xapian_NumberValueRangeProcessor_create_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_NumberValueRangeProcessor_create(INT32 args) {
  switch(args) {
   case 1:

#ifdef f_Xapian_NumberValueRangeProcessor_create_1_defined
    f_Xapian_NumberValueRangeProcessor_create_1(args);
    return;

#endif /* f_Xapian_NumberValueRangeProcessor_create_1_defined */
    break;
   case 3:

#ifdef f_Xapian_NumberValueRangeProcessor_create_2_defined
    f_Xapian_NumberValueRangeProcessor_create_2(args);
    return;

#endif /* f_Xapian_NumberValueRangeProcessor_create_2_defined */
    break;
   default:
    wrong_number_of_args_error("create",args,1);
  }
}

#endif /* f_Xapian_NumberValueRangeProcessor_create_1_defined, f_Xapian_NumberValueRangeProcessor_create_2_defined */
/*! @endclass
 *!
 */

/*! @class DateValueRangeProcessor
 *! @inherit ValueRangeProcessor
 *!
 */


#undef class_Xapian_DateValueRangeProcessor_defined
#define class_Xapian_DateValueRangeProcessor_defined
DEFAULT_CMOD_STORAGE struct program *Xapian_DateValueRangeProcessor_program=NULL;

#ifdef Xapian_DateValueRangeProcessor_program_fun_num_used
DEFAULT_CMOD_STORAGE int Xapian_DateValueRangeProcessor_program_fun_num=-1;
#endif /* Xapian_DateValueRangeProcessor_program_fun_num_used */

#undef inherit_Xapian_ValueRangeProcessor_Xapian_DateValueRangeProcessor_defined
#define inherit_Xapian_ValueRangeProcessor_Xapian_DateValueRangeProcessor_defined
#line 658 "xapian.ccmod"
static int Xapian_DateValueRangeProcessor_Xapian_ValueRangeProcessor_inh_num = -1;
#line 658 "xapian.ccmod"
static int Xapian_DateValueRangeProcessor_Xapian_ValueRangeProcessor_inh_offset = -1;
/*! @decl void create(int valueno, int prefer_mdy, int epoch_year)
 *! @param valueno
 *!    The value number to return from `()().
 *! @param prefer_mdy
 *!    Should ambiguous dates be interpreted as month/day/year rather than 
 *!    day/month/year?
 *! @param epoch_year
 *!    Year to use as the epoch for dates with 2 digit years (default: 
 *!    1970, so 1/1/69 is 2069 while 1/1/70 is 1970).
 */
#define f_Xapian_DateValueRangeProcessor_create_defined

#ifdef f_Xapian_DateValueRangeProcessor_create_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_DateValueRangeProcessor_create_fun_num = 0;

#endif /* f_Xapian_DateValueRangeProcessor_create_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_DateValueRangeProcessor_create(INT32 args) {
#line 670 "xapian.ccmod"
INT_TYPE valueno;
#line 670 "xapian.ccmod"
INT_TYPE prefer_mdy;
#line 670 "xapian.ccmod"
INT_TYPE epoch_year;
#line 670 "xapian.ccmod"
if(args != 3) wrong_number_of_args_error("create",args,3);
#line 670 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("create",1,"int");
#line 670 "xapian.ccmod"
valueno=Pike_sp[0-3].u.integer;
#line 670 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("create",2,"int");
#line 670 "xapian.ccmod"
prefer_mdy=Pike_sp[1-3].u.integer;
#line 670 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("create",3,"int");
#line 670 "xapian.ccmod"
epoch_year=Pike_sp[2-3].u.integer;
{
DateValueRangeProcessor * vrp = new DateValueRangeProcessor(valueno, prefer_mdy, epoch_year);

THIS_XAPIAN_VALUERANGEPROCESSOR->object_data->processor = (ValueRangeProcessor*) vrp ;
pop_n_elems(args);
}

}
/*!  @endclass
*/

/*! @class Stopper
 *! Base class for stop-word decision functor. 
*/


#undef class_Xapian_Stopper_defined
#define class_Xapian_Stopper_defined
DEFAULT_CMOD_STORAGE struct program *Xapian_Stopper_program=NULL;

#ifdef Xapian_Stopper_program_fun_num_used
DEFAULT_CMOD_STORAGE int Xapian_Stopper_program_fun_num=-1;
#endif /* Xapian_Stopper_program_fun_num_used */

#undef var_object_data_Xapian_Stopper_defined
#define var_object_data_Xapian_Stopper_defined

#undef THIS
#define THIS ((struct Xapian_Stopper_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef THIS_XAPIAN_STOPPER
#define THIS_XAPIAN_STOPPER ((struct Xapian_Stopper_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef OBJ2_XAPIAN_STOPPER
#define OBJ2_XAPIAN_STOPPER(o) ((struct Xapian_Stopper_struct *)(o->storage+Xapian_Stopper_storage_offset))

#undef GET_XAPIAN_STOPPER_STORAGE
#define GET_XAPIAN_STOPPER_STORAGE(o) ((struct Xapian_Stopper_struct *)(o->storage+Xapian_Stopper_storage_offset)
static ptrdiff_t Xapian_Stopper_storage_offset;
struct Xapian_Stopper_struct {

#ifdef var_object_data_Xapian_Stopper_defined
#line 688 "xapian.ccmod"
XAPIAN_STOPPER_OBJECT_DATA *object_data;
#endif /* var_object_data_Xapian_Stopper_defined */
};
#ifdef PIKE_DEBUG
/* Ensure the struct is used in a variable declaration, or else gdb might not see it. */
static struct Xapian_Stopper_struct *Xapian_Stopper_gdb_dummy_ptr;
#endif
/*! @decl int `()(string word)
 *!
 *!  	Is term a stop-word?   
 *! @returns
 *!  1 if true, 0 otherwise.
 *!
 */
#define f_Xapian_Stopper_cq__backtick_28_29_defined

#ifdef f_Xapian_Stopper_cq__backtick_28_29_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Stopper_cq__backtick_28_29_fun_num = 0;

#endif /* f_Xapian_Stopper_cq__backtick_28_29_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Stopper_cq__backtick_28_29(INT32 args) {
#line 697 "xapian.ccmod"
struct pike_string * word;
#line 697 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("`()",args,1);
#line 697 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("`()",1,"string");
#line 697 "xapian.ccmod"
debug_malloc_pass(word=Pike_sp[0-1].u.string);
{
Stopper *stopper;
bool i;
stopper = THIS->object_data->stopper;
string str((const char *)word->str, (size_t)word->len);

i = (*stopper)(str); 

push_int(i?1:0);
}

}
#line 709 "xapian.ccmod"
/*  Stopper.string get_description() */
/*! @decl string get_description()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_Stopper_get_description_defined

#ifdef f_Xapian_Stopper_get_description_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Stopper_get_description_fun_num = 0;

#endif /* f_Xapian_Stopper_get_description_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Stopper_get_description(INT32 args) {
#line 717 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_description",args,0);
{
Stopper *stopper;
stopper = THIS->object_data->stopper;

string str = stopper->get_description();

push_text(str.c_str());
}

}
#define f_Xapian_Stopper_cq__sprintf_defined

#ifdef f_Xapian_Stopper_cq__sprintf_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Stopper_cq__sprintf_fun_num = 0;

#endif /* f_Xapian_Stopper_cq__sprintf_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Stopper_cq__sprintf(INT32 args) {
#line 727 "xapian.ccmod"
INT_TYPE conversion_type;
#line 727 "xapian.ccmod"
struct mapping * params;
#line 727 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 727 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 727 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 727 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 727 "xapian.ccmod"
debug_malloc_pass(params=Pike_sp[1-2].u.mapping);
{
Stopper *stopper;
if(THIS && THIS->object_data && conversion_type == 'O')
{
stopper = THIS->object_data->stopper;

string str = stopper->get_description();
pop_n_elems(args);
push_text(str.c_str());
}
else
{
pop_n_elems(args);
push_int(0);
}
}


}

#undef internal_init_Xapian_Stopper_defined
#define internal_init_Xapian_Stopper_defined

#undef Xapian_Stopper_event_handler_defined
#define Xapian_Stopper_event_handler_defined
static void init_Xapian_Stopper_struct(void)
#line 747 "xapian.ccmod"
{
XAPIAN_STOPPER_OBJECT_DATA * dta = 
(XAPIAN_STOPPER_OBJECT_DATA*)malloc(sizeof(XAPIAN_STOPPER_OBJECT_DATA));
if (!dta)
Pike_error("init_sample: Out of memory!\n");

dta->stopper = NULL;
THIS->object_data = dta;
}

/*  Stopper.void destroy() */
/*! @decl void destroy()
 *!
 *!  
 *!
 */
#define f_Xapian_Stopper_destroy_defined

#ifdef f_Xapian_Stopper_destroy_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Stopper_destroy_fun_num = 0;

#endif /* f_Xapian_Stopper_destroy_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Stopper_destroy(INT32 args) {
#line 763 "xapian.ccmod"
struct svalue * reason;
#line 763 "xapian.ccmod"
if(args > 1) wrong_number_of_args_error("destroy",args,1);
#line 763 "xapian.ccmod"
if ((args > 0) &&
    ((TYPEOF(Pike_sp[0-args]) != PIKE_T_INT) ||
     (SUBTYPEOF(Pike_sp[0-args]) != NUMBER_UNDEFINED))) {
#line 763 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-args]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("destroy",1,"int|void");
#line 763 "xapian.ccmod"
reason=Pike_sp+0-args; dmalloc_touch_svalue(Pike_sp+0-args);
#line 763 "xapian.ccmod"
} else reason = NULL;
{

Stopper *stopper;
stopper = THIS->object_data->stopper;

if(stopper) 
{
delete stopper;
}

pop_n_elems(args);
}

}

#undef Xapian_Stopper_gc_live_obj
#define Xapian_Stopper_gc_live_obj

#undef internal_exit_Xapian_Stopper_defined
#define internal_exit_Xapian_Stopper_defined

#undef Xapian_Stopper_event_handler_defined
#define Xapian_Stopper_event_handler_defined
static void exit_Xapian_Stopper_struct(void)
#line 778 "xapian.ccmod"
{
if(THIS->object_data)
{

Stopper *stopper;
stopper = THIS->object_data->stopper;
/*   printf("shutting down!\n"); */
free(THIS->object_data);
}
}


#ifdef Xapian_Stopper_event_handler_defined
static void Xapian_Stopper_event_handler(int ev) {
  switch(ev) {

#ifdef internal_init_Xapian_Stopper_defined
  case PROG_EVENT_INIT: init_Xapian_Stopper_struct(); break;

#endif /* internal_init_Xapian_Stopper_defined */

#ifdef internal_exit_Xapian_Stopper_defined
  case PROG_EVENT_EXIT: exit_Xapian_Stopper_struct(); break;

#endif /* internal_exit_Xapian_Stopper_defined */
  default: break; 
  }
}

#endif /* Xapian_Stopper_event_handler_defined */
/*!  @endclass
*/

/*! @class SimpleStopper
 *! @inherit Stopper
 *! Simple implementation of Stopper class - this will suit most users.
 */


#undef class_Xapian_SimpleStopper_defined
#define class_Xapian_SimpleStopper_defined
DEFAULT_CMOD_STORAGE struct program *Xapian_SimpleStopper_program=NULL;

#ifdef Xapian_SimpleStopper_program_fun_num_used
DEFAULT_CMOD_STORAGE int Xapian_SimpleStopper_program_fun_num=-1;
#endif /* Xapian_SimpleStopper_program_fun_num_used */

#undef inherit_Xapian_Stopper_Xapian_SimpleStopper_defined
#define inherit_Xapian_Stopper_Xapian_SimpleStopper_defined
#line 801 "xapian.ccmod"
static int Xapian_SimpleStopper_Xapian_Stopper_inh_num = -1;
#line 801 "xapian.ccmod"
static int Xapian_SimpleStopper_Xapian_Stopper_inh_offset = -1;
#define f_Xapian_SimpleStopper_create_1_defined

#ifdef f_Xapian_SimpleStopper_create_1_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_SimpleStopper_create_1_fun_num = 0;

#endif /* f_Xapian_SimpleStopper_create_1_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_SimpleStopper_create_1(INT32 args) {
#line 803 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("create",args,0);
{
SimpleStopper * stopper = new SimpleStopper();

THIS->object_data->stopper = (Stopper*) stopper;
pop_n_elems(args);
}

}
#define f_Xapian_SimpleStopper_create_2_defined

#ifdef f_Xapian_SimpleStopper_create_2_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_SimpleStopper_create_2_fun_num = 0;

#endif /* f_Xapian_SimpleStopper_create_2_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_SimpleStopper_create_2(INT32 args) {
#line 811 "xapian.ccmod"
struct array * words;
#line 811 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("create",args,1);
#line 811 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_ARRAY) SIMPLE_ARG_TYPE_ERROR("create",1,"array");
#line 811 "xapian.ccmod"
debug_malloc_pass(words=Pike_sp[0-1].u.array);
{
int i;
vector v;

for(i = 0; i < words->size; i++)
{ 
string str((const char *)(ITEM(words)[i].u.string->str), 
(size_t)(ITEM(words)[i].u.string->len));
v.push_back(str);
}

SimpleStopper * stopper = new SimpleStopper(v.begin(), v.end());

THIS_XAPIAN_STOPPER->object_data->stopper = (Stopper*) stopper;
pop_n_elems(args);
}

}

#if defined(f_Xapian_SimpleStopper_create_1_defined) || defined(f_Xapian_SimpleStopper_create_2_defined)
#define f_Xapian_SimpleStopper_create_defined

#ifdef Xapian_SimpleStopper_f_Xapian_SimpleStopper_create_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t Xapian_SimpleStopper_f_Xapian_SimpleStopper_create_fun_num = 0;

#endif /* Xapian_SimpleStopper_f_Xapian_SimpleStopper_create_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_SimpleStopper_create(INT32 args) {
  switch(args) {
   case 0:

#ifdef f_Xapian_SimpleStopper_create_1_defined
    f_Xapian_SimpleStopper_create_1(args);
    return;

#endif /* f_Xapian_SimpleStopper_create_1_defined */
    break;
   case 1:

#ifdef f_Xapian_SimpleStopper_create_2_defined
    f_Xapian_SimpleStopper_create_2(args);
    return;

#endif /* f_Xapian_SimpleStopper_create_2_defined */
    break;
   default:
    wrong_number_of_args_error("create",args,0);
  }
}

#endif /* f_Xapian_SimpleStopper_create_1_defined, f_Xapian_SimpleStopper_create_2_defined */
/*! @decl void add(string word)
 *! Add a single stop word.
 */
#define f_Xapian_SimpleStopper_add_defined

#ifdef f_Xapian_SimpleStopper_add_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_SimpleStopper_add_fun_num = 0;

#endif /* f_Xapian_SimpleStopper_add_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_SimpleStopper_add(INT32 args) {
#line 832 "xapian.ccmod"
struct pike_string * word;
#line 832 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("add",args,1);
#line 832 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("add",1,"string");
#line 832 "xapian.ccmod"
debug_malloc_pass(word=Pike_sp[0-1].u.string);
{
SimpleStopper * stopper;
string str((const char*)word->str, (size_t)word->len);
stopper = (SimpleStopper *)THIS_XAPIAN_STOPPER->object_data->stopper;
stopper->add(str);
pop_stack();

}


}
/*!  @endclass
*/

/*! @class Stem
 *! Class representing a stemming algorithm.
*/


#undef class_Xapian_Stem_defined
#define class_Xapian_Stem_defined
DEFAULT_CMOD_STORAGE struct program *Xapian_Stem_program=NULL;

#ifdef Xapian_Stem_program_fun_num_used
DEFAULT_CMOD_STORAGE int Xapian_Stem_program_fun_num=-1;
#endif /* Xapian_Stem_program_fun_num_used */

#undef var_object_data_Xapian_Stem_defined
#define var_object_data_Xapian_Stem_defined

#undef THIS
#define THIS ((struct Xapian_Stem_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef THIS_XAPIAN_STEM
#define THIS_XAPIAN_STEM ((struct Xapian_Stem_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef OBJ2_XAPIAN_STEM
#define OBJ2_XAPIAN_STEM(o) ((struct Xapian_Stem_struct *)(o->storage+Xapian_Stem_storage_offset))

#undef GET_XAPIAN_STEM_STORAGE
#define GET_XAPIAN_STEM_STORAGE(o) ((struct Xapian_Stem_struct *)(o->storage+Xapian_Stem_storage_offset)
static ptrdiff_t Xapian_Stem_storage_offset;
struct Xapian_Stem_struct {

#ifdef var_object_data_Xapian_Stem_defined
#line 854 "xapian.ccmod"
XAPIAN_STEM_OBJECT_DATA *object_data;
#endif /* var_object_data_Xapian_Stem_defined */
};
#ifdef PIKE_DEBUG
/* Ensure the struct is used in a variable declaration, or else gdb might not see it. */
static struct Xapian_Stem_struct *Xapian_Stem_gdb_dummy_ptr;
#endif
#line 857 "xapian.ccmod"
/*  Stem.void create(string language) */
/*! @decl void create(string language)
 *!
 *!  Construct a @[Stem] object for a particular language.
 *! @param language
 *!      	Either the English name for the language or the two letter ISO639 code.
*!
*! The following language names are understood (aliases follow the name):
*!
*!    * none - don't stem terms
*!    * danish (da)
*!    * dutch (nl)
*!    * english (en) - Martin Porter's 2002 revision of his stemmer
*!    * english_lovins (lovins) - Lovin's stemmer
*!    * english_porter (porter) - Porter's stemmer as described in his 1980 paper
*!    * finnish (fi)
*!    * french (fr)
*!    * german (de)
*!    * italian (it)
*!    * norwegian (no)
*!    * portuguese (pt)
*!    * russian (ru)
*!    * spanish (es)
*!    * swedish (sv)
*!
* ! @note
 *!  an error will be thrown if the specified language is unknown.
 */
#define f_Xapian_Stem_create_1_defined

#ifdef f_Xapian_Stem_create_1_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Stem_create_1_fun_num = 0;

#endif /* f_Xapian_Stem_create_1_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Stem_create_1(INT32 args) {
#line 885 "xapian.ccmod"
struct pike_string * language;
#line 885 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("create",args,1);
#line 885 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("create",1,"string");
#line 885 "xapian.ccmod"
debug_malloc_pass(language=Pike_sp[0-1].u.string);
{
Stem* stem;
const string str((const char *)language->str, (size_t)language->len);

try
{
stem = new Stem(str);
}

catch(const InvalidArgumentError &e)
{
pop_n_elems(args);
Pike_error("InvalidArgumentError\n");
}

pop_n_elems(args);

THIS->object_data->stem = stem;
}

}
#line 906 "xapian.ccmod"
/*  Stem.void create() */
/*! @decl void create()
 *!
 *!  
 *!
 */
#define f_Xapian_Stem_create_2_defined

#ifdef f_Xapian_Stem_create_2_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Stem_create_2_fun_num = 0;

#endif /* f_Xapian_Stem_create_2_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Stem_create_2(INT32 args) {
#line 912 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("create",args,0);
{
Stem* stem = new Stem();

pop_n_elems(args);

THIS->object_data->stem = stem;
}

}

#if defined(f_Xapian_Stem_create_1_defined) || defined(f_Xapian_Stem_create_2_defined)
#define f_Xapian_Stem_create_defined

#ifdef Xapian_Stem_f_Xapian_Stem_create_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t Xapian_Stem_f_Xapian_Stem_create_fun_num = 0;

#endif /* Xapian_Stem_f_Xapian_Stem_create_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Stem_create(INT32 args) {
  switch(args) {
   case 0:

#ifdef f_Xapian_Stem_create_2_defined
    f_Xapian_Stem_create_2(args);
    return;

#endif /* f_Xapian_Stem_create_2_defined */
    break;
   case 1:

#ifdef f_Xapian_Stem_create_1_defined
    f_Xapian_Stem_create_1(args);
    return;

#endif /* f_Xapian_Stem_create_1_defined */
    break;
   default:
    wrong_number_of_args_error("create",args,0);
  }
}

#endif /* f_Xapian_Stem_create_1_defined, f_Xapian_Stem_create_2_defined */
#line 921 "xapian.ccmod"
/*  Stem.string stem_word(string word) */
/*! @decl string `()(string word)
 *!   stem a word
 *!  
 *! @param word
 *!   word to be stemmed
* !
 *! @returns
 *!   the word stem  
 *!
 *! @note
 *!   this function is wide-string aware.
 *!
 */
#define f_Xapian_Stem_cq__backtick_28_29_defined

#ifdef f_Xapian_Stem_cq__backtick_28_29_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Stem_cq__backtick_28_29_fun_num = 0;

#endif /* f_Xapian_Stem_cq__backtick_28_29_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Stem_cq__backtick_28_29(INT32 args) {
#line 935 "xapian.ccmod"
struct pike_string * word;
#line 935 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("`()",args,1);
#line 935 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("`()",1,"string");
#line 935 "xapian.ccmod"
debug_malloc_pass(word=Pike_sp[0-1].u.string);
{
Stem *stem;
string foo;

ref_push_string(word);
f_string_to_utf8(1);

const string str((const char *)Pike_sp[-1].u.string->str, (size_t) Pike_sp[-1].u.string->len);

stem = THIS->object_data->stem;

foo = (*stem)(str);
pop_n_elems(args+1);
push_text(foo.c_str());
}

}
#line 952 "xapian.ccmod"
/*  Stem.string get_description() */
/*! @decl string get_description()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_Stem_get_description_defined

#ifdef f_Xapian_Stem_get_description_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Stem_get_description_fun_num = 0;

#endif /* f_Xapian_Stem_get_description_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Stem_get_description(INT32 args) {
#line 960 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_description",args,0);
{
Stem *stem;
stem = THIS->object_data->stem;

string str = stem->get_description();

push_text(str.c_str());
}

}
#define f_Xapian_Stem_cq__sprintf_defined

#ifdef f_Xapian_Stem_cq__sprintf_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Stem_cq__sprintf_fun_num = 0;

#endif /* f_Xapian_Stem_cq__sprintf_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Stem_cq__sprintf(INT32 args) {
#line 970 "xapian.ccmod"
INT_TYPE conversion_type;
#line 970 "xapian.ccmod"
struct mapping * params;
#line 970 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 970 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 970 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 970 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 970 "xapian.ccmod"
debug_malloc_pass(params=Pike_sp[1-2].u.mapping);
{
Stem *stem;
if(THIS && THIS->object_data && conversion_type == 'O')
{
stem = THIS->object_data->stem;

string str = stem->get_description();
pop_n_elems(args);
push_text(str.c_str());
}
else
{
pop_n_elems(args);
push_int(0);
}
}


}

#undef internal_init_Xapian_Stem_defined
#define internal_init_Xapian_Stem_defined

#undef Xapian_Stem_event_handler_defined
#define Xapian_Stem_event_handler_defined
static void init_Xapian_Stem_struct(void)
#line 990 "xapian.ccmod"
{
XAPIAN_STEM_OBJECT_DATA * dta = 
(XAPIAN_STEM_OBJECT_DATA*)malloc(sizeof(XAPIAN_STEM_OBJECT_DATA));
if (!dta)
Pike_error("init_sample: Out of memory!\n");

dta->stem = NULL;
THIS->object_data = dta;
}

/*  Stem.void destroy() */
/*! @decl void destroy()
 *!
 *!  
 *!
 */
#define f_Xapian_Stem_destroy_defined

#ifdef f_Xapian_Stem_destroy_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Stem_destroy_fun_num = 0;

#endif /* f_Xapian_Stem_destroy_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Stem_destroy(INT32 args) {
#line 1006 "xapian.ccmod"
struct svalue * reason;
#line 1006 "xapian.ccmod"
if(args > 1) wrong_number_of_args_error("destroy",args,1);
#line 1006 "xapian.ccmod"
if ((args > 0) &&
    ((TYPEOF(Pike_sp[0-args]) != PIKE_T_INT) ||
     (SUBTYPEOF(Pike_sp[0-args]) != NUMBER_UNDEFINED))) {
#line 1006 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-args]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("destroy",1,"int|void");
#line 1006 "xapian.ccmod"
reason=Pike_sp+0-args; dmalloc_touch_svalue(Pike_sp+0-args);
#line 1006 "xapian.ccmod"
} else reason = NULL;
{

Stem *stem;
stem = THIS->object_data->stem;

if(stem) 
{
delete stem;
}

pop_n_elems(args);
}

}

#undef Xapian_Stem_gc_live_obj
#define Xapian_Stem_gc_live_obj

#undef internal_exit_Xapian_Stem_defined
#define internal_exit_Xapian_Stem_defined

#undef Xapian_Stem_event_handler_defined
#define Xapian_Stem_event_handler_defined
static void exit_Xapian_Stem_struct(void)
#line 1021 "xapian.ccmod"
{
if(THIS->object_data)
{

Stem *stem;
stem = THIS->object_data->stem;
/*   printf("shutting down!\n"); */
free(THIS->object_data);
}
}


#ifdef Xapian_Stem_event_handler_defined
static void Xapian_Stem_event_handler(int ev) {
  switch(ev) {

#ifdef internal_init_Xapian_Stem_defined
  case PROG_EVENT_INIT: init_Xapian_Stem_struct(); break;

#endif /* internal_init_Xapian_Stem_defined */

#ifdef internal_exit_Xapian_Stem_defined
  case PROG_EVENT_EXIT: exit_Xapian_Stem_struct(); break;

#endif /* internal_exit_Xapian_Stem_defined */
  default: break; 
  }
}

#endif /* Xapian_Stem_event_handler_defined */
/*!  @endclass
*/

/*! @class Query
*! Class representing a query.
*!
*! Queries are represented as a tree of objects. 
*/


#undef class_Xapian_Query_defined
#define class_Xapian_Query_defined
DEFAULT_CMOD_STORAGE struct program *Xapian_Query_program=NULL;

#ifdef Xapian_Query_program_fun_num_used
DEFAULT_CMOD_STORAGE int Xapian_Query_program_fun_num=-1;
#endif /* Xapian_Query_program_fun_num_used */

#undef var_object_data_Xapian_Query_defined
#define var_object_data_Xapian_Query_defined

#undef THIS
#define THIS ((struct Xapian_Query_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef THIS_XAPIAN_QUERY
#define THIS_XAPIAN_QUERY ((struct Xapian_Query_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef OBJ2_XAPIAN_QUERY
#define OBJ2_XAPIAN_QUERY(o) ((struct Xapian_Query_struct *)(o->storage+Xapian_Query_storage_offset))

#undef GET_XAPIAN_QUERY_STORAGE
#define GET_XAPIAN_QUERY_STORAGE(o) ((struct Xapian_Query_struct *)(o->storage+Xapian_Query_storage_offset)
static ptrdiff_t Xapian_Query_storage_offset;
struct Xapian_Query_struct {

#ifdef var_object_data_Xapian_Query_defined
#line 1046 "xapian.ccmod"
XAPIAN_QUERY_OBJECT_DATA *object_data;
#endif /* var_object_data_Xapian_Query_defined */
};
#ifdef PIKE_DEBUG
/* Ensure the struct is used in a variable declaration, or else gdb might not see it. */
static struct Xapian_Query_struct *Xapian_Query_gdb_dummy_ptr;
#endif
#line 1049 "xapian.ccmod"
/*  Query.void create() */
/*! @decl void create()
 *!
 *! Default constructor: makes an empty query which matches no documents.
 *! 
 *! Also useful for defining a Query object to be assigned to later.
 *!
 *! @note
 *! An exception will be thrown if an attempt is made to use an undefined 
 *! query when building up a composite query.
 *!
 */
#define f_Xapian_Query_create_1_defined

#ifdef f_Xapian_Query_create_1_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Query_create_1_fun_num = 0;

#endif /* f_Xapian_Query_create_1_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Query_create_1(INT32 args) {
#line 1061 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("create",args,0);
{
try
{
Query* query = new Query();

pop_n_elems(args);

THIS->object_data->query = query;
}

catch(...) 
{
Pike_error("an error occurred!\n");
}
}

}
#line 1078 "xapian.ccmod"
/*  Query.void create(string term, int wqf, int pos) */
/*! @decl void create(string term, int wqf, int pos)
 *!
 *!    A query consisting of a single term.
 *! @param term
 *!  
* !
 *! @param wqf
 *!  
* !
 *! @param pos
 *!  
* !
 *!
 */
#define f_Xapian_Query_create_2_defined

#ifdef f_Xapian_Query_create_2_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Query_create_2_fun_num = 0;

#endif /* f_Xapian_Query_create_2_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Query_create_2(INT32 args) {
#line 1093 "xapian.ccmod"
struct pike_string * term;
#line 1093 "xapian.ccmod"
INT_TYPE wqf;
#line 1093 "xapian.ccmod"
INT_TYPE pos;
#line 1093 "xapian.ccmod"
if(args != 3) wrong_number_of_args_error("create",args,3);
#line 1093 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-3]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("create",1,"string");
#line 1093 "xapian.ccmod"
debug_malloc_pass(term=Pike_sp[0-3].u.string);
#line 1093 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("create",2,"int");
#line 1093 "xapian.ccmod"
wqf=Pike_sp[1-3].u.integer;
#line 1093 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("create",3,"int");
#line 1093 "xapian.ccmod"
pos=Pike_sp[2-3].u.integer;
{
try
{
string str((const char *)term->str, (size_t)term->len);
Query* query = new Query(str, (termcount)wqf, (termpos)pos);

pop_n_elems(args);

THIS->object_data->query = query;
}

catch(...) 
{
Pike_error("an error occurred!\n");
}
}

}
#line 1111 "xapian.ccmod"
/*  Query.void create(int op, string left, string right) */
/*! @decl void create(int op, string left, string right)
 *!
 *!  A query consisting of two terms, opp-ed together.
 *! @param op
 *!  
* !
 *! @param left
 *!  
* !
 *! @param right
 *!  
* !
 *!
 */
#define f_Xapian_Query_create_3_defined

#ifdef f_Xapian_Query_create_3_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Query_create_3_fun_num = 0;

#endif /* f_Xapian_Query_create_3_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Query_create_3(INT32 args) {
#line 1126 "xapian.ccmod"
INT_TYPE op;
#line 1126 "xapian.ccmod"
struct pike_string * left;
#line 1126 "xapian.ccmod"
struct pike_string * right;
#line 1126 "xapian.ccmod"
if(args != 3) wrong_number_of_args_error("create",args,3);
#line 1126 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("create",1,"int");
#line 1126 "xapian.ccmod"
op=Pike_sp[0-3].u.integer;
#line 1126 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-3]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("create",2,"string");
#line 1126 "xapian.ccmod"
debug_malloc_pass(left=Pike_sp[1-3].u.string);
#line 1126 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-3]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("create",3,"string");
#line 1126 "xapian.ccmod"
debug_malloc_pass(right=Pike_sp[2-3].u.string);
{
try
{
string lstr((const char *)left->str, (size_t)left->len);
string rstr((const char *)right->str, (size_t)right->len);
Query* query = new Query((Xapian::Query::op)op, lstr, rstr);

pop_n_elems(args);

THIS->object_data->query = query;
}

catch(...) 
{
Pike_error("an error occurred!\n");
}
}


}
#line 1146 "xapian.ccmod"
/*  Query.void create(int op, object left, object right) */
/*! @decl void create(int op, object left, object right)
 *!
 *!  A query consisting of two subqueries, opp-ed together.
 *! @param op
 *!  
* !
 *! @param left
 *!  
* !
 *! @param right
 *!  
* !
 *!
 */
#define f_Xapian_Query_create_4_defined

#ifdef f_Xapian_Query_create_4_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Query_create_4_fun_num = 0;

#endif /* f_Xapian_Query_create_4_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Query_create_4(INT32 args) {
#line 1161 "xapian.ccmod"
INT_TYPE op;
#line 1161 "xapian.ccmod"
struct object * left;
#line 1161 "xapian.ccmod"
struct object * right;
#line 1161 "xapian.ccmod"
if(args != 3) wrong_number_of_args_error("create",args,3);
#line 1161 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("create",1,"int");
#line 1161 "xapian.ccmod"
op=Pike_sp[0-3].u.integer;
#line 1161 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-3]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("create",2,"object");
#line 1161 "xapian.ccmod"
debug_malloc_pass(left=Pike_sp[1-3].u.object);
#line 1161 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-3]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("create",3,"object");
#line 1161 "xapian.ccmod"
debug_malloc_pass(right=Pike_sp[2-3].u.object);
{
Query * l;
Query * r;

l = OBJ2_XAPIAN_QUERY(left)->object_data->query;
r = OBJ2_XAPIAN_QUERY(right)->object_data->query;

try
{
Query* query = new Query((Xapian::Query::op)op, l, r);

pop_n_elems(args);

THIS->object_data->query = query;
}

catch(...) 
{
Pike_error("an error occurred!\n");
}
}

}
#line 1184 "xapian.ccmod"
/*  Query.void create(int op, Query query) */
/*! @decl void create(int op, Query query)
 *! Apply the specified operator to a single @[Query] object, with a 
 *! double parameter.
 *!  
 *! @param op
 *!  
* !
 *! @param query
 *!  
* !
 *!
 */
#define f_Xapian_Query_create_5_defined

#ifdef f_Xapian_Query_create_5_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Query_create_5_fun_num = 0;

#endif /* f_Xapian_Query_create_5_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Query_create_5(INT32 args) {
#line 1197 "xapian.ccmod"
INT_TYPE op;
#line 1197 "xapian.ccmod"
struct object * query;
#line 1197 "xapian.ccmod"
FLOAT_TYPE param;
#line 1197 "xapian.ccmod"
if(args != 3) wrong_number_of_args_error("create",args,3);
#line 1197 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("create",1,"int");
#line 1197 "xapian.ccmod"
op=Pike_sp[0-3].u.integer;
#line 1197 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-3]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("create",2,"object");
#line 1197 "xapian.ccmod"
debug_malloc_pass(query=Pike_sp[1-3].u.object);
#line 1197 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-3]) != PIKE_T_FLOAT) SIMPLE_ARG_TYPE_ERROR("create",3,"float");
#line 1197 "xapian.ccmod"
param=Pike_sp[2-3].u.float_number;
{
Query * q;

q = OBJ2_XAPIAN_QUERY(query)->object_data->query;

try
{
Query* qe = new Query((Xapian::Query::op)op, *q, param);

pop_n_elems(args);

THIS->object_data->query = qe;
}

catch(...) 
{
Pike_error("an error occurred!\n");
}
}

}

#if defined(f_Xapian_Query_create_1_defined) || defined(f_Xapian_Query_create_2_defined) || defined(f_Xapian_Query_create_3_defined) || defined(f_Xapian_Query_create_4_defined) || defined(f_Xapian_Query_create_5_defined)
#define f_Xapian_Query_create_defined

#ifdef Xapian_Query_f_Xapian_Query_create_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t Xapian_Query_f_Xapian_Query_create_fun_num = 0;

#endif /* Xapian_Query_f_Xapian_Query_create_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Query_create(INT32 args) {
  switch(args) {
   case 0:

#ifdef f_Xapian_Query_create_1_defined
    f_Xapian_Query_create_1(args);
    return;

#endif /* f_Xapian_Query_create_1_defined */
    break;
   case 3:
    switch(TYPEOF(Pike_sp[2-3])) {
     case PIKE_T_OBJECT:

#ifdef f_Xapian_Query_create_4_defined
      f_Xapian_Query_create_4(args);
      return;

#endif /* f_Xapian_Query_create_4_defined */
      break;
     case PIKE_T_INT:

#ifdef f_Xapian_Query_create_2_defined
      f_Xapian_Query_create_2(args);
      return;

#endif /* f_Xapian_Query_create_2_defined */
      break;
     case PIKE_T_STRING:

#ifdef f_Xapian_Query_create_3_defined
      f_Xapian_Query_create_3(args);
      return;

#endif /* f_Xapian_Query_create_3_defined */
      break;
     case PIKE_T_FLOAT:

#ifdef f_Xapian_Query_create_5_defined
      f_Xapian_Query_create_5(args);
      return;

#endif /* f_Xapian_Query_create_5_defined */
      break;
     default:
      SIMPLE_BAD_ARG_ERROR("create",3,"object|int|string|float");
    }
   default:
    wrong_number_of_args_error("create",args,0);
  }
}

#endif /* f_Xapian_Query_create_1_defined, f_Xapian_Query_create_2_defined, f_Xapian_Query_create_3_defined, f_Xapian_Query_create_4_defined, f_Xapian_Query_create_5_defined */
#line 1218 "xapian.ccmod"
/*  Query.int get_length() */
/*! @decl int get_length()
 *!
 *!  Get the length of the query, used by some ranking formulae.
 *!
 *! This value is calculated automatically - if you want to override it 
 *! you can pass a different value to @[Enquire.set_query]().
 *! @returns
 *!  
 *!
 */
#define f_Xapian_Query_get_length_defined

#ifdef f_Xapian_Query_get_length_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Query_get_length_fun_num = 0;

#endif /* f_Xapian_Query_get_length_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Query_get_length(INT32 args) {
#line 1229 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_length",args,0);
{
Query *query;
query = THIS->object_data->query;
termcount i = query->get_length();

push_int(i);
}

}
#line 1238 "xapian.ccmod"
/*  Query.int empty() */
/*! @decl int empty()
 *!  Test if the query is empty (i.e. was constructed using the default 
 *! constructor).
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_Query_empty_defined

#ifdef f_Xapian_Query_empty_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Query_empty_fun_num = 0;

#endif /* f_Xapian_Query_empty_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Query_empty(INT32 args) {
#line 1247 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("empty",args,0);
{
Query *query;
query = THIS->object_data->query;
bool i = query->empty();

push_int(i?1:0);
}


}
#line 1257 "xapian.ccmod"
/*  Query.string get_description() */
/*! @decl string get_description()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_Query_get_description_defined

#ifdef f_Xapian_Query_get_description_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Query_get_description_fun_num = 0;

#endif /* f_Xapian_Query_get_description_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Query_get_description(INT32 args) {
#line 1265 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_description",args,0);
{
Query *query;
query = THIS->object_data->query;

string str = query->get_description();

push_text(str.c_str());
}

}
#define f_Xapian_Query_cq__sprintf_defined

#ifdef f_Xapian_Query_cq__sprintf_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Query_cq__sprintf_fun_num = 0;

#endif /* f_Xapian_Query_cq__sprintf_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Query_cq__sprintf(INT32 args) {
#line 1275 "xapian.ccmod"
INT_TYPE conversion_type;
#line 1275 "xapian.ccmod"
struct mapping * params;
#line 1275 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 1275 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 1275 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 1275 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 1275 "xapian.ccmod"
debug_malloc_pass(params=Pike_sp[1-2].u.mapping);
{
Query *query;
if(THIS && THIS->object_data && conversion_type == 'O')
{
query = THIS->object_data->query;

string str = query->get_description();
pop_n_elems(args);
push_text(str.c_str());
}
else
{
pop_n_elems(args);
push_int(0);
}
}

}

#undef internal_init_Xapian_Query_defined
#define internal_init_Xapian_Query_defined

#undef Xapian_Query_event_handler_defined
#define Xapian_Query_event_handler_defined
static void init_Xapian_Query_struct(void)
#line 1294 "xapian.ccmod"
{
XAPIAN_QUERY_OBJECT_DATA * dta = 
(XAPIAN_QUERY_OBJECT_DATA*)malloc(sizeof(XAPIAN_QUERY_OBJECT_DATA));
if (!dta)
Pike_error("init_sample: Out of memory!\n");

dta->query = NULL;
THIS->object_data = dta;
}


#undef Xapian_Query_gc_live_obj
#define Xapian_Query_gc_live_obj

#undef internal_exit_Xapian_Query_defined
#define internal_exit_Xapian_Query_defined

#undef Xapian_Query_event_handler_defined
#define Xapian_Query_event_handler_defined
static void exit_Xapian_Query_struct(void)
#line 1305 "xapian.ccmod"
{
if(THIS->object_data)
{
Query *query;
query = THIS->object_data->query;
if(query) delete query;
free(THIS->object_data);
}
}


#undef extra_Xapian_Query_defined
#define extra_Xapian_Query_defined

#ifdef Xapian_Query_event_handler_defined
static void Xapian_Query_event_handler(int ev) {
  switch(ev) {

#ifdef internal_init_Xapian_Query_defined
  case PROG_EVENT_INIT: init_Xapian_Query_struct(); break;

#endif /* internal_init_Xapian_Query_defined */

#ifdef internal_exit_Xapian_Query_defined
  case PROG_EVENT_EXIT: exit_Xapian_Query_struct(); break;

#endif /* internal_exit_Xapian_Query_defined */
  default: break; 
  }
}

#endif /* Xapian_Query_event_handler_defined */
/*!  @endclass
*/

/*! @class PositionIterator
*/


#undef class_Xapian_PositionIterator_defined
#define class_Xapian_PositionIterator_defined
DEFAULT_CMOD_STORAGE struct program *Xapian_PositionIterator_program=NULL;

#ifdef Xapian_PositionIterator_program_fun_num_used
DEFAULT_CMOD_STORAGE int Xapian_PositionIterator_program_fun_num=-1;
#endif /* Xapian_PositionIterator_program_fun_num_used */

#undef var_pie_Xapian_PositionIterator_defined
#define var_pie_Xapian_PositionIterator_defined

#undef var_current_index_Xapian_PositionIterator_defined
#define var_current_index_Xapian_PositionIterator_defined

#undef var_object_data_Xapian_PositionIterator_defined
#define var_object_data_Xapian_PositionIterator_defined

#undef THIS
#define THIS ((struct Xapian_PositionIterator_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef THIS_XAPIAN_POSITIONITERATOR
#define THIS_XAPIAN_POSITIONITERATOR ((struct Xapian_PositionIterator_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef OBJ2_XAPIAN_POSITIONITERATOR
#define OBJ2_XAPIAN_POSITIONITERATOR(o) ((struct Xapian_PositionIterator_struct *)(o->storage+Xapian_PositionIterator_storage_offset))

#undef GET_XAPIAN_POSITIONITERATOR_STORAGE
#define GET_XAPIAN_POSITIONITERATOR_STORAGE(o) ((struct Xapian_PositionIterator_struct *)(o->storage+Xapian_PositionIterator_storage_offset)
static ptrdiff_t Xapian_PositionIterator_storage_offset;
struct Xapian_PositionIterator_struct {

#ifdef var_pie_Xapian_PositionIterator_defined
#line 1394 "xapian.ccmod"
PositionIterator * pie;
#endif /* var_pie_Xapian_PositionIterator_defined */

#ifdef var_current_index_Xapian_PositionIterator_defined
#line 1395 "xapian.ccmod"
int current_index;
#endif /* var_current_index_Xapian_PositionIterator_defined */

#ifdef var_object_data_Xapian_PositionIterator_defined
#line 1396 "xapian.ccmod"
XAPIAN_POSITIONITERATOR_OBJECT_DATA *object_data;
#endif /* var_object_data_Xapian_PositionIterator_defined */
};
#ifdef PIKE_DEBUG
/* Ensure the struct is used in a variable declaration, or else gdb might not see it. */
static struct Xapian_PositionIterator_struct *Xapian_PositionIterator_gdb_dummy_ptr;
#endif
#define f_Xapian_PositionIterator_next_defined

#ifdef f_Xapian_PositionIterator_next_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_PositionIterator_next_fun_num = 0;

#endif /* f_Xapian_PositionIterator_next_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_PositionIterator_next(INT32 args) {
#line 1398 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("next",args,0);
{
++(*(THIS->object_data->positioni));

THIS->current_index++;
push_object(this_object()); 
}

}
#define f_Xapian_PositionIterator_index_defined

#ifdef f_Xapian_PositionIterator_index_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_PositionIterator_index_fun_num = 0;

#endif /* f_Xapian_PositionIterator_index_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_PositionIterator_index(INT32 args) {
#line 1406 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("index",args,0);
{
push_int(THIS->current_index);
}

}
#define f_Xapian_PositionIterator_value_defined

#ifdef f_Xapian_PositionIterator_value_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_PositionIterator_value_fun_num = 0;

#endif /* f_Xapian_PositionIterator_value_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_PositionIterator_value(INT32 args) {
#line 1411 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("value",args,0);
{
push_object(this_object());
}

}
#define f_Xapian_PositionIterator_cq__backtick_eq_eq_defined

#ifdef f_Xapian_PositionIterator_cq__backtick_eq_eq_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_PositionIterator_cq__backtick_eq_eq_fun_num = 0;

#endif /* f_Xapian_PositionIterator_cq__backtick_eq_eq_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_PositionIterator_cq__backtick_eq_eq(INT32 args) {
#line 1416 "xapian.ccmod"
struct svalue * arg;
#line 1416 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("`==",args,1);
#line 1416 "xapian.ccmod"
arg=Pike_sp+0-1; dmalloc_touch_svalue(Pike_sp+0-1);
{
struct object * o;
PositionIterator *posi;
PositionIterator *posb;
struct Xapian_PositionIterator_struct * pis; 

if(TYPEOF(*arg)!= T_OBJECT) do { INT_TYPE ret_=((0)); pop_stack(); push_int(ret_); return; }while(0);
#line 1424 "xapian.ccmod"
o = arg->u.object;
posi = (PositionIterator*)THIS->object_data->positioni;
pis = OBJ2_XAPIAN_POSITIONITERATOR(o);
if(!pis) do { INT_TYPE ret_=((0)); pop_stack(); push_int(ret_); return; }while(0);
#line 1429 "xapian.ccmod"
posb = pis->object_data->positioni;
if(*posi == *posb) do { INT_TYPE ret_=((1)); pop_stack(); push_int(ret_); return; }while(0);
#line 1431 "xapian.ccmod"
else do { INT_TYPE ret_=((0)); pop_stack(); push_int(ret_); return; }while(0);
#line 1432 "xapian.ccmod"
}

}
/*! @decl void skip_to(int pos)
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_PositionIterator_skip_to_defined

#ifdef f_Xapian_PositionIterator_skip_to_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_PositionIterator_skip_to_fun_num = 0;

#endif /* f_Xapian_PositionIterator_skip_to_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_PositionIterator_skip_to(INT32 args) {
#line 1441 "xapian.ccmod"
INT_TYPE pos;
#line 1441 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("skip_to",args,1);
#line 1441 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("skip_to",1,"int");
#line 1441 "xapian.ccmod"
pos=Pike_sp[0-1].u.integer;
{

PositionIterator *posi;
try 
{
posi = (PositionIterator*)THIS->object_data->positioni;
posi->skip_to(pos);
pop_stack();
push_int(0);
}
catch(const RangeError &e)
{
pop_n_elems(args);
Pike_error("RangeError\n");
}


}

}
/*! @decl int get_position()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_PositionIterator_get_position_defined

#ifdef f_Xapian_PositionIterator_get_position_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_PositionIterator_get_position_fun_num = 0;

#endif /* f_Xapian_PositionIterator_get_position_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_PositionIterator_get_position(INT32 args) {
#line 1468 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_position",args,0);
{
PositionIterator *posi;
int i;
try
{
posi = (PositionIterator*)THIS->object_data->positioni;
i = (*(*posi));
push_int(i);
}
catch(const RangeError &e)
{
pop_n_elems(args);
Pike_error("RangeError\n");
}
}

}
#define f_Xapian_PositionIterator_cq__backtick_21_defined

#ifdef f_Xapian_PositionIterator_cq__backtick_21_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_PositionIterator_cq__backtick_21_fun_num = 0;

#endif /* f_Xapian_PositionIterator_cq__backtick_21_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_PositionIterator_cq__backtick_21(INT32 args) {
#line 1485 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("`!",args,0);
{
PositionIterator *pi;
pi = THIS->object_data->positioni;
if(*pi == *(THIS->pie)) { push_int(1); }
else
push_int(0);
}

}
/*! @decl string get_description()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_PositionIterator_get_description_defined

#ifdef f_Xapian_PositionIterator_get_description_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_PositionIterator_get_description_fun_num = 0;

#endif /* f_Xapian_PositionIterator_get_description_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_PositionIterator_get_description(INT32 args) {
#line 1501 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_description",args,0);
{
PositionIterator *pi;
pi = THIS->object_data->positioni;

string str = pi->get_description();

push_text(str.c_str());
}

}
#define f_Xapian_PositionIterator_cq__sprintf_defined

#ifdef f_Xapian_PositionIterator_cq__sprintf_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_PositionIterator_cq__sprintf_fun_num = 0;

#endif /* f_Xapian_PositionIterator_cq__sprintf_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_PositionIterator_cq__sprintf(INT32 args) {
#line 1511 "xapian.ccmod"
INT_TYPE conversion_type;
#line 1511 "xapian.ccmod"
struct mapping * params;
#line 1511 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 1511 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 1511 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 1511 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 1511 "xapian.ccmod"
debug_malloc_pass(params=Pike_sp[1-2].u.mapping);
{
PositionIterator *it;
if(THIS && THIS->object_data && conversion_type == 'O')
{
it = THIS->object_data->positioni;

string str = it->get_description();
pop_n_elems(args);
push_text(str.c_str());
}
else
{
pop_n_elems(args);
push_int(0);
}
}


}

#undef internal_init_Xapian_PositionIterator_defined
#define internal_init_Xapian_PositionIterator_defined

#undef Xapian_PositionIterator_event_handler_defined
#define Xapian_PositionIterator_event_handler_defined
static void init_Xapian_PositionIterator_struct(void)
#line 1531 "xapian.ccmod"
{
XAPIAN_POSITIONITERATOR_OBJECT_DATA * dta = 
(XAPIAN_POSITIONITERATOR_OBJECT_DATA*)malloc(sizeof(XAPIAN_POSITIONITERATOR_OBJECT_DATA));
if (!dta)
Pike_error("init_positioniterator: Out of memory!\n");

dta->positioni = NULL;
THIS->object_data = dta;
}


#undef Xapian_PositionIterator_gc_live_obj
#define Xapian_PositionIterator_gc_live_obj

#undef internal_exit_Xapian_PositionIterator_defined
#define internal_exit_Xapian_PositionIterator_defined

#undef Xapian_PositionIterator_event_handler_defined
#define Xapian_PositionIterator_event_handler_defined
static void exit_Xapian_PositionIterator_struct(void)
#line 1542 "xapian.ccmod"
{
if(THIS->object_data)
{
PositionIterator *positioni;
positioni = THIS->object_data->positioni;
if(positioni) delete positioni;
free(THIS->object_data);
}
}


#ifdef Xapian_PositionIterator_event_handler_defined
static void Xapian_PositionIterator_event_handler(int ev) {
  switch(ev) {

#ifdef internal_init_Xapian_PositionIterator_defined
  case PROG_EVENT_INIT: init_Xapian_PositionIterator_struct(); break;

#endif /* internal_init_Xapian_PositionIterator_defined */

#ifdef internal_exit_Xapian_PositionIterator_defined
  case PROG_EVENT_EXIT: exit_Xapian_PositionIterator_struct(); break;

#endif /* internal_exit_Xapian_PositionIterator_defined */
  default: break; 
  }
}

#endif /* Xapian_PositionIterator_event_handler_defined */
/*!  @endclass
*/

/*! @class ValueIterator
*/


#undef class_Xapian_ValueIterator_defined
#define class_Xapian_ValueIterator_defined
DEFAULT_CMOD_STORAGE struct program *Xapian_ValueIterator_program=NULL;

#ifdef Xapian_ValueIterator_program_fun_num_used
DEFAULT_CMOD_STORAGE int Xapian_ValueIterator_program_fun_num=-1;
#endif /* Xapian_ValueIterator_program_fun_num_used */

#undef var_vie_Xapian_ValueIterator_defined
#define var_vie_Xapian_ValueIterator_defined

#undef var_current_index_Xapian_ValueIterator_defined
#define var_current_index_Xapian_ValueIterator_defined

#undef var_object_data_Xapian_ValueIterator_defined
#define var_object_data_Xapian_ValueIterator_defined

#undef THIS
#define THIS ((struct Xapian_ValueIterator_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef THIS_XAPIAN_VALUEITERATOR
#define THIS_XAPIAN_VALUEITERATOR ((struct Xapian_ValueIterator_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef OBJ2_XAPIAN_VALUEITERATOR
#define OBJ2_XAPIAN_VALUEITERATOR(o) ((struct Xapian_ValueIterator_struct *)(o->storage+Xapian_ValueIterator_storage_offset))

#undef GET_XAPIAN_VALUEITERATOR_STORAGE
#define GET_XAPIAN_VALUEITERATOR_STORAGE(o) ((struct Xapian_ValueIterator_struct *)(o->storage+Xapian_ValueIterator_storage_offset)
static ptrdiff_t Xapian_ValueIterator_storage_offset;
struct Xapian_ValueIterator_struct {

#ifdef var_vie_Xapian_ValueIterator_defined
#line 1562 "xapian.ccmod"
ValueIterator * vie;
#endif /* var_vie_Xapian_ValueIterator_defined */

#ifdef var_current_index_Xapian_ValueIterator_defined
#line 1563 "xapian.ccmod"
int current_index;
#endif /* var_current_index_Xapian_ValueIterator_defined */

#ifdef var_object_data_Xapian_ValueIterator_defined
#line 1564 "xapian.ccmod"
XAPIAN_VALUEITERATOR_OBJECT_DATA *object_data;
#endif /* var_object_data_Xapian_ValueIterator_defined */
};
#ifdef PIKE_DEBUG
/* Ensure the struct is used in a variable declaration, or else gdb might not see it. */
static struct Xapian_ValueIterator_struct *Xapian_ValueIterator_gdb_dummy_ptr;
#endif
#define f_Xapian_ValueIterator_next_defined

#ifdef f_Xapian_ValueIterator_next_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ValueIterator_next_fun_num = 0;

#endif /* f_Xapian_ValueIterator_next_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ValueIterator_next(INT32 args) {
#line 1566 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("next",args,0);
{
ValueIterator v;
++(*(THIS->object_data->valuei));

push_object(this_object()); 
}

}
#define f_Xapian_ValueIterator_index_defined

#ifdef f_Xapian_ValueIterator_index_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ValueIterator_index_fun_num = 0;

#endif /* f_Xapian_ValueIterator_index_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ValueIterator_index(INT32 args) {
#line 1574 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("index",args,0);
{
int i = 21;

try
{
ValueIterator v = *(THIS->object_data->valuei);
i = v.get_valueno();
} 
catch(const RangeError &e)
{
pop_n_elems(args);
Pike_error("RangeError\n");
}
push_int(i);
}

}
#define f_Xapian_ValueIterator_value_defined

#ifdef f_Xapian_ValueIterator_value_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ValueIterator_value_fun_num = 0;

#endif /* f_Xapian_ValueIterator_value_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ValueIterator_value(INT32 args) {
#line 1591 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("value",args,0);
{
string i;

try
{
i = (*(*(THIS->object_data->valuei)));
push_text(i.c_str());
}
catch(const RangeError &e)
{
pop_n_elems(args);
Pike_error("RangeError\n");
}
}

}
#define f_Xapian_ValueIterator_cq__backtick_eq_eq_defined

#ifdef f_Xapian_ValueIterator_cq__backtick_eq_eq_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ValueIterator_cq__backtick_eq_eq_fun_num = 0;

#endif /* f_Xapian_ValueIterator_cq__backtick_eq_eq_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ValueIterator_cq__backtick_eq_eq(INT32 args) {
#line 1607 "xapian.ccmod"
struct svalue * arg;
#line 1607 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("`==",args,1);
#line 1607 "xapian.ccmod"
arg=Pike_sp+0-1; dmalloc_touch_svalue(Pike_sp+0-1);
{
struct object * o;
ValueIterator *valuei;
ValueIterator *valueb;
struct Xapian_ValueIterator_struct * vis; 

if(TYPEOF(*arg)!= T_OBJECT) do { INT_TYPE ret_=((0)); pop_stack(); push_int(ret_); return; }while(0);
#line 1615 "xapian.ccmod"
o = arg->u.object;
valuei = (ValueIterator*)THIS->object_data->valuei;
vis = OBJ2_XAPIAN_VALUEITERATOR(o);
if(!vis) do { INT_TYPE ret_=((0)); pop_stack(); push_int(ret_); return; }while(0);
#line 1620 "xapian.ccmod"
valueb = vis->object_data->valuei;
if(*valuei == *valueb) do { INT_TYPE ret_=((1)); pop_stack(); push_int(ret_); return; }while(0);
#line 1622 "xapian.ccmod"
else do { INT_TYPE ret_=((0)); pop_stack(); push_int(ret_); return; }while(0);
#line 1623 "xapian.ccmod"
}

}
/*! @decl int get_valueno()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_ValueIterator_get_valueno_defined

#ifdef f_Xapian_ValueIterator_get_valueno_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ValueIterator_get_valueno_fun_num = 0;

#endif /* f_Xapian_ValueIterator_get_valueno_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ValueIterator_get_valueno(INT32 args) {
#line 1632 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_valueno",args,0);
{
valueno i;

try 
{ 
ValueIterator v;
v = *(THIS->object_data->valuei);
i = v.get_valueno();
push_int((INT_TYPE)i);
}
catch(const RangeError &e)
{
pop_n_elems(args);
Pike_error("RangeError\n");
}
}

}
/*! @decl int get_value()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_ValueIterator_get_value_defined

#ifdef f_Xapian_ValueIterator_get_value_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ValueIterator_get_value_fun_num = 0;

#endif /* f_Xapian_ValueIterator_get_value_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ValueIterator_get_value(INT32 args) {
#line 1657 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_value",args,0);
{
string i;
printf("calling get_value()\n");

try
{
i = (*(*(THIS->object_data->valuei)));
push_text(i.c_str());
}
catch(const RangeError &e)
{
pop_n_elems(args);
Pike_error("RangeError\n");
}
}

}
#define f_Xapian_ValueIterator_cq__backtick_21_defined

#ifdef f_Xapian_ValueIterator_cq__backtick_21_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ValueIterator_cq__backtick_21_fun_num = 0;

#endif /* f_Xapian_ValueIterator_cq__backtick_21_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ValueIterator_cq__backtick_21(INT32 args) {
#line 1674 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("`!",args,0);
{
if(!THIS->vie)
Pike_error("No end position specified. Did you create this iterator yourself?\n");

if(*(THIS->object_data->valuei) == *(THIS->vie)) { push_int(1); }
else
push_int(0);
}

}
#line 1684 "xapian.ccmod"
/*  ValueIterator.string get_description() */
/*! @decl string get_description()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_ValueIterator_get_description_defined

#ifdef f_Xapian_ValueIterator_get_description_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ValueIterator_get_description_fun_num = 0;

#endif /* f_Xapian_ValueIterator_get_description_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ValueIterator_get_description(INT32 args) {
#line 1692 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_description",args,0);
{
string str = THIS->object_data->valuei->get_description();

push_text(str.c_str());
}

}
#define f_Xapian_ValueIterator_cq__sprintf_defined

#ifdef f_Xapian_ValueIterator_cq__sprintf_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ValueIterator_cq__sprintf_fun_num = 0;

#endif /* f_Xapian_ValueIterator_cq__sprintf_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ValueIterator_cq__sprintf(INT32 args) {
#line 1699 "xapian.ccmod"
INT_TYPE conversion_type;
#line 1699 "xapian.ccmod"
struct mapping * params;
#line 1699 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 1699 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 1699 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 1699 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 1699 "xapian.ccmod"
debug_malloc_pass(params=Pike_sp[1-2].u.mapping);
{
ValueIterator *it;
if(THIS && THIS->object_data && conversion_type == 'O')
{
string str = THIS->object_data->valuei->get_description();
pop_n_elems(args);
push_text(str.c_str());
}
else
{
pop_n_elems(args);
push_int(0);
}
}


}

#undef internal_init_Xapian_ValueIterator_defined
#define internal_init_Xapian_ValueIterator_defined

#undef Xapian_ValueIterator_event_handler_defined
#define Xapian_ValueIterator_event_handler_defined
static void init_Xapian_ValueIterator_struct(void)
#line 1717 "xapian.ccmod"
{
XAPIAN_VALUEITERATOR_OBJECT_DATA * dta = 
(XAPIAN_VALUEITERATOR_OBJECT_DATA*)malloc(sizeof(XAPIAN_VALUEITERATOR_OBJECT_DATA));
if (!dta)
Pike_error("init_sample: Out of memory!\n");

dta->valuei = NULL;
THIS->object_data = dta;
}


#undef Xapian_ValueIterator_gc_live_obj
#define Xapian_ValueIterator_gc_live_obj

#undef internal_exit_Xapian_ValueIterator_defined
#define internal_exit_Xapian_ValueIterator_defined

#undef Xapian_ValueIterator_event_handler_defined
#define Xapian_ValueIterator_event_handler_defined
static void exit_Xapian_ValueIterator_struct(void)
#line 1728 "xapian.ccmod"
{
if(THIS->object_data)
{
ValueIterator *valuei;
valuei = THIS->object_data->valuei;
if(valuei) delete valuei;
free(THIS->object_data);
}
}


#ifdef Xapian_ValueIterator_event_handler_defined
static void Xapian_ValueIterator_event_handler(int ev) {
  switch(ev) {

#ifdef internal_init_Xapian_ValueIterator_defined
  case PROG_EVENT_INIT: init_Xapian_ValueIterator_struct(); break;

#endif /* internal_init_Xapian_ValueIterator_defined */

#ifdef internal_exit_Xapian_ValueIterator_defined
  case PROG_EVENT_EXIT: exit_Xapian_ValueIterator_struct(); break;

#endif /* internal_exit_Xapian_ValueIterator_defined */
  default: break; 
  }
}

#endif /* Xapian_ValueIterator_event_handler_defined */
/*!  @endclass
*/

/*! @class TermIterator
*/


#undef class_Xapian_TermIterator_defined
#define class_Xapian_TermIterator_defined
DEFAULT_CMOD_STORAGE struct program *Xapian_TermIterator_program=NULL;

#ifdef Xapian_TermIterator_program_fun_num_used
DEFAULT_CMOD_STORAGE int Xapian_TermIterator_program_fun_num=-1;
#endif /* Xapian_TermIterator_program_fun_num_used */

#undef var_tie_Xapian_TermIterator_defined
#define var_tie_Xapian_TermIterator_defined

#undef var_current_index_Xapian_TermIterator_defined
#define var_current_index_Xapian_TermIterator_defined

#undef var_object_data_Xapian_TermIterator_defined
#define var_object_data_Xapian_TermIterator_defined

#undef THIS
#define THIS ((struct Xapian_TermIterator_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef THIS_XAPIAN_TERMITERATOR
#define THIS_XAPIAN_TERMITERATOR ((struct Xapian_TermIterator_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef OBJ2_XAPIAN_TERMITERATOR
#define OBJ2_XAPIAN_TERMITERATOR(o) ((struct Xapian_TermIterator_struct *)(o->storage+Xapian_TermIterator_storage_offset))

#undef GET_XAPIAN_TERMITERATOR_STORAGE
#define GET_XAPIAN_TERMITERATOR_STORAGE(o) ((struct Xapian_TermIterator_struct *)(o->storage+Xapian_TermIterator_storage_offset)
static ptrdiff_t Xapian_TermIterator_storage_offset;
struct Xapian_TermIterator_struct {

#ifdef var_tie_Xapian_TermIterator_defined
#line 1748 "xapian.ccmod"
TermIterator * tie;
#endif /* var_tie_Xapian_TermIterator_defined */

#ifdef var_current_index_Xapian_TermIterator_defined
#line 1749 "xapian.ccmod"
int current_index;
#endif /* var_current_index_Xapian_TermIterator_defined */

#ifdef var_object_data_Xapian_TermIterator_defined
#line 1750 "xapian.ccmod"
XAPIAN_TERMITERATOR_OBJECT_DATA *object_data;
#endif /* var_object_data_Xapian_TermIterator_defined */
};
#ifdef PIKE_DEBUG
/* Ensure the struct is used in a variable declaration, or else gdb might not see it. */
static struct Xapian_TermIterator_struct *Xapian_TermIterator_gdb_dummy_ptr;
#endif
#define f_Xapian_TermIterator_next_defined

#ifdef f_Xapian_TermIterator_next_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_TermIterator_next_fun_num = 0;

#endif /* f_Xapian_TermIterator_next_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_TermIterator_next(INT32 args) {
#line 1752 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("next",args,0);
{
++(*(THIS->object_data->termi));
push_object(this_object()); 
}

}
#define f_Xapian_TermIterator_index_defined

#ifdef f_Xapian_TermIterator_index_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_TermIterator_index_fun_num = 0;

#endif /* f_Xapian_TermIterator_index_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_TermIterator_index(INT32 args) {
#line 1758 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("index",args,0);
{
push_int(THIS->current_index);
}

}
#define f_Xapian_TermIterator_value_defined

#ifdef f_Xapian_TermIterator_value_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_TermIterator_value_fun_num = 0;

#endif /* f_Xapian_TermIterator_value_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_TermIterator_value(INT32 args) {
#line 1763 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("value",args,0);
{
push_object(this_object());
}

}
#define f_Xapian_TermIterator_cq__backtick_eq_eq_defined

#ifdef f_Xapian_TermIterator_cq__backtick_eq_eq_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_TermIterator_cq__backtick_eq_eq_fun_num = 0;

#endif /* f_Xapian_TermIterator_cq__backtick_eq_eq_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_TermIterator_cq__backtick_eq_eq(INT32 args) {
#line 1768 "xapian.ccmod"
struct svalue * arg;
#line 1768 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("`==",args,1);
#line 1768 "xapian.ccmod"
arg=Pike_sp+0-1; dmalloc_touch_svalue(Pike_sp+0-1);
{
struct object * o;
TermIterator *termi;
TermIterator *termb;
struct Xapian_TermIterator_struct * tis; 

if(TYPEOF(*arg)!= T_OBJECT) do { INT_TYPE ret_=((0)); pop_stack(); push_int(ret_); return; }while(0);
#line 1776 "xapian.ccmod"
o = arg->u.object;
termi = (TermIterator*)THIS->object_data->termi;
tis = OBJ2_XAPIAN_TERMITERATOR(o);
if(!tis) do { INT_TYPE ret_=((0)); pop_stack(); push_int(ret_); return; }while(0);
#line 1781 "xapian.ccmod"
termb = tis->object_data->termi;
if(*termi == *termb) do { INT_TYPE ret_=((1)); pop_stack(); push_int(ret_); return; }while(0);
#line 1783 "xapian.ccmod"
else do { INT_TYPE ret_=((0)); pop_stack(); push_int(ret_); return; }while(0);
#line 1784 "xapian.ccmod"
}

}
/*! @decl object position_iterator()
 *!
 *!  @returns
 *!    an object which can be passed to @[foreach]()
 *!  
 *!
 */
#define f_Xapian_TermIterator_position_iterator_defined

#ifdef f_Xapian_TermIterator_position_iterator_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_TermIterator_position_iterator_fun_num = 0;

#endif /* f_Xapian_TermIterator_position_iterator_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_TermIterator_position_iterator(INT32 args) {
#line 1793 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("position_iterator",args,0);
{
TermIterator *ti;
ti = THIS->object_data->termi;

PositionIterator pi;
PositionIterator * pi2;
struct object * o;

pi = ti->positionlist_begin();
pi2 = new PositionIterator(pi);

o = fast_clone_object(Xapian_PositionIterator_program);

OBJ2_XAPIAN_POSITIONITERATOR(o)->object_data->positioni = pi2;
OBJ2_XAPIAN_POSITIONITERATOR(o)->pie = new PositionIterator(ti->positionlist_end());

push_object(o); 
}

}
/*! @decl int get_wdf()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_TermIterator_get_wdf_defined

#ifdef f_Xapian_TermIterator_get_wdf_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_TermIterator_get_wdf_fun_num = 0;

#endif /* f_Xapian_TermIterator_get_wdf_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_TermIterator_get_wdf(INT32 args) {
#line 1820 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_wdf",args,0);
{
TermIterator *termi;
termcount i;
termi = (TermIterator*)THIS->object_data->termi;
i = termi->get_wdf();
push_int((INT_TYPE)i);
}

}
/*! @decl int get_termfreq()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_TermIterator_get_termfreq_defined

#ifdef f_Xapian_TermIterator_get_termfreq_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_TermIterator_get_termfreq_fun_num = 0;

#endif /* f_Xapian_TermIterator_get_termfreq_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_TermIterator_get_termfreq(INT32 args) {
#line 1836 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_termfreq",args,0);
{
TermIterator *termi;
doccount i;
termi = (TermIterator*)THIS->object_data->termi;
i = termi->get_termfreq();
push_int((INT_TYPE)i);
}

}
/*! @decl int positionlist_count()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_TermIterator_positionlist_count_defined

#ifdef f_Xapian_TermIterator_positionlist_count_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_TermIterator_positionlist_count_fun_num = 0;

#endif /* f_Xapian_TermIterator_positionlist_count_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_TermIterator_positionlist_count(INT32 args) {
#line 1852 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("positionlist_count",args,0);
{
TermIterator *termi;
termcount i;
termi = (TermIterator*)THIS->object_data->termi;
i = termi->positionlist_count();
push_int((INT_TYPE)i);
}


}
/*! @decl string get_term()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_TermIterator_get_term_defined

#ifdef f_Xapian_TermIterator_get_term_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_TermIterator_get_term_fun_num = 0;

#endif /* f_Xapian_TermIterator_get_term_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_TermIterator_get_term(INT32 args) {
#line 1869 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_term",args,0);
{
TermIterator *termi;
string i;
termi = (TermIterator*)THIS->object_data->termi;
i = (*(*termi));
push_text(i.c_str());
}

}
#define f_Xapian_TermIterator_cq__backtick_add_eq_defined

#ifdef f_Xapian_TermIterator_cq__backtick_add_eq_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_TermIterator_cq__backtick_add_eq_fun_num = 0;

#endif /* f_Xapian_TermIterator_cq__backtick_add_eq_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_TermIterator_cq__backtick_add_eq(INT32 args) {
#line 1878 "xapian.ccmod"
INT_TYPE i;
#line 1878 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("`+=",args,1);
#line 1878 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("`+=",1,"int");
#line 1878 "xapian.ccmod"
i=Pike_sp[0-1].u.integer;
{
TermIterator *ti;
ti = THIS->object_data->termi;

for(int x = 0; x < i; x++)
{
(*ti)++;
if(*ti == *(THIS->tie)) {
pop_stack(); push_int(0); return;}
}
THIS->current_index++;
pop_stack();
push_object(this_object());
}

}
#define f_Xapian_TermIterator_cq__backtick_21_defined

#ifdef f_Xapian_TermIterator_cq__backtick_21_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_TermIterator_cq__backtick_21_fun_num = 0;

#endif /* f_Xapian_TermIterator_cq__backtick_21_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_TermIterator_cq__backtick_21(INT32 args) {
#line 1894 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("`!",args,0);
{
TermIterator *ti;
ti = THIS->object_data->termi;
if(*ti == *(THIS->tie)) { push_int(1); }
else
push_int(0);
}

}
#line 1903 "xapian.ccmod"
/*  TermIterator.string get_description() */
/*! @decl string get_description()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_TermIterator_get_description_defined

#ifdef f_Xapian_TermIterator_get_description_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_TermIterator_get_description_fun_num = 0;

#endif /* f_Xapian_TermIterator_get_description_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_TermIterator_get_description(INT32 args) {
#line 1911 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_description",args,0);
{
TermIterator *termi;
termi = THIS->object_data->termi;

string str = termi->get_description();

push_text(str.c_str());
}

}
#define f_Xapian_TermIterator_cq__sprintf_defined

#ifdef f_Xapian_TermIterator_cq__sprintf_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_TermIterator_cq__sprintf_fun_num = 0;

#endif /* f_Xapian_TermIterator_cq__sprintf_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_TermIterator_cq__sprintf(INT32 args) {
#line 1921 "xapian.ccmod"
INT_TYPE conversion_type;
#line 1921 "xapian.ccmod"
struct mapping * params;
#line 1921 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 1921 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 1921 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 1921 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 1921 "xapian.ccmod"
debug_malloc_pass(params=Pike_sp[1-2].u.mapping);
{
TermIterator *it;
if(THIS && THIS->object_data && conversion_type == 'O')
{
it = THIS->object_data->termi;

string str = it->get_description();
pop_n_elems(args);
push_text(str.c_str());
}
else
{
pop_n_elems(args);
push_int(0);
}
}


}

#undef internal_init_Xapian_TermIterator_defined
#define internal_init_Xapian_TermIterator_defined

#undef Xapian_TermIterator_event_handler_defined
#define Xapian_TermIterator_event_handler_defined
static void init_Xapian_TermIterator_struct(void)
#line 1941 "xapian.ccmod"
{
XAPIAN_TERMITERATOR_OBJECT_DATA * dta = 
(XAPIAN_TERMITERATOR_OBJECT_DATA*)malloc(sizeof(XAPIAN_TERMITERATOR_OBJECT_DATA));
if (!dta)
Pike_error("init_sample: Out of memory!\n");

dta->termi = NULL;
THIS->object_data = dta;
}


#undef Xapian_TermIterator_gc_live_obj
#define Xapian_TermIterator_gc_live_obj

#undef internal_exit_Xapian_TermIterator_defined
#define internal_exit_Xapian_TermIterator_defined

#undef Xapian_TermIterator_event_handler_defined
#define Xapian_TermIterator_event_handler_defined
static void exit_Xapian_TermIterator_struct(void)
#line 1952 "xapian.ccmod"
{
if(THIS->object_data)
{
TermIterator *termi;
termi = THIS->object_data->termi;
if(termi) delete termi;
free(THIS->object_data);
}
}


#ifdef Xapian_TermIterator_event_handler_defined
static void Xapian_TermIterator_event_handler(int ev) {
  switch(ev) {

#ifdef internal_init_Xapian_TermIterator_defined
  case PROG_EVENT_INIT: init_Xapian_TermIterator_struct(); break;

#endif /* internal_init_Xapian_TermIterator_defined */

#ifdef internal_exit_Xapian_TermIterator_defined
  case PROG_EVENT_EXIT: exit_Xapian_TermIterator_struct(); break;

#endif /* internal_exit_Xapian_TermIterator_defined */
  default: break; 
  }
}

#endif /* Xapian_TermIterator_event_handler_defined */
/*!  @endclass
*/

/*! @class Document
 *! A document in the database - holds data, values, terms, and postings.
*/


#undef class_Xapian_Document_defined
#define class_Xapian_Document_defined
DEFAULT_CMOD_STORAGE struct program *Xapian_Document_program=NULL;

#ifdef Xapian_Document_program_fun_num_used
DEFAULT_CMOD_STORAGE int Xapian_Document_program_fun_num=-1;
#endif /* Xapian_Document_program_fun_num_used */

#undef var_object_data_Xapian_Document_defined
#define var_object_data_Xapian_Document_defined

#undef THIS
#define THIS ((struct Xapian_Document_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef THIS_XAPIAN_DOCUMENT
#define THIS_XAPIAN_DOCUMENT ((struct Xapian_Document_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef OBJ2_XAPIAN_DOCUMENT
#define OBJ2_XAPIAN_DOCUMENT(o) ((struct Xapian_Document_struct *)(o->storage+Xapian_Document_storage_offset))

#undef GET_XAPIAN_DOCUMENT_STORAGE
#define GET_XAPIAN_DOCUMENT_STORAGE(o) ((struct Xapian_Document_struct *)(o->storage+Xapian_Document_storage_offset)
static ptrdiff_t Xapian_Document_storage_offset;
struct Xapian_Document_struct {

#ifdef var_object_data_Xapian_Document_defined
#line 1974 "xapian.ccmod"
XAPIAN_DOCUMENT_OBJECT_DATA *object_data;
#endif /* var_object_data_Xapian_Document_defined */
};
#ifdef PIKE_DEBUG
/* Ensure the struct is used in a variable declaration, or else gdb might not see it. */
static struct Xapian_Document_struct *Xapian_Document_gdb_dummy_ptr;
#endif
#line 1977 "xapian.ccmod"
/*  Document.void create() */
/*! @decl void create()
 *!
 *!  
 *!
 */
#define f_Xapian_Document_create_defined

#ifdef f_Xapian_Document_create_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Document_create_fun_num = 0;

#endif /* f_Xapian_Document_create_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Document_create(INT32 args) {
#line 1983 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("create",args,0);
{
try
{
Document* document = new Document();

pop_n_elems(args);

THIS->object_data->document = document;
}

catch(...) 
{
Pike_error("an error occurred!\n");
}
}

}
#line 2000 "xapian.ccmod"
/*  Document.void set_data(string data) */
/*! @decl void set_data(string data)
 *!
 *!  Set data stored in the document.
 *!
 *! @param data
 *!  
* !
 *!
 */
#define f_Xapian_Document_set_data_defined

#ifdef f_Xapian_Document_set_data_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Document_set_data_fun_num = 0;

#endif /* f_Xapian_Document_set_data_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Document_set_data(INT32 args) {
#line 2010 "xapian.ccmod"
struct pike_string * data;
#line 2010 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("set_data",args,1);
#line 2010 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("set_data",1,"string");
#line 2010 "xapian.ccmod"
debug_malloc_pass(data=Pike_sp[0-1].u.string);
{
Document *doc;
doc = THIS->object_data->document;
string str((const char *)data->str, (size_t)data->len);

doc->set_data(str); 

pop_n_elems(args);
}

}
/*! @decl ValueIterator value_iterator()
 *! Get an iterator for the values in this document.
 *!  @returns
 *!    a @[ValueIterator] object which can be passed to @[foreach]()
 *!  
 *!
 */
#define f_Xapian_Document_value_iterator_defined

#ifdef f_Xapian_Document_value_iterator_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Document_value_iterator_fun_num = 0;

#endif /* f_Xapian_Document_value_iterator_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Document_value_iterator(INT32 args) {
#line 2028 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("value_iterator",args,0);
{
Document *doc;
ValueIterator b, e, *a, *c;
doc = THIS->object_data->document;

struct object * o;

o = fast_clone_object(Xapian_ValueIterator_program);

(OBJ2_XAPIAN_VALUEITERATOR(o)->object_data->valuei) = new ValueIterator(doc->values_begin());
(OBJ2_XAPIAN_VALUEITERATOR(o)->vie) = new ValueIterator(doc->values_end());
push_object(o);
}

}
/*! @decl TermIterator term_iterator()
 *!  Get an iterator for the terms in this document.
 *!  @returns
 *!    a @[TermIterator] object which can be passed to @[foreach]()
 */
#define f_Xapian_Document_term_iterator_defined

#ifdef f_Xapian_Document_term_iterator_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Document_term_iterator_fun_num = 0;

#endif /* f_Xapian_Document_term_iterator_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Document_term_iterator(INT32 args) {
#line 2048 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("term_iterator",args,0);
{
Document *doc;
doc = THIS->object_data->document;

TermIterator ti;
TermIterator * ti2;
struct object * o;

ti = doc->termlist_begin();
ti2 = new TermIterator(ti);

o = fast_clone_object(Xapian_TermIterator_program);

OBJ2_XAPIAN_TERMITERATOR(o)->object_data->termi = ti2;
OBJ2_XAPIAN_TERMITERATOR(o)->tie = new TermIterator(doc->termlist_end());

push_object(o); 
}

}
#line 2068 "xapian.ccmod"
/*  Document.void clear_terms() */
/*! @decl void clear_terms()
 *!
 *! Remove all terms (and postings) from the document.  
 *!
 */
#define f_Xapian_Document_clear_terms_defined

#ifdef f_Xapian_Document_clear_terms_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Document_clear_terms_fun_num = 0;

#endif /* f_Xapian_Document_clear_terms_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Document_clear_terms(INT32 args) {
#line 2074 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("clear_terms",args,0);
{
Document *doc;
doc = THIS->object_data->document;

doc->clear_terms();
}

}
#line 2082 "xapian.ccmod"
/*  Document.void clear_values() */
/*! @decl void clear_values()
 *!
 *!  Remove all values associated with the document.
 *!
 */
#define f_Xapian_Document_clear_values_defined

#ifdef f_Xapian_Document_clear_values_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Document_clear_values_fun_num = 0;

#endif /* f_Xapian_Document_clear_values_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Document_clear_values(INT32 args) {
#line 2088 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("clear_values",args,0);
{
Document *doc;
doc = THIS->object_data->document;

doc->clear_values();
}

}
#line 2096 "xapian.ccmod"
/*  Document.string get_data() */
/*! @decl string get_data()
 *!  Get data stored in the document.
 *! This is a potentially expensive operation, and shouldn't normally be 
 *! used in a match decider function. Put data for use by match deciders 
 *! in a value instead.
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_Document_get_data_defined

#ifdef f_Xapian_Document_get_data_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Document_get_data_fun_num = 0;

#endif /* f_Xapian_Document_get_data_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Document_get_data(INT32 args) {
#line 2107 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_data",args,0);
{
Document *doc;
doc = THIS->object_data->document;

string str = doc->get_data();

push_text(str.c_str());
}

}
#line 2117 "xapian.ccmod"
/*  Document.string get_description() */
/*! @decl string get_description()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_Document_get_description_defined

#ifdef f_Xapian_Document_get_description_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Document_get_description_fun_num = 0;

#endif /* f_Xapian_Document_get_description_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Document_get_description(INT32 args) {
#line 2125 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_description",args,0);
{
Document *doc;
doc = THIS->object_data->document;

string str = doc->get_description();

push_text(str.c_str());
}

}
#define f_Xapian_Document_cq__sprintf_defined

#ifdef f_Xapian_Document_cq__sprintf_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Document_cq__sprintf_fun_num = 0;

#endif /* f_Xapian_Document_cq__sprintf_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Document_cq__sprintf(INT32 args) {
#line 2135 "xapian.ccmod"
INT_TYPE conversion_type;
#line 2135 "xapian.ccmod"
struct mapping * params;
#line 2135 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 2135 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 2135 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 2135 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 2135 "xapian.ccmod"
debug_malloc_pass(params=Pike_sp[1-2].u.mapping);
{
Document *doc;
if(THIS && THIS->object_data && conversion_type == 'O')
{
doc = THIS->object_data->document;

string str = doc->get_description();
pop_n_elems(args);
push_text(str.c_str());
}
else
{
pop_n_elems(args);
push_int(0);
}
}


}
#line 2154 "xapian.ccmod"
/*  Document.string get_value(int val) */
/*! @decl string get_value(int val)
 *!  Get value by number.
 *!  
 *! @param val
 *!   	The number of the value.
* !
 *! @returns
 *! Returns an empty string if no value with the given number is present 
 *! in the document.
 *!  
 *!
 */
#define f_Xapian_Document_get_value_defined

#ifdef f_Xapian_Document_get_value_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Document_get_value_fun_num = 0;

#endif /* f_Xapian_Document_get_value_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Document_get_value(INT32 args) {
#line 2167 "xapian.ccmod"
INT_TYPE val;
#line 2167 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("get_value",args,1);
#line 2167 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_value",1,"int");
#line 2167 "xapian.ccmod"
val=Pike_sp[0-1].u.integer;
{
Document *doc;
doc = THIS->object_data->document;

string str = doc->get_value(val);

pop_n_elems(args);

if(str.length())
push_text(str.c_str());
else 
push_int(0);
}

}
#line 2182 "xapian.ccmod"
/*  Document.void remove_value(int val) */
/*! @decl void remove_value(int val)
 *!
 *! Remove any value with the given number.  
 *! @param val
 *!  
* !
 *!
 */
#define f_Xapian_Document_remove_value_defined

#ifdef f_Xapian_Document_remove_value_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Document_remove_value_fun_num = 0;

#endif /* f_Xapian_Document_remove_value_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Document_remove_value(INT32 args) {
#line 2191 "xapian.ccmod"
INT_TYPE val;
#line 2191 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("remove_value",args,1);
#line 2191 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("remove_value",1,"int");
#line 2191 "xapian.ccmod"
val=Pike_sp[0-1].u.integer;
{
Document *doc;
doc = THIS->object_data->document;

doc->remove_value(val);

pop_n_elems(args);
}

}
#line 2201 "xapian.ccmod"
/*  Document.void add_term(string tname, int termcount) */
/*! @decl void add_term(string tname, int termcount)
 *!
 *! Add a term to the document, without positional information.
 *!
 *! Any existing positional information for the term will be left unmodified.  
 *! @param tname
 *!  The name of the term.
* !
 *! @param termcount
 *!  The increment that will be applied to the wdf for this term. 
* !
 *!
 */
#define f_Xapian_Document_add_term_defined

#ifdef f_Xapian_Document_add_term_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Document_add_term_fun_num = 0;

#endif /* f_Xapian_Document_add_term_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Document_add_term(INT32 args) {
#line 2215 "xapian.ccmod"
struct pike_string * tname;
#line 2215 "xapian.ccmod"
INT_TYPE termcount;
#line 2215 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("add_term",args,2);
#line 2215 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("add_term",1,"string");
#line 2215 "xapian.ccmod"
debug_malloc_pass(tname=Pike_sp[0-2].u.string);
#line 2215 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("add_term",2,"int");
#line 2215 "xapian.ccmod"
termcount=Pike_sp[1-2].u.integer;
{
Document *doc;
doc = THIS->object_data->document;

string str(tname->str, tname->len);

doc->add_term(str, (unsigned int)termcount);

pop_n_elems(args);
}

}
#line 2227 "xapian.ccmod"
/*  Document.void add_posting(string tname, int termpos, int termcount) */
/*! @decl void add_posting(string tname, int termpos, int termcount)
 *!Add an occurrence of a term at a particular position.
 *!
 *! Multiple occurrences of the term at the same position are represented 
 *! only once in the positional information, but do increase the wdf.
 *!
 *! If the term is not already in the document, it will be added to it.
 *!  
 *! @param tname
 *!  The name of the term.
* !
 *! @param termpos
 *!  The position of the term.
* !
 *! @param termcount
 *!  The increment that will be applied to the wdf for this term.
* !
 *!
 */
#define f_Xapian_Document_add_posting_defined

#ifdef f_Xapian_Document_add_posting_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Document_add_posting_fun_num = 0;

#endif /* f_Xapian_Document_add_posting_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Document_add_posting(INT32 args) {
#line 2247 "xapian.ccmod"
struct pike_string * tname;
#line 2247 "xapian.ccmod"
INT_TYPE termpos;
#line 2247 "xapian.ccmod"
INT_TYPE termcount;
#line 2247 "xapian.ccmod"
if(args != 3) wrong_number_of_args_error("add_posting",args,3);
#line 2247 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-3]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("add_posting",1,"string");
#line 2247 "xapian.ccmod"
debug_malloc_pass(tname=Pike_sp[0-3].u.string);
#line 2247 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("add_posting",2,"int");
#line 2247 "xapian.ccmod"
termpos=Pike_sp[1-3].u.integer;
#line 2247 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("add_posting",3,"int");
#line 2247 "xapian.ccmod"
termcount=Pike_sp[2-3].u.integer;
{
Document *doc;
doc = THIS->object_data->document;

string str(tname->str, tname->len);

try 
{ 

doc->add_posting(str, (unsigned int)termpos, (unsigned int)termcount);
}

catch(const InvalidArgumentError &e)
{
pop_n_elems(args);
Pike_error(e.get_msg().c_str());
}

pop_n_elems(args);
}

}
#line 2269 "xapian.ccmod"
/*  Document.void remove_term(string tname) */
/*! @decl void remove_term(string tname)
 *!  Remove a term and all postings associated with it.
 *!  
 *! @param tname
 *!  The name of the term.
* ! @note
 *!  An error will be thrown if the term is not present in the document.
 */
#define f_Xapian_Document_remove_term_defined

#ifdef f_Xapian_Document_remove_term_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Document_remove_term_fun_num = 0;

#endif /* f_Xapian_Document_remove_term_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Document_remove_term(INT32 args) {
#line 2278 "xapian.ccmod"
struct pike_string * tname;
#line 2278 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("remove_term",args,1);
#line 2278 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("remove_term",1,"string");
#line 2278 "xapian.ccmod"
debug_malloc_pass(tname=Pike_sp[0-1].u.string);
{
Document *doc;
doc = THIS->object_data->document;

string str(tname->str, tname->len);

try
{
doc->remove_term(str);
}
catch(const InvalidArgumentError &e)
{
pop_n_elems(args);
Pike_error("InvalidArgumentError\n");
}

pop_n_elems(args);
}

}
/*! @decl void remove_posting(string tname, int tpos, int wdfdec)
 *!Remove a posting of a term from the document.
 *!
 *! Note that the term will still index the document even if all 
 *! occurrences are removed. To remove a term from a document completely, 
 *! use @[remove_term]().
 *!
 *! @param tname
 *!  The name of the term.
 *! @param tpos
 *!  The position of the term.
 *! @param wdfdec
 *!   The decrement that will be applied to the wdf when removing this 
 *!   posting. The wdf will not go below the value of 0.
 *! 
 *! @note
 *!   An error will be thrown if the term is not at the position specified 
 *!   in the position list for this term in this document or if the term 
 *!   is not in the document.
 */
#define f_Xapian_Document_remove_posting_defined

#ifdef f_Xapian_Document_remove_posting_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Document_remove_posting_fun_num = 0;

#endif /* f_Xapian_Document_remove_posting_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Document_remove_posting(INT32 args) {
#line 2318 "xapian.ccmod"
struct pike_string * tname;
#line 2318 "xapian.ccmod"
INT_TYPE tpos;
#line 2318 "xapian.ccmod"
INT_TYPE wdfdec;
#line 2318 "xapian.ccmod"
if(args != 3) wrong_number_of_args_error("remove_posting",args,3);
#line 2318 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-3]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("remove_posting",1,"string");
#line 2318 "xapian.ccmod"
debug_malloc_pass(tname=Pike_sp[0-3].u.string);
#line 2318 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("remove_posting",2,"int");
#line 2318 "xapian.ccmod"
tpos=Pike_sp[1-3].u.integer;
#line 2318 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("remove_posting",3,"int");
#line 2318 "xapian.ccmod"
wdfdec=Pike_sp[2-3].u.integer;
{
Document *doc;
doc = THIS->object_data->document;

string str(tname->str, tname->len);

try
{
doc->remove_posting(str, tpos, wdfdec);
}
catch(const InvalidArgumentError &e)
{
pop_n_elems(args);
Pike_error("InvalidArgumentError\n");
}

pop_n_elems(args);
}

}
#line 2338 "xapian.ccmod"
/*  Document.void add_value(int valueno, string value) */
/*! @decl void add_value(int valueno, string value)
 *!Add a new value.
 *!
 *! It will replace any existing value with the same number. 
 *!  
 *! @param valueno
 *!  
* !
 *! @param value
 *!  
* !
 *!
 */
#define f_Xapian_Document_add_value_defined

#ifdef f_Xapian_Document_add_value_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Document_add_value_fun_num = 0;

#endif /* f_Xapian_Document_add_value_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Document_add_value(INT32 args) {
#line 2352 "xapian.ccmod"
INT_TYPE valueno;
#line 2352 "xapian.ccmod"
struct pike_string * value;
#line 2352 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("add_value",args,2);
#line 2352 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("add_value",1,"int");
#line 2352 "xapian.ccmod"
valueno=Pike_sp[0-2].u.integer;
#line 2352 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("add_value",2,"string");
#line 2352 "xapian.ccmod"
debug_malloc_pass(value=Pike_sp[1-2].u.string);
{
Document *doc;
doc = THIS->object_data->document;
string str(value->str, value->len);

doc->add_value(valueno, str);

pop_n_elems(args);
}

}
#line 2363 "xapian.ccmod"
/*  Document.int termlist_count() */
/*! @decl int termlist_count()
 *!
 *! Count the terms in this document.  
 *! @returns
 *!  the number of terms in the document.
 *!
 */
#define f_Xapian_Document_termlist_count_defined

#ifdef f_Xapian_Document_termlist_count_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Document_termlist_count_fun_num = 0;

#endif /* f_Xapian_Document_termlist_count_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Document_termlist_count(INT32 args) {
#line 2371 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("termlist_count",args,0);
{
Document *doc;
doc = THIS->object_data->document;
unsigned int i;

i = doc->termlist_count();

push_int((INT_TYPE)i);

return;
}

}
#line 2384 "xapian.ccmod"
/*  Document.int values_count() */
/*! @decl int values_count()
 *!
 *!  Count the values in this document. 
 *! @returns
 *!  the number of values in the document.
 *!
 */
#define f_Xapian_Document_values_count_defined

#ifdef f_Xapian_Document_values_count_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Document_values_count_fun_num = 0;

#endif /* f_Xapian_Document_values_count_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Document_values_count(INT32 args) {
#line 2392 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("values_count",args,0);
{
Document *doc;
doc = THIS->object_data->document;
unsigned int i;

i = doc->values_count();

push_int((INT_TYPE)i);

return;
}


}

#undef internal_init_Xapian_Document_defined
#define internal_init_Xapian_Document_defined

#undef Xapian_Document_event_handler_defined
#define Xapian_Document_event_handler_defined
static void init_Xapian_Document_struct(void)
#line 2407 "xapian.ccmod"
{
XAPIAN_DOCUMENT_OBJECT_DATA * dta = 
(XAPIAN_DOCUMENT_OBJECT_DATA*)malloc(sizeof(XAPIAN_DOCUMENT_OBJECT_DATA));
if (!dta)
Pike_error("init_sample: Out of memory!\n");

dta->document = NULL;
THIS->object_data = dta;
}


#undef Xapian_Document_gc_live_obj
#define Xapian_Document_gc_live_obj

#undef internal_exit_Xapian_Document_defined
#define internal_exit_Xapian_Document_defined

#undef Xapian_Document_event_handler_defined
#define Xapian_Document_event_handler_defined
static void exit_Xapian_Document_struct(void)
#line 2418 "xapian.ccmod"
{
if(THIS->object_data)
{

Document *doc;
doc = THIS->object_data->document;
if(doc) delete doc;
/* hrm... odd. */
free(THIS->object_data);
}
}


#ifdef Xapian_Document_event_handler_defined
static void Xapian_Document_event_handler(int ev) {
  switch(ev) {

#ifdef internal_init_Xapian_Document_defined
  case PROG_EVENT_INIT: init_Xapian_Document_struct(); break;

#endif /* internal_init_Xapian_Document_defined */

#ifdef internal_exit_Xapian_Document_defined
  case PROG_EVENT_EXIT: exit_Xapian_Document_struct(); break;

#endif /* internal_exit_Xapian_Document_defined */
  default: break; 
  }
}

#endif /* Xapian_Document_event_handler_defined */
/*!  @endclass
*/


#line 2436 "xapian.ccmod"
/*
     here are some important helper classes that we'll include 
     rather than compile separately.
*/
#include "PikeMatchDeciderProxy.cc"
#include "PikeExpandDeciderProxy.cc"



/*! @class MSetIterator
*/


#undef class_Xapian_MSetIterator_defined
#define class_Xapian_MSetIterator_defined
DEFAULT_CMOD_STORAGE struct program *Xapian_MSetIterator_program=NULL;

#ifdef Xapian_MSetIterator_program_fun_num_used
DEFAULT_CMOD_STORAGE int Xapian_MSetIterator_program_fun_num=-1;
#endif /* Xapian_MSetIterator_program_fun_num_used */

#undef var_current_index_Xapian_MSetIterator_defined
#define var_current_index_Xapian_MSetIterator_defined

#undef var_msete_Xapian_MSetIterator_defined
#define var_msete_Xapian_MSetIterator_defined

#undef var_object_data_Xapian_MSetIterator_defined
#define var_object_data_Xapian_MSetIterator_defined

#undef THIS
#define THIS ((struct Xapian_MSetIterator_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef THIS_XAPIAN_MSETITERATOR
#define THIS_XAPIAN_MSETITERATOR ((struct Xapian_MSetIterator_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef OBJ2_XAPIAN_MSETITERATOR
#define OBJ2_XAPIAN_MSETITERATOR(o) ((struct Xapian_MSetIterator_struct *)(o->storage+Xapian_MSetIterator_storage_offset))

#undef GET_XAPIAN_MSETITERATOR_STORAGE
#define GET_XAPIAN_MSETITERATOR_STORAGE(o) ((struct Xapian_MSetIterator_struct *)(o->storage+Xapian_MSetIterator_storage_offset)
static ptrdiff_t Xapian_MSetIterator_storage_offset;
struct Xapian_MSetIterator_struct {

#ifdef var_current_index_Xapian_MSetIterator_defined
#line 2450 "xapian.ccmod"
int current_index;
#endif /* var_current_index_Xapian_MSetIterator_defined */

#ifdef var_msete_Xapian_MSetIterator_defined
#line 2451 "xapian.ccmod"
MSetIterator * msete;
#endif /* var_msete_Xapian_MSetIterator_defined */

#ifdef var_object_data_Xapian_MSetIterator_defined
#line 2452 "xapian.ccmod"
XAPIAN_MSETITERATOR_OBJECT_DATA *object_data;
#endif /* var_object_data_Xapian_MSetIterator_defined */
};
#ifdef PIKE_DEBUG
/* Ensure the struct is used in a variable declaration, or else gdb might not see it. */
static struct Xapian_MSetIterator_struct *Xapian_MSetIterator_gdb_dummy_ptr;
#endif
#define f_Xapian_MSetIterator_get_document_defined

#ifdef f_Xapian_MSetIterator_get_document_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_MSetIterator_get_document_fun_num = 0;

#endif /* f_Xapian_MSetIterator_get_document_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_MSetIterator_get_document(INT32 args) {
#line 2454 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_document",args,0);
{
MSetIterator *mseti;
Document doc;
Document *doc2;
struct object * o;
try {
mseti = (MSetIterator*)THIS->object_data->mseti;
doc = mseti->get_document(); 
doc2 = new Document(doc);

o = fast_clone_object(Xapian_Document_program);
OBJ2_XAPIAN_DOCUMENT(o)->object_data->document = doc2;

push_object(o);
}
catch(const RangeError &e)
{
pop_n_elems(args);
Pike_error("RangeError\n");
}

}

}
#define f_Xapian_MSetIterator_index_defined

#ifdef f_Xapian_MSetIterator_index_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_MSetIterator_index_fun_num = 0;

#endif /* f_Xapian_MSetIterator_index_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_MSetIterator_index(INT32 args) {
#line 2478 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("index",args,0);
{
push_int(THIS->current_index);
}

}
#define f_Xapian_MSetIterator_value_defined

#ifdef f_Xapian_MSetIterator_value_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_MSetIterator_value_fun_num = 0;

#endif /* f_Xapian_MSetIterator_value_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_MSetIterator_value(INT32 args) {
#line 2483 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("value",args,0);
{
push_object(this_object());
}

}
#define f_Xapian_MSetIterator_get_docid_defined

#ifdef f_Xapian_MSetIterator_get_docid_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_MSetIterator_get_docid_fun_num = 0;

#endif /* f_Xapian_MSetIterator_get_docid_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_MSetIterator_get_docid(INT32 args) {
#line 2488 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_docid",args,0);
{
MSetIterator *mseti;
docid i;
mseti = (MSetIterator*)THIS->object_data->mseti;
i = (*(*mseti));
push_int((INT_TYPE)i);
}

}
#define f_Xapian_MSetIterator_get_percent_defined

#ifdef f_Xapian_MSetIterator_get_percent_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_MSetIterator_get_percent_fun_num = 0;

#endif /* f_Xapian_MSetIterator_get_percent_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_MSetIterator_get_percent(INT32 args) {
#line 2497 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_percent",args,0);
{
MSetIterator *mseti;
docid i;
mseti = (MSetIterator*)THIS->object_data->mseti;
i = mseti->get_percent();
push_int((INT_TYPE)i);
}

}
#define f_Xapian_MSetIterator_get_weight_defined

#ifdef f_Xapian_MSetIterator_get_weight_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_MSetIterator_get_weight_fun_num = 0;

#endif /* f_Xapian_MSetIterator_get_weight_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_MSetIterator_get_weight(INT32 args) {
#line 2506 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_weight",args,0);
{
MSetIterator *mseti;
weight i;
mseti = (MSetIterator*)THIS->object_data->mseti;
i = mseti->get_weight();
push_float((FLOAT_TYPE)i);
}

}
#define f_Xapian_MSetIterator_get_collapse_count_defined

#ifdef f_Xapian_MSetIterator_get_collapse_count_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_MSetIterator_get_collapse_count_fun_num = 0;

#endif /* f_Xapian_MSetIterator_get_collapse_count_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_MSetIterator_get_collapse_count(INT32 args) {
#line 2515 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_collapse_count",args,0);
{
MSetIterator *mseti;
docid i;
mseti = (MSetIterator*)THIS->object_data->mseti;
i = mseti->get_collapse_count();
push_int((INT_TYPE)i);
}

}
#define f_Xapian_MSetIterator_next_defined

#ifdef f_Xapian_MSetIterator_next_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_MSetIterator_next_fun_num = 0;

#endif /* f_Xapian_MSetIterator_next_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_MSetIterator_next(INT32 args) {
#line 2524 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("next",args,0);
{
MSetIterator *mseti;
mseti = THIS->object_data->mseti;
MSetIterator *mseti2;

struct object * o;
(*mseti)++;

THIS->current_index++;
if(*mseti == *(THIS->msete)) {push_int(0); return;}
push_int(1); 
}
}
#line 2537 "xapian.ccmod"
/*
  PIKEFUN object prev()
  {
    MSetIterator  *mseti;
    mseti = THIS->object_data->mseti;
    MSetIterator *mseti2;

    struct object * o;

    mseti2 = new MSetIterator((*mseti)--);

    o = fast_clone_object(Xapian_MSetIterator_program);

    OBJ2_XAPIAN_MSETITERATOR(o)->object_data->mseti = mseti2;

    push_object(o);    
  }
*/
#define f_Xapian_MSetIterator_cq__backtick_add_eq_defined

#ifdef f_Xapian_MSetIterator_cq__backtick_add_eq_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_MSetIterator_cq__backtick_add_eq_fun_num = 0;

#endif /* f_Xapian_MSetIterator_cq__backtick_add_eq_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_MSetIterator_cq__backtick_add_eq(INT32 args) {
#line 2555 "xapian.ccmod"
INT_TYPE i;
#line 2555 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("`+=",args,1);
#line 2555 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("`+=",1,"int");
#line 2555 "xapian.ccmod"
i=Pike_sp[0-1].u.integer;
{
MSetIterator *mseti;
mseti = THIS->object_data->mseti;

for(int x = 0; x < i; x++)
{
(*mseti)++;
if(*mseti == *(THIS->msete)) {
pop_stack(); push_int(0); return;}
}
THIS->current_index++;
pop_stack();
push_object(this_object());
}

}
#define f_Xapian_MSetIterator_cq__backtick_21_defined

#ifdef f_Xapian_MSetIterator_cq__backtick_21_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_MSetIterator_cq__backtick_21_fun_num = 0;

#endif /* f_Xapian_MSetIterator_cq__backtick_21_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_MSetIterator_cq__backtick_21(INT32 args) {
#line 2571 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("`!",args,0);
{
MSetIterator *mseti;
mseti = THIS->object_data->mseti;
if(*mseti == *(THIS->msete)) { push_int(1); }
else
push_int(0);
}

}
#define f_Xapian_MSetIterator_cq__backtick_eq_eq_defined

#ifdef f_Xapian_MSetIterator_cq__backtick_eq_eq_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_MSetIterator_cq__backtick_eq_eq_fun_num = 0;

#endif /* f_Xapian_MSetIterator_cq__backtick_eq_eq_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_MSetIterator_cq__backtick_eq_eq(INT32 args) {
#line 2580 "xapian.ccmod"
struct svalue * arg;
#line 2580 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("`==",args,1);
#line 2580 "xapian.ccmod"
arg=Pike_sp+0-1; dmalloc_touch_svalue(Pike_sp+0-1);
{
struct object * o;
struct Xapian_MSetIterator_struct * msis; 
MSetIterator *mseti;
MSetIterator *msetb;
if(TYPEOF(*arg)!= T_OBJECT) {do { INT_TYPE ret_=((0)); pop_stack(); push_int(ret_); return; }while(0);}
o = arg->u.object;
mseti = (MSetIterator*)THIS->object_data->mseti;
msis = OBJ2_XAPIAN_MSETITERATOR(o);
if(!msis) {do { INT_TYPE ret_=((0)); pop_stack(); push_int(ret_); return; }while(0);}

msetb = msis->object_data->mseti;
if(*mseti == *msetb) {do { INT_TYPE ret_=((1)); pop_stack(); push_int(ret_); return; }while(0);}
else {do { INT_TYPE ret_=((0)); pop_stack(); push_int(ret_); return; }while(0);}
}

}

#undef internal_init_Xapian_MSetIterator_defined
#define internal_init_Xapian_MSetIterator_defined

#undef Xapian_MSetIterator_event_handler_defined
#define Xapian_MSetIterator_event_handler_defined
static void init_Xapian_MSetIterator_struct(void)
#line 2598 "xapian.ccmod"
{
XAPIAN_MSETITERATOR_OBJECT_DATA * dta = 
(XAPIAN_MSETITERATOR_OBJECT_DATA*)malloc(sizeof(XAPIAN_MSETITERATOR_OBJECT_DATA));
if (!dta)
Pike_error("init_sample: Out of memory!\n");

dta->mseti = NULL;
THIS->object_data = dta;
}


#undef Xapian_MSetIterator_gc_live_obj
#define Xapian_MSetIterator_gc_live_obj

#undef internal_exit_Xapian_MSetIterator_defined
#define internal_exit_Xapian_MSetIterator_defined

#undef Xapian_MSetIterator_event_handler_defined
#define Xapian_MSetIterator_event_handler_defined
static void exit_Xapian_MSetIterator_struct(void)
#line 2609 "xapian.ccmod"
{
if(THIS->object_data)
{
MSetIterator *mseti;
mseti = THIS->object_data->mseti;
if(mseti) delete mseti;
free(THIS->object_data);
}
}


#ifdef Xapian_MSetIterator_event_handler_defined
static void Xapian_MSetIterator_event_handler(int ev) {
  switch(ev) {

#ifdef internal_init_Xapian_MSetIterator_defined
  case PROG_EVENT_INIT: init_Xapian_MSetIterator_struct(); break;

#endif /* internal_init_Xapian_MSetIterator_defined */

#ifdef internal_exit_Xapian_MSetIterator_defined
  case PROG_EVENT_EXIT: exit_Xapian_MSetIterator_struct(); break;

#endif /* internal_exit_Xapian_MSetIterator_defined */
  default: break; 
  }
}

#endif /* Xapian_MSetIterator_event_handler_defined */
/*!  @endclass
*/

/*! @class ESetIterator
*/


#undef class_Xapian_ESetIterator_defined
#define class_Xapian_ESetIterator_defined
DEFAULT_CMOD_STORAGE struct program *Xapian_ESetIterator_program=NULL;

#ifdef Xapian_ESetIterator_program_fun_num_used
DEFAULT_CMOD_STORAGE int Xapian_ESetIterator_program_fun_num=-1;
#endif /* Xapian_ESetIterator_program_fun_num_used */

#undef var_current_index_Xapian_ESetIterator_defined
#define var_current_index_Xapian_ESetIterator_defined

#undef var_esete_Xapian_ESetIterator_defined
#define var_esete_Xapian_ESetIterator_defined

#undef var_object_data_Xapian_ESetIterator_defined
#define var_object_data_Xapian_ESetIterator_defined

#undef THIS
#define THIS ((struct Xapian_ESetIterator_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef THIS_XAPIAN_ESETITERATOR
#define THIS_XAPIAN_ESETITERATOR ((struct Xapian_ESetIterator_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef OBJ2_XAPIAN_ESETITERATOR
#define OBJ2_XAPIAN_ESETITERATOR(o) ((struct Xapian_ESetIterator_struct *)(o->storage+Xapian_ESetIterator_storage_offset))

#undef GET_XAPIAN_ESETITERATOR_STORAGE
#define GET_XAPIAN_ESETITERATOR_STORAGE(o) ((struct Xapian_ESetIterator_struct *)(o->storage+Xapian_ESetIterator_storage_offset)
static ptrdiff_t Xapian_ESetIterator_storage_offset;
struct Xapian_ESetIterator_struct {

#ifdef var_current_index_Xapian_ESetIterator_defined
#line 2629 "xapian.ccmod"
int current_index;
#endif /* var_current_index_Xapian_ESetIterator_defined */

#ifdef var_esete_Xapian_ESetIterator_defined
#line 2630 "xapian.ccmod"
ESetIterator * esete;
#endif /* var_esete_Xapian_ESetIterator_defined */

#ifdef var_object_data_Xapian_ESetIterator_defined
#line 2631 "xapian.ccmod"
XAPIAN_ESETITERATOR_OBJECT_DATA *object_data;
#endif /* var_object_data_Xapian_ESetIterator_defined */
};
#ifdef PIKE_DEBUG
/* Ensure the struct is used in a variable declaration, or else gdb might not see it. */
static struct Xapian_ESetIterator_struct *Xapian_ESetIterator_gdb_dummy_ptr;
#endif
#define f_Xapian_ESetIterator_get_term_defined

#ifdef f_Xapian_ESetIterator_get_term_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ESetIterator_get_term_fun_num = 0;

#endif /* f_Xapian_ESetIterator_get_term_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ESetIterator_get_term(INT32 args) {
#line 2633 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_term",args,0);
{
ESetIterator *eseti;
string i;
eseti = (ESetIterator*)THIS->object_data->eseti;
i = (*(*eseti));
push_text(i.c_str());
}

}
#define f_Xapian_ESetIterator_get_weight_defined

#ifdef f_Xapian_ESetIterator_get_weight_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ESetIterator_get_weight_fun_num = 0;

#endif /* f_Xapian_ESetIterator_get_weight_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ESetIterator_get_weight(INT32 args) {
#line 2642 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_weight",args,0);
{
ESetIterator *eseti;
weight i;
eseti = (ESetIterator*)THIS->object_data->eseti;
i = eseti->get_weight();
push_float((FLOAT_TYPE)i);
} 

}
#define f_Xapian_ESetIterator_index_defined

#ifdef f_Xapian_ESetIterator_index_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ESetIterator_index_fun_num = 0;

#endif /* f_Xapian_ESetIterator_index_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ESetIterator_index(INT32 args) {
#line 2651 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("index",args,0);
{
push_int(THIS->current_index);
}

}
#define f_Xapian_ESetIterator_value_defined

#ifdef f_Xapian_ESetIterator_value_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ESetIterator_value_fun_num = 0;

#endif /* f_Xapian_ESetIterator_value_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ESetIterator_value(INT32 args) {
#line 2656 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("value",args,0);
{
push_object(this_object());
}

}
#define f_Xapian_ESetIterator_next_defined

#ifdef f_Xapian_ESetIterator_next_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ESetIterator_next_fun_num = 0;

#endif /* f_Xapian_ESetIterator_next_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ESetIterator_next(INT32 args) {
#line 2661 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("next",args,0);
{
ESetIterator *eseti;
eseti = THIS->object_data->eseti;
ESetIterator *eseti2;

(*eseti)++;

THIS->current_index++;
if(*eseti == *(THIS->esete)) {push_int(0); return;}
push_int(1); 
}

}
#line 2674 "xapian.ccmod"
/*
  PIKEFUN object prev()
  {
    ESetIterator  *eseti;
    eseti = THIS->object_data->eseti;
    ESetIterator *eseti2;

    struct object * o;

    eseti2 = new ESetIterator((*eseti)--);

    o = fast_clone_object(Xapian_ESetIterator_program);

    OBJ2_XAPIAN_ESETITERATOR(o)->object_data->eseti = eseti2;

    push_object(o);    
  }
*/

#define f_Xapian_ESetIterator_cq__backtick_add_eq_defined

#ifdef f_Xapian_ESetIterator_cq__backtick_add_eq_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ESetIterator_cq__backtick_add_eq_fun_num = 0;

#endif /* f_Xapian_ESetIterator_cq__backtick_add_eq_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ESetIterator_cq__backtick_add_eq(INT32 args) {
#line 2693 "xapian.ccmod"
INT_TYPE i;
#line 2693 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("`+=",args,1);
#line 2693 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("`+=",1,"int");
#line 2693 "xapian.ccmod"
i=Pike_sp[0-1].u.integer;
{
ESetIterator *eseti;
eseti = THIS->object_data->eseti;

for(int x = 0; x < i; x++)
{
(*eseti)++;
if(*eseti == *(THIS->esete)) {
pop_stack(); push_int(0); return;}
}
THIS->current_index++;
pop_stack();
push_object(this_object());
}

}
#define f_Xapian_ESetIterator_cq__backtick_21_defined

#ifdef f_Xapian_ESetIterator_cq__backtick_21_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ESetIterator_cq__backtick_21_fun_num = 0;

#endif /* f_Xapian_ESetIterator_cq__backtick_21_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ESetIterator_cq__backtick_21(INT32 args) {
#line 2709 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("`!",args,0);
{
ESetIterator *eseti;
eseti = THIS->object_data->eseti;
if(*eseti == *(THIS->esete)) { push_int(1); }
else
push_int(0);
}

}
#define f_Xapian_ESetIterator_cq__backtick_eq_eq_defined

#ifdef f_Xapian_ESetIterator_cq__backtick_eq_eq_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ESetIterator_cq__backtick_eq_eq_fun_num = 0;

#endif /* f_Xapian_ESetIterator_cq__backtick_eq_eq_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ESetIterator_cq__backtick_eq_eq(INT32 args) {
#line 2718 "xapian.ccmod"
struct svalue * arg;
#line 2718 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("`==",args,1);
#line 2718 "xapian.ccmod"
arg=Pike_sp+0-1; dmalloc_touch_svalue(Pike_sp+0-1);
{
struct object * o;
ESetIterator *eseti;
ESetIterator *esetb;
struct Xapian_ESetIterator_struct * esis; 

if(TYPEOF(*arg)!= T_OBJECT) do { INT_TYPE ret_=((0)); pop_stack(); push_int(ret_); return; }while(0);
#line 2726 "xapian.ccmod"
o = arg->u.object;
eseti = (ESetIterator*)THIS->object_data->eseti;

esis = OBJ2_XAPIAN_ESETITERATOR(o);
if(!esis) do { INT_TYPE ret_=((0)); pop_stack(); push_int(ret_); return; }while(0);
#line 2732 "xapian.ccmod"
esetb = esis->object_data->eseti;
if(eseti == esetb) do { INT_TYPE ret_=((1)); pop_stack(); push_int(ret_); return; }while(0);
#line 2734 "xapian.ccmod"
else do { INT_TYPE ret_=((0)); pop_stack(); push_int(ret_); return; }while(0);
#line 2735 "xapian.ccmod"
}

}

#undef internal_init_Xapian_ESetIterator_defined
#define internal_init_Xapian_ESetIterator_defined

#undef Xapian_ESetIterator_event_handler_defined
#define Xapian_ESetIterator_event_handler_defined
static void init_Xapian_ESetIterator_struct(void)
#line 2738 "xapian.ccmod"
{
XAPIAN_ESETITERATOR_OBJECT_DATA * dta = 
(XAPIAN_ESETITERATOR_OBJECT_DATA*)malloc(sizeof(XAPIAN_ESETITERATOR_OBJECT_DATA));
if (!dta)
Pike_error("init_sample: Out of memory!\n");

dta->eseti = NULL;
THIS->object_data = dta;
}


#undef Xapian_ESetIterator_gc_live_obj
#define Xapian_ESetIterator_gc_live_obj

#undef internal_exit_Xapian_ESetIterator_defined
#define internal_exit_Xapian_ESetIterator_defined

#undef Xapian_ESetIterator_event_handler_defined
#define Xapian_ESetIterator_event_handler_defined
static void exit_Xapian_ESetIterator_struct(void)
#line 2749 "xapian.ccmod"
{
if(THIS->object_data)
{
ESetIterator *eseti;
eseti = THIS->object_data->eseti;
if(eseti) delete eseti;
free(THIS->object_data);
}
}


#ifdef Xapian_ESetIterator_event_handler_defined
static void Xapian_ESetIterator_event_handler(int ev) {
  switch(ev) {

#ifdef internal_init_Xapian_ESetIterator_defined
  case PROG_EVENT_INIT: init_Xapian_ESetIterator_struct(); break;

#endif /* internal_init_Xapian_ESetIterator_defined */

#ifdef internal_exit_Xapian_ESetIterator_defined
  case PROG_EVENT_EXIT: exit_Xapian_ESetIterator_struct(); break;

#endif /* internal_exit_Xapian_ESetIterator_defined */
  default: break; 
  }
}

#endif /* Xapian_ESetIterator_event_handler_defined */
/*!  @endclass
*/

/*! @class MSet
*/


#undef class_Xapian_MSet_defined
#define class_Xapian_MSet_defined
DEFAULT_CMOD_STORAGE struct program *Xapian_MSet_program=NULL;

#ifdef Xapian_MSet_program_fun_num_used
DEFAULT_CMOD_STORAGE int Xapian_MSet_program_fun_num=-1;
#endif /* Xapian_MSet_program_fun_num_used */

#undef var_object_data_Xapian_MSet_defined
#define var_object_data_Xapian_MSet_defined

#undef THIS
#define THIS ((struct Xapian_MSet_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef THIS_XAPIAN_MSET
#define THIS_XAPIAN_MSET ((struct Xapian_MSet_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef OBJ2_XAPIAN_MSET
#define OBJ2_XAPIAN_MSET(o) ((struct Xapian_MSet_struct *)(o->storage+Xapian_MSet_storage_offset))

#undef GET_XAPIAN_MSET_STORAGE
#define GET_XAPIAN_MSET_STORAGE(o) ((struct Xapian_MSet_struct *)(o->storage+Xapian_MSet_storage_offset)
static ptrdiff_t Xapian_MSet_storage_offset;
struct Xapian_MSet_struct {

#ifdef var_object_data_Xapian_MSet_defined
#line 2769 "xapian.ccmod"
XAPIAN_MSET_OBJECT_DATA *object_data;
#endif /* var_object_data_Xapian_MSet_defined */
};
#ifdef PIKE_DEBUG
/* Ensure the struct is used in a variable declaration, or else gdb might not see it. */
static struct Xapian_MSet_struct *Xapian_MSet_gdb_dummy_ptr;
#endif

#undef internal_init_Xapian_MSet_defined
#define internal_init_Xapian_MSet_defined

#undef Xapian_MSet_event_handler_defined
#define Xapian_MSet_event_handler_defined
static void init_Xapian_MSet_struct(void)
#line 2772 "xapian.ccmod"
{
XAPIAN_MSET_OBJECT_DATA * dta = 
(XAPIAN_MSET_OBJECT_DATA*)malloc(sizeof(XAPIAN_MSET_OBJECT_DATA));
/*printf("allocated mset data.\n"); */
if (!dta)
Pike_error("init_sample: Out of memory!\n");

dta->mset = NULL;
THIS->object_data = dta;
}


#undef Xapian_MSet_gc_live_obj
#define Xapian_MSet_gc_live_obj

#undef internal_exit_Xapian_MSet_defined
#define internal_exit_Xapian_MSet_defined

#undef Xapian_MSet_event_handler_defined
#define Xapian_MSet_event_handler_defined
static void exit_Xapian_MSet_struct(void)
#line 2784 "xapian.ccmod"
{
if(THIS->object_data)
{
MSet *mset;
mset = THIS->object_data->mset;
if(mset) delete mset;
free(THIS->object_data);
}
}


/*  MSet.void create() */
/*! @decl void create()
 *!
 *!  
 *!
 */
#define f_Xapian_MSet_create_defined

#ifdef f_Xapian_MSet_create_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_MSet_create_fun_num = 0;

#endif /* f_Xapian_MSet_create_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_MSet_create(INT32 args) {
#line 2801 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("create",args,0);
{
try
{
MSet * mset = new MSet();

pop_n_elems(args);

THIS->object_data->mset = mset;
}

catch(...) 
{
Pike_error("an error occurred!\n");
}
}

}
#line 2818 "xapian.ccmod"
/*  MSet.object begin() */
/*! @decl object begin()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_MSet_begin_defined

#ifdef f_Xapian_MSet_begin_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_MSet_begin_fun_num = 0;

#endif /* f_Xapian_MSet_begin_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_MSet_begin(INT32 args) {
#line 2826 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("begin",args,0);
{
MSet *mset;
mset = THIS->object_data->mset;

MSetIterator mseti;
MSetIterator *mseti2;
struct object * o;

mseti = mset->begin();

mseti2 = new MSetIterator(mseti);

o = fast_clone_object(Xapian_MSetIterator_program);

OBJ2_XAPIAN_MSETITERATOR(o)->object_data->mseti = mseti2;

push_object(o); 
}

}
#define f_Xapian_MSet_cq__get_iterator_defined

#ifdef f_Xapian_MSet_cq__get_iterator_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_MSet_cq__get_iterator_fun_num = 0;

#endif /* f_Xapian_MSet_cq__get_iterator_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_MSet_cq__get_iterator(INT32 args) {
#line 2846 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("_get_iterator",args,0);
{
MSet *mset;
mset = THIS->object_data->mset;

MSetIterator mseti;
MSetIterator *mseti2;
struct object * o;

mseti = mset->begin();

mseti2 = new MSetIterator(mseti);

o = fast_clone_object(Xapian_MSetIterator_program);

OBJ2_XAPIAN_MSETITERATOR(o)->object_data->mseti = mseti2;
OBJ2_XAPIAN_MSETITERATOR(o)->msete = new MSetIterator(mset->end());

push_object(o); 
}

}
#line 2867 "xapian.ccmod"
/*  MSet.object end() */
/*! @decl object end()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_MSet_end_defined

#ifdef f_Xapian_MSet_end_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_MSet_end_fun_num = 0;

#endif /* f_Xapian_MSet_end_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_MSet_end(INT32 args) {
#line 2875 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("end",args,0);
{
MSet *mset;
mset = THIS->object_data->mset;

MSetIterator mseti;
MSetIterator *mseti2;
struct object * o;

mseti = mset->end();

mseti2 = new MSetIterator(mseti);
o = fast_clone_object(Xapian_MSetIterator_program);

OBJ2_XAPIAN_MSETITERATOR(o)->object_data->mseti = mseti2;

push_object(o); 
}

}
#line 2894 "xapian.ccmod"
/*  MSet.object back() */
/*! @decl object back()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_MSet_back_defined

#ifdef f_Xapian_MSet_back_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_MSet_back_fun_num = 0;

#endif /* f_Xapian_MSet_back_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_MSet_back(INT32 args) {
#line 2902 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("back",args,0);
{
MSet *mset;
mset = THIS->object_data->mset;

MSetIterator mseti;
MSetIterator *mseti2;
struct object * o;

mseti = mset->back();

mseti2 = new MSetIterator(mseti);

o = fast_clone_object(Xapian_MSetIterator_program);

OBJ2_XAPIAN_MSETITERATOR(o)->object_data->mseti = mseti2;

push_object(o); 
}

}
#line 2922 "xapian.ccmod"
/*  MSet.void fetch() */
/*! @decl void fetch()
 *!
 *!  
 *!
 */
#define f_Xapian_MSet_fetch_defined

#ifdef f_Xapian_MSet_fetch_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_MSet_fetch_fun_num = 0;

#endif /* f_Xapian_MSet_fetch_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_MSet_fetch(INT32 args) {
#line 2928 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("fetch",args,0);
{
MSet *mset;
mset = THIS->object_data->mset;

mset->fetch();
}

}
#line 2936 "xapian.ccmod"
/*  MSet.int size() */
/*! @decl int size()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_MSet_size_defined

#ifdef f_Xapian_MSet_size_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_MSet_size_fun_num = 0;

#endif /* f_Xapian_MSet_size_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_MSet_size(INT32 args) {
#line 2944 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("size",args,0);
{
MSet *mset;
mset = THIS->object_data->mset;
doccount i;

i = mset->size();

push_int(i);
}

}
#line 2955 "xapian.ccmod"
/*  MSet.int get_matches_estimated() */
/*! @decl int get_matches_estimated()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_MSet_get_matches_estimated_defined

#ifdef f_Xapian_MSet_get_matches_estimated_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_MSet_get_matches_estimated_fun_num = 0;

#endif /* f_Xapian_MSet_get_matches_estimated_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_MSet_get_matches_estimated(INT32 args) {
#line 2963 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_matches_estimated",args,0);
{
MSet *mset;
mset = THIS->object_data->mset;
doccount i;

i = mset->get_matches_estimated();

push_int(i);
}

}
#line 2974 "xapian.ccmod"
/*  MSet.int get_matches_upper_bound() */
/*! @decl int get_matches_upper_bound()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_MSet_get_matches_upper_bound_defined

#ifdef f_Xapian_MSet_get_matches_upper_bound_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_MSet_get_matches_upper_bound_fun_num = 0;

#endif /* f_Xapian_MSet_get_matches_upper_bound_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_MSet_get_matches_upper_bound(INT32 args) {
#line 2982 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_matches_upper_bound",args,0);
{
MSet *mset;
mset = THIS->object_data->mset;
doccount i;

i = mset->get_matches_upper_bound();

push_int(i);
}

}
#line 2993 "xapian.ccmod"
/*  MSet.int get_firstitem() */
/*! @decl int get_firstitem()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_MSet_get_firstitem_defined

#ifdef f_Xapian_MSet_get_firstitem_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_MSet_get_firstitem_fun_num = 0;

#endif /* f_Xapian_MSet_get_firstitem_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_MSet_get_firstitem(INT32 args) {
#line 3001 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_firstitem",args,0);
{
MSet *mset;
mset = THIS->object_data->mset;
doccount i;

i = mset->get_firstitem();

push_int(i);
}

}
#line 3012 "xapian.ccmod"
/*  MSet.int get_matches_lower_bound() */
/*! @decl int get_matches_lower_bound()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_MSet_get_matches_lower_bound_defined

#ifdef f_Xapian_MSet_get_matches_lower_bound_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_MSet_get_matches_lower_bound_fun_num = 0;

#endif /* f_Xapian_MSet_get_matches_lower_bound_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_MSet_get_matches_lower_bound(INT32 args) {
#line 3020 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_matches_lower_bound",args,0);
{
MSet *mset;
mset = THIS->object_data->mset;
doccount i;

i = mset->get_matches_lower_bound();

push_int(i);
}

}
#line 3031 "xapian.ccmod"
/*  MSet.string get_description() */
/*! @decl string get_description()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_MSet_get_description_defined

#ifdef f_Xapian_MSet_get_description_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_MSet_get_description_fun_num = 0;

#endif /* f_Xapian_MSet_get_description_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_MSet_get_description(INT32 args) {
#line 3039 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_description",args,0);
{
MSet *mset;
mset = THIS->object_data->mset;

string str = mset->get_description();

push_text(str.c_str());
}

}
#define f_Xapian_MSet_cq__sprintf_defined

#ifdef f_Xapian_MSet_cq__sprintf_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_MSet_cq__sprintf_fun_num = 0;

#endif /* f_Xapian_MSet_cq__sprintf_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_MSet_cq__sprintf(INT32 args) {
#line 3049 "xapian.ccmod"
INT_TYPE conversion_type;
#line 3049 "xapian.ccmod"
struct mapping * params;
#line 3049 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 3049 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 3049 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 3049 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 3049 "xapian.ccmod"
debug_malloc_pass(params=Pike_sp[1-2].u.mapping);
{
MSet *mset;
if(THIS && THIS->object_data && conversion_type == 'O')
{
mset = THIS->object_data->mset;

string str = mset->get_description();
pop_n_elems(args);
push_text(str.c_str());
}
else
{
pop_n_elems(args);
push_int(0);
}
}



}

#ifdef Xapian_MSet_event_handler_defined
static void Xapian_MSet_event_handler(int ev) {
  switch(ev) {

#ifdef internal_init_Xapian_MSet_defined
  case PROG_EVENT_INIT: init_Xapian_MSet_struct(); break;

#endif /* internal_init_Xapian_MSet_defined */

#ifdef internal_exit_Xapian_MSet_defined
  case PROG_EVENT_EXIT: exit_Xapian_MSet_struct(); break;

#endif /* internal_exit_Xapian_MSet_defined */
  default: break; 
  }
}

#endif /* Xapian_MSet_event_handler_defined */
/*!  @endclass
*/

/*! @class RSet
*/


#undef class_Xapian_RSet_defined
#define class_Xapian_RSet_defined
DEFAULT_CMOD_STORAGE struct program *Xapian_RSet_program=NULL;

#ifdef Xapian_RSet_program_fun_num_used
DEFAULT_CMOD_STORAGE int Xapian_RSet_program_fun_num=-1;
#endif /* Xapian_RSet_program_fun_num_used */

#undef var_object_data_Xapian_RSet_defined
#define var_object_data_Xapian_RSet_defined

#undef THIS
#define THIS ((struct Xapian_RSet_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef THIS_XAPIAN_RSET
#define THIS_XAPIAN_RSET ((struct Xapian_RSet_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef OBJ2_XAPIAN_RSET
#define OBJ2_XAPIAN_RSET(o) ((struct Xapian_RSet_struct *)(o->storage+Xapian_RSet_storage_offset))

#undef GET_XAPIAN_RSET_STORAGE
#define GET_XAPIAN_RSET_STORAGE(o) ((struct Xapian_RSet_struct *)(o->storage+Xapian_RSet_storage_offset)
static ptrdiff_t Xapian_RSet_storage_offset;
struct Xapian_RSet_struct {

#ifdef var_object_data_Xapian_RSet_defined
#line 3079 "xapian.ccmod"
XAPIAN_RSET_OBJECT_DATA *object_data;
#endif /* var_object_data_Xapian_RSet_defined */
};
#ifdef PIKE_DEBUG
/* Ensure the struct is used in a variable declaration, or else gdb might not see it. */
static struct Xapian_RSet_struct *Xapian_RSet_gdb_dummy_ptr;
#endif

#undef internal_init_Xapian_RSet_defined
#define internal_init_Xapian_RSet_defined

#undef Xapian_RSet_event_handler_defined
#define Xapian_RSet_event_handler_defined
static void init_Xapian_RSet_struct(void)
#line 3082 "xapian.ccmod"
{
XAPIAN_RSET_OBJECT_DATA * dta = 
(XAPIAN_RSET_OBJECT_DATA*)malloc(sizeof(XAPIAN_RSET_OBJECT_DATA));
/*printf("allocated eset data.\n"); */
if (!dta)
Pike_error("init_sample: Out of memory!\n");

dta->rset = NULL;
THIS->object_data = dta;
}


#undef Xapian_RSet_gc_live_obj
#define Xapian_RSet_gc_live_obj

#undef internal_exit_Xapian_RSet_defined
#define internal_exit_Xapian_RSet_defined

#undef Xapian_RSet_event_handler_defined
#define Xapian_RSet_event_handler_defined
static void exit_Xapian_RSet_struct(void)
#line 3094 "xapian.ccmod"
{
if(THIS->object_data)
{
RSet *rset;
rset = THIS->object_data->rset;
if(rset) delete rset;
free(THIS->object_data);
}
}

/*  RSet.void create() */
/*! @decl void create()
 *!
 *!  
 *!
 */
#define f_Xapian_RSet_create_defined

#ifdef f_Xapian_RSet_create_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_RSet_create_fun_num = 0;

#endif /* f_Xapian_RSet_create_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_RSet_create(INT32 args) {
#line 3110 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("create",args,0);
{
try
{
RSet * rset = new RSet();

pop_n_elems(args);

THIS->object_data->rset = rset;
}

catch(...) 
{
Pike_error("an error occurred!\n");
}
}

}
#line 3127 "xapian.ccmod"
/*  RSet.int size() */
/*! @decl int size()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_RSet_size_defined

#ifdef f_Xapian_RSet_size_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_RSet_size_fun_num = 0;

#endif /* f_Xapian_RSet_size_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_RSet_size(INT32 args) {
#line 3135 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("size",args,0);
{
RSet *rset;
rset = THIS->object_data->rset;
doccount i;

i = rset->size();

push_int(i);
}

}
#line 3146 "xapian.ccmod"
/*  RSet.int empty() */
/*! @decl int empty()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_RSet_empty_defined

#ifdef f_Xapian_RSet_empty_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_RSet_empty_fun_num = 0;

#endif /* f_Xapian_RSet_empty_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_RSet_empty(INT32 args) {
#line 3154 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("empty",args,0);
{
RSet *rset;
rset = THIS->object_data->rset;
bool i;

i = rset->empty();

push_int(i?1:0);
}

}
#line 3165 "xapian.ccmod"
/*  RSet.void add_document(int docid) */
/*! @decl void add_document(int docid)
 *!
 *!  
 *! @param docid
 *!  
* !
 *!
 */
#define f_Xapian_RSet_add_document_1_defined

#ifdef f_Xapian_RSet_add_document_1_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_RSet_add_document_1_fun_num = 0;

#endif /* f_Xapian_RSet_add_document_1_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_RSet_add_document_1(INT32 args) {
#line 3174 "xapian.ccmod"
INT_TYPE docid;
#line 3174 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("add_document",args,1);
#line 3174 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("add_document",1,"int");
#line 3174 "xapian.ccmod"
docid=Pike_sp[0-1].u.integer;
{
RSet *rset;
rset = THIS->object_data->rset;

rset->add_document((Xapian::docid)docid);

pop_n_elems(args);
}

}
#line 3184 "xapian.ccmod"
/*  RSet.void add_document(object iterator) */
/*! @decl void add_document(object iterator)
 *!
 *!  
 *! @param iterator
 *!  
* !
 *!
 */
#define f_Xapian_RSet_add_document_2_defined

#ifdef f_Xapian_RSet_add_document_2_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_RSet_add_document_2_fun_num = 0;

#endif /* f_Xapian_RSet_add_document_2_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_RSet_add_document_2(INT32 args) {
#line 3193 "xapian.ccmod"
struct object * iterator;
#line 3193 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("add_document",args,1);
#line 3193 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("add_document",1,"object");
#line 3193 "xapian.ccmod"
debug_malloc_pass(iterator=Pike_sp[0-1].u.object);
{
RSet *rset;
rset = THIS->object_data->rset;

MSetIterator * i;

i = OBJ2_XAPIAN_MSETITERATOR(iterator)->object_data->mseti;

rset->add_document(*i);

pop_n_elems(args);
}

}

#if defined(f_Xapian_RSet_add_document_1_defined) || defined(f_Xapian_RSet_add_document_2_defined)
#define f_Xapian_RSet_add_document_defined

#ifdef Xapian_RSet_f_Xapian_RSet_add_document_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t Xapian_RSet_f_Xapian_RSet_add_document_fun_num = 0;

#endif /* Xapian_RSet_f_Xapian_RSet_add_document_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_RSet_add_document(INT32 args) {
  if(args < 1) wrong_number_of_args_error("add_document",args,1);
  switch(TYPEOF(Pike_sp[0-args])) {
   case PIKE_T_OBJECT:

#ifdef f_Xapian_RSet_add_document_2_defined
    f_Xapian_RSet_add_document_2(args);
    return;

#endif /* f_Xapian_RSet_add_document_2_defined */
    break;
   case PIKE_T_INT:

#ifdef f_Xapian_RSet_add_document_1_defined
    f_Xapian_RSet_add_document_1(args);
    return;

#endif /* f_Xapian_RSet_add_document_1_defined */
    break;
   default:
    SIMPLE_BAD_ARG_ERROR("add_document",1,"object|int");
  }
}

#endif /* f_Xapian_RSet_add_document_1_defined, f_Xapian_RSet_add_document_2_defined */
#line 3207 "xapian.ccmod"
/*  RSet.void remove_document(int docid) */
/*! @decl void remove_document(int docid)
 *!
 *!  
 *! @param docid
 *!  
* !
 *!
 */
#define f_Xapian_RSet_remove_document_1_defined

#ifdef f_Xapian_RSet_remove_document_1_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_RSet_remove_document_1_fun_num = 0;

#endif /* f_Xapian_RSet_remove_document_1_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_RSet_remove_document_1(INT32 args) {
#line 3216 "xapian.ccmod"
INT_TYPE docid;
#line 3216 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("remove_document",args,1);
#line 3216 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("remove_document",1,"int");
#line 3216 "xapian.ccmod"
docid=Pike_sp[0-1].u.integer;
{
RSet *rset;
rset = THIS->object_data->rset;

rset->remove_document((Xapian::docid)docid);

pop_n_elems(args);
}

}
#line 3226 "xapian.ccmod"
/*  RSet.void remove_document(object iterator) */
/*! @decl void remove_document(object iterator)
 *!
 *!  
 *! @param iterator
 *!  
* !
 *!
 */
#define f_Xapian_RSet_remove_document_2_defined

#ifdef f_Xapian_RSet_remove_document_2_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_RSet_remove_document_2_fun_num = 0;

#endif /* f_Xapian_RSet_remove_document_2_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_RSet_remove_document_2(INT32 args) {
#line 3235 "xapian.ccmod"
struct object * iterator;
#line 3235 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("remove_document",args,1);
#line 3235 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("remove_document",1,"object");
#line 3235 "xapian.ccmod"
debug_malloc_pass(iterator=Pike_sp[0-1].u.object);
{
RSet *rset;
rset = THIS->object_data->rset;

MSetIterator * i;

i = OBJ2_XAPIAN_MSETITERATOR(iterator)->object_data->mseti;

rset->remove_document(*i);

pop_n_elems(args);
}

}

#if defined(f_Xapian_RSet_remove_document_1_defined) || defined(f_Xapian_RSet_remove_document_2_defined)
#define f_Xapian_RSet_remove_document_defined

#ifdef Xapian_RSet_f_Xapian_RSet_remove_document_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t Xapian_RSet_f_Xapian_RSet_remove_document_fun_num = 0;

#endif /* Xapian_RSet_f_Xapian_RSet_remove_document_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_RSet_remove_document(INT32 args) {
  if(args < 1) wrong_number_of_args_error("remove_document",args,1);
  switch(TYPEOF(Pike_sp[0-args])) {
   case PIKE_T_OBJECT:

#ifdef f_Xapian_RSet_remove_document_2_defined
    f_Xapian_RSet_remove_document_2(args);
    return;

#endif /* f_Xapian_RSet_remove_document_2_defined */
    break;
   case PIKE_T_INT:

#ifdef f_Xapian_RSet_remove_document_1_defined
    f_Xapian_RSet_remove_document_1(args);
    return;

#endif /* f_Xapian_RSet_remove_document_1_defined */
    break;
   default:
    SIMPLE_BAD_ARG_ERROR("remove_document",1,"object|int");
  }
}

#endif /* f_Xapian_RSet_remove_document_1_defined, f_Xapian_RSet_remove_document_2_defined */
#line 3249 "xapian.ccmod"
/*  RSet.int contains(int docid) */
/*! @decl int contains(int docid)
 *!
 *!  
 *! @param docid
 *!  
* !
 *! @returns
 *!  
 *!
 */
#define f_Xapian_RSet_contains_1_defined

#ifdef f_Xapian_RSet_contains_1_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_RSet_contains_1_fun_num = 0;

#endif /* f_Xapian_RSet_contains_1_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_RSet_contains_1(INT32 args) {
#line 3260 "xapian.ccmod"
INT_TYPE docid;
#line 3260 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("contains",args,1);
#line 3260 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("contains",1,"int");
#line 3260 "xapian.ccmod"
docid=Pike_sp[0-1].u.integer;
{
RSet *rset;
rset = THIS->object_data->rset;
bool r;

r = rset->contains((Xapian::docid)docid);

pop_n_elems(args);
push_int(r?1:0);
}

}
#line 3272 "xapian.ccmod"
/*  RSet.int contains(object iterator) */
/*! @decl int contains(object iterator)
 *!
 *!  
 *! @param iterator
 *!  
* !
 *! @returns
 *!  
 *!
 */
#define f_Xapian_RSet_contains_2_defined

#ifdef f_Xapian_RSet_contains_2_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_RSet_contains_2_fun_num = 0;

#endif /* f_Xapian_RSet_contains_2_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_RSet_contains_2(INT32 args) {
#line 3283 "xapian.ccmod"
struct object * iterator;
#line 3283 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("contains",args,1);
#line 3283 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("contains",1,"object");
#line 3283 "xapian.ccmod"
debug_malloc_pass(iterator=Pike_sp[0-1].u.object);
{
RSet *rset;
rset = THIS->object_data->rset;
bool r;
MSetIterator * i;

i = OBJ2_XAPIAN_MSETITERATOR(iterator)->object_data->mseti;

r = rset->contains(*i);

pop_n_elems(args);

push_int(r?1:0);
}

}

#if defined(f_Xapian_RSet_contains_1_defined) || defined(f_Xapian_RSet_contains_2_defined)
#define f_Xapian_RSet_contains_defined

#ifdef Xapian_RSet_f_Xapian_RSet_contains_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t Xapian_RSet_f_Xapian_RSet_contains_fun_num = 0;

#endif /* Xapian_RSet_f_Xapian_RSet_contains_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_RSet_contains(INT32 args) {
  if(args < 1) wrong_number_of_args_error("contains",args,1);
  switch(TYPEOF(Pike_sp[0-args])) {
   case PIKE_T_OBJECT:

#ifdef f_Xapian_RSet_contains_2_defined
    f_Xapian_RSet_contains_2(args);
    return;

#endif /* f_Xapian_RSet_contains_2_defined */
    break;
   case PIKE_T_INT:

#ifdef f_Xapian_RSet_contains_1_defined
    f_Xapian_RSet_contains_1(args);
    return;

#endif /* f_Xapian_RSet_contains_1_defined */
    break;
   default:
    SIMPLE_BAD_ARG_ERROR("contains",1,"object|int");
  }
}

#endif /* f_Xapian_RSet_contains_1_defined, f_Xapian_RSet_contains_2_defined */
#line 3299 "xapian.ccmod"
/*  RSet.string get_description() */
/*! @decl string get_description()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_RSet_get_description_defined

#ifdef f_Xapian_RSet_get_description_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_RSet_get_description_fun_num = 0;

#endif /* f_Xapian_RSet_get_description_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_RSet_get_description(INT32 args) {
#line 3307 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_description",args,0);
{
RSet *rset;
rset = THIS->object_data->rset;

string str = rset->get_description();

push_text(str.c_str());
}

}
#define f_Xapian_RSet_cq__sprintf_defined

#ifdef f_Xapian_RSet_cq__sprintf_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_RSet_cq__sprintf_fun_num = 0;

#endif /* f_Xapian_RSet_cq__sprintf_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_RSet_cq__sprintf(INT32 args) {
#line 3317 "xapian.ccmod"
INT_TYPE conversion_type;
#line 3317 "xapian.ccmod"
struct mapping * params;
#line 3317 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 3317 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 3317 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 3317 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 3317 "xapian.ccmod"
debug_malloc_pass(params=Pike_sp[1-2].u.mapping);
{
RSet *rset;
if(THIS && THIS->object_data && conversion_type == 'O')
{
rset = THIS->object_data->rset;

string str = rset->get_description();
pop_n_elems(args);
push_text(str.c_str());
}
else
{
pop_n_elems(args);
push_int(0);
}
}


}

#ifdef Xapian_RSet_event_handler_defined
static void Xapian_RSet_event_handler(int ev) {
  switch(ev) {

#ifdef internal_init_Xapian_RSet_defined
  case PROG_EVENT_INIT: init_Xapian_RSet_struct(); break;

#endif /* internal_init_Xapian_RSet_defined */

#ifdef internal_exit_Xapian_RSet_defined
  case PROG_EVENT_EXIT: exit_Xapian_RSet_struct(); break;

#endif /* internal_exit_Xapian_RSet_defined */
  default: break; 
  }
}

#endif /* Xapian_RSet_event_handler_defined */
/*!  @endclass
*/

/*! @class ESet
*/


#undef class_Xapian_ESet_defined
#define class_Xapian_ESet_defined
DEFAULT_CMOD_STORAGE struct program *Xapian_ESet_program=NULL;

#ifdef Xapian_ESet_program_fun_num_used
DEFAULT_CMOD_STORAGE int Xapian_ESet_program_fun_num=-1;
#endif /* Xapian_ESet_program_fun_num_used */

#undef var_object_data_Xapian_ESet_defined
#define var_object_data_Xapian_ESet_defined

#undef THIS
#define THIS ((struct Xapian_ESet_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef THIS_XAPIAN_ESET
#define THIS_XAPIAN_ESET ((struct Xapian_ESet_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef OBJ2_XAPIAN_ESET
#define OBJ2_XAPIAN_ESET(o) ((struct Xapian_ESet_struct *)(o->storage+Xapian_ESet_storage_offset))

#undef GET_XAPIAN_ESET_STORAGE
#define GET_XAPIAN_ESET_STORAGE(o) ((struct Xapian_ESet_struct *)(o->storage+Xapian_ESet_storage_offset)
static ptrdiff_t Xapian_ESet_storage_offset;
struct Xapian_ESet_struct {

#ifdef var_object_data_Xapian_ESet_defined
#line 3346 "xapian.ccmod"
XAPIAN_ESET_OBJECT_DATA *object_data;
#endif /* var_object_data_Xapian_ESet_defined */
};
#ifdef PIKE_DEBUG
/* Ensure the struct is used in a variable declaration, or else gdb might not see it. */
static struct Xapian_ESet_struct *Xapian_ESet_gdb_dummy_ptr;
#endif

#undef internal_init_Xapian_ESet_defined
#define internal_init_Xapian_ESet_defined

#undef Xapian_ESet_event_handler_defined
#define Xapian_ESet_event_handler_defined
static void init_Xapian_ESet_struct(void)
#line 3349 "xapian.ccmod"
{
XAPIAN_ESET_OBJECT_DATA * dta = 
(XAPIAN_ESET_OBJECT_DATA*)malloc(sizeof(XAPIAN_ESET_OBJECT_DATA));
/*printf("allocated eset data.\n"); */
if (!dta)
Pike_error("init_sample: Out of memory!\n");

dta->eset = NULL;
THIS->object_data = dta;
}


#undef Xapian_ESet_gc_live_obj
#define Xapian_ESet_gc_live_obj

#undef internal_exit_Xapian_ESet_defined
#define internal_exit_Xapian_ESet_defined

#undef Xapian_ESet_event_handler_defined
#define Xapian_ESet_event_handler_defined
static void exit_Xapian_ESet_struct(void)
#line 3361 "xapian.ccmod"
{
if(THIS->object_data)
{
ESet *eset;
eset = THIS->object_data->eset;
if(eset) delete eset;
free(THIS->object_data);
}
}


/*  ESet.void create() */
/*! @decl void create()
 *!
 *!  
 *!
 */
#define f_Xapian_ESet_create_defined

#ifdef f_Xapian_ESet_create_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ESet_create_fun_num = 0;

#endif /* f_Xapian_ESet_create_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ESet_create(INT32 args) {
#line 3378 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("create",args,0);
{
try
{
ESet * eset = new ESet();

pop_n_elems(args);

THIS->object_data->eset = eset;
}

catch(...) 
{
Pike_error("an error occurred!\n");
}
}

}
#line 3395 "xapian.ccmod"
/*  ESet.object begin() */
/*! @decl object begin()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_ESet_begin_defined

#ifdef f_Xapian_ESet_begin_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ESet_begin_fun_num = 0;

#endif /* f_Xapian_ESet_begin_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ESet_begin(INT32 args) {
#line 3403 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("begin",args,0);
{
ESet *eset;
eset = THIS->object_data->eset;

ESetIterator eseti;
ESetIterator *eseti2;
struct object * o;

eseti = eset->begin();

eseti2 = new ESetIterator(eseti);

o = fast_clone_object(Xapian_ESetIterator_program);

OBJ2_XAPIAN_ESETITERATOR(o)->object_data->eseti = eseti2;

push_object(o); 
}

}
#line 3423 "xapian.ccmod"
/*  ESet.object end() */
/*! @decl object end()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_ESet_end_defined

#ifdef f_Xapian_ESet_end_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ESet_end_fun_num = 0;

#endif /* f_Xapian_ESet_end_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ESet_end(INT32 args) {
#line 3431 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("end",args,0);
{
ESet *eset;
eset = THIS->object_data->eset;

ESetIterator eseti;
ESetIterator *eseti2;
struct object * o;

eseti = eset->end();

eseti2 = new ESetIterator(eseti);

o = fast_clone_object(Xapian_ESetIterator_program);

OBJ2_XAPIAN_ESETITERATOR(o)->object_data->eseti = eseti2;

push_object(o); 
}

}
#line 3451 "xapian.ccmod"
/*  ESet.object back() */
/*! @decl object back()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_ESet_back_defined

#ifdef f_Xapian_ESet_back_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ESet_back_fun_num = 0;

#endif /* f_Xapian_ESet_back_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ESet_back(INT32 args) {
#line 3459 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("back",args,0);
{
ESet *eset;
eset = THIS->object_data->eset;

ESetIterator eseti;
ESetIterator *eseti2;
struct object * o;

eseti = eset->back();

eseti2 = new ESetIterator(eseti);

o = fast_clone_object(Xapian_ESetIterator_program);

OBJ2_XAPIAN_ESETITERATOR(o)->object_data->eseti = eseti2;

push_object(o); 
}

}
#line 3479 "xapian.ccmod"
/*  ESet.object `[](int i) */
/*! @decl object `[](int i)
 *!
 *!  
 *! @param i
 *!  
* !
 *! @returns
 *!  
 *!
 */
#define f_Xapian_ESet_cq__backtick_5B_5D_defined

#ifdef f_Xapian_ESet_cq__backtick_5B_5D_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ESet_cq__backtick_5B_5D_fun_num = 0;

#endif /* f_Xapian_ESet_cq__backtick_5B_5D_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ESet_cq__backtick_5B_5D(INT32 args) {
#line 3490 "xapian.ccmod"
INT_TYPE i;
#line 3490 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("`[]",args,1);
#line 3490 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("`[]",1,"int");
#line 3490 "xapian.ccmod"
i=Pike_sp[0-1].u.integer;
{
ESet *eset;
eset = THIS->object_data->eset;

ESetIterator eseti;
ESetIterator *eseti2;
struct object * o;

eseti = (*eset)[(termcount)i];

eseti2 = new ESetIterator(eseti);

o = fast_clone_object(Xapian_ESetIterator_program);

OBJ2_XAPIAN_ESETITERATOR(o)->object_data->eseti = eseti2;

push_object(o); 
}

}
#line 3510 "xapian.ccmod"
/*  ESet.int size() */
/*! @decl int size()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_ESet_size_defined

#ifdef f_Xapian_ESet_size_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ESet_size_fun_num = 0;

#endif /* f_Xapian_ESet_size_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ESet_size(INT32 args) {
#line 3518 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("size",args,0);
{
ESet *eset;
eset = THIS->object_data->eset;
termcount i;

i = eset->size();

push_int(i);
}

}
#line 3529 "xapian.ccmod"
/*  ESet.int empty() */
/*! @decl int empty()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_ESet_empty_defined

#ifdef f_Xapian_ESet_empty_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ESet_empty_fun_num = 0;

#endif /* f_Xapian_ESet_empty_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ESet_empty(INT32 args) {
#line 3537 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("empty",args,0);
{
ESet *eset;
eset = THIS->object_data->eset;
bool i;

i = eset->empty();

push_int(i?1:0);
}

}
#line 3548 "xapian.ccmod"
/*  ESet.int max_size() */
/*! @decl int max_size()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_ESet_max_size_defined

#ifdef f_Xapian_ESet_max_size_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ESet_max_size_fun_num = 0;

#endif /* f_Xapian_ESet_max_size_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ESet_max_size(INT32 args) {
#line 3556 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("max_size",args,0);
{
ESet *eset;
eset = THIS->object_data->eset;
termcount i;

i = eset->max_size();

push_int(i);
}

}
#line 3567 "xapian.ccmod"
/*  ESet.int get_ebound() */
/*! @decl int get_ebound()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_ESet_get_ebound_defined

#ifdef f_Xapian_ESet_get_ebound_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ESet_get_ebound_fun_num = 0;

#endif /* f_Xapian_ESet_get_ebound_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ESet_get_ebound(INT32 args) {
#line 3575 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_ebound",args,0);
{
ESet *eset;
eset = THIS->object_data->eset;
termcount i;

i = eset->get_ebound();

push_int(i);
}

}
#line 3586 "xapian.ccmod"
/*  ESet.string get_description() */
/*! @decl string get_description()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_ESet_get_description_defined

#ifdef f_Xapian_ESet_get_description_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ESet_get_description_fun_num = 0;

#endif /* f_Xapian_ESet_get_description_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ESet_get_description(INT32 args) {
#line 3594 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_description",args,0);
{
ESet *eset;
eset = THIS->object_data->eset;

string str = eset->get_description();

push_text(str.c_str());
}

}
#define f_Xapian_ESet_cq__sprintf_defined

#ifdef f_Xapian_ESet_cq__sprintf_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_ESet_cq__sprintf_fun_num = 0;

#endif /* f_Xapian_ESet_cq__sprintf_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_ESet_cq__sprintf(INT32 args) {
#line 3604 "xapian.ccmod"
INT_TYPE conversion_type;
#line 3604 "xapian.ccmod"
struct mapping * params;
#line 3604 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 3604 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 3604 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 3604 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 3604 "xapian.ccmod"
debug_malloc_pass(params=Pike_sp[1-2].u.mapping);
{
ESet *eset;
if(THIS && THIS->object_data && conversion_type == 'O')
{
eset = THIS->object_data->eset;

string str = eset->get_description();
pop_n_elems(args);
push_text(str.c_str());
}
else
{
pop_n_elems(args);
push_int(0);
}
}


}

#ifdef Xapian_ESet_event_handler_defined
static void Xapian_ESet_event_handler(int ev) {
  switch(ev) {

#ifdef internal_init_Xapian_ESet_defined
  case PROG_EVENT_INIT: init_Xapian_ESet_struct(); break;

#endif /* internal_init_Xapian_ESet_defined */

#ifdef internal_exit_Xapian_ESet_defined
  case PROG_EVENT_EXIT: exit_Xapian_ESet_struct(); break;

#endif /* internal_exit_Xapian_ESet_defined */
  default: break; 
  }
}

#endif /* Xapian_ESet_event_handler_defined */
/*!  @endclass
*/

/*! @class Database
*/


#undef class_Xapian_Database_defined
#define class_Xapian_Database_defined
DEFAULT_CMOD_STORAGE struct program *Xapian_Database_program=NULL;

#ifdef Xapian_Database_program_fun_num_used
DEFAULT_CMOD_STORAGE int Xapian_Database_program_fun_num=-1;
#endif /* Xapian_Database_program_fun_num_used */

#undef var_object_data_Xapian_Database_defined
#define var_object_data_Xapian_Database_defined

#undef THIS
#define THIS ((struct Xapian_Database_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef THIS_XAPIAN_DATABASE
#define THIS_XAPIAN_DATABASE ((struct Xapian_Database_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef OBJ2_XAPIAN_DATABASE
#define OBJ2_XAPIAN_DATABASE(o) ((struct Xapian_Database_struct *)(o->storage+Xapian_Database_storage_offset))

#undef GET_XAPIAN_DATABASE_STORAGE
#define GET_XAPIAN_DATABASE_STORAGE(o) ((struct Xapian_Database_struct *)(o->storage+Xapian_Database_storage_offset)
static ptrdiff_t Xapian_Database_storage_offset;
struct Xapian_Database_struct {

#ifdef var_object_data_Xapian_Database_defined
#line 3633 "xapian.ccmod"
XAPIAN_DATABASE_OBJECT_DATA *object_data;
#endif /* var_object_data_Xapian_Database_defined */
};
#ifdef PIKE_DEBUG
/* Ensure the struct is used in a variable declaration, or else gdb might not see it. */
static struct Xapian_Database_struct *Xapian_Database_gdb_dummy_ptr;
#endif
#line 3635 "xapian.ccmod"
/*  Database.void create(string path) */
/*! @decl void create(string path)
 *!
 *!  
 *! @param path
 *!  
* !
 *!
 */
#define f_Xapian_Database_create_1_defined

#ifdef f_Xapian_Database_create_1_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Database_create_1_fun_num = 0;

#endif /* f_Xapian_Database_create_1_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Database_create_1(INT32 args) {
#line 3644 "xapian.ccmod"
struct pike_string * path;
#line 3644 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("create",args,1);
#line 3644 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("create",1,"string");
#line 3644 "xapian.ccmod"
debug_malloc_pass(path=Pike_sp[0-1].u.string);
{
string str((const char *)path->str, (size_t)path->len);
try
{
Database * db = new Database(str);
THIS->object_data->database = db;
pop_n_elems(args);
}
catch(const DatabaseLockError& e)
{
pop_n_elems(args); 
Pike_error("DatabaseLockError\n");
}
catch(const DatabaseOpeningError& e) 
{
pop_n_elems(args); 
Pike_error("DatabaseOpeningError\n");
}
catch(const InvalidArgumentError& e) 
{
pop_n_elems(args); 
Pike_error("InvalidArgumentError\n");
}
catch(...){
pop_n_elems(args); 
Pike_error("an error occurred while opening the database.\n");
}
}

}
#line 3674 "xapian.ccmod"
/*  Database.void create() */
/*! @decl void create()
 *!
 *!  
 *!
 */
#define f_Xapian_Database_create_2_defined

#ifdef f_Xapian_Database_create_2_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Database_create_2_fun_num = 0;

#endif /* f_Xapian_Database_create_2_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Database_create_2(INT32 args) {
#line 3680 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("create",args,0);
{
Database * db = new Database();

THIS->object_data->database = db;
}

}

#if defined(f_Xapian_Database_create_1_defined) || defined(f_Xapian_Database_create_2_defined)
#define f_Xapian_Database_create_defined

#ifdef Xapian_Database_f_Xapian_Database_create_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t Xapian_Database_f_Xapian_Database_create_fun_num = 0;

#endif /* Xapian_Database_f_Xapian_Database_create_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Database_create(INT32 args) {
  switch(args) {
   case 0:

#ifdef f_Xapian_Database_create_2_defined
    f_Xapian_Database_create_2(args);
    return;

#endif /* f_Xapian_Database_create_2_defined */
    break;
   case 1:

#ifdef f_Xapian_Database_create_1_defined
    f_Xapian_Database_create_1(args);
    return;

#endif /* f_Xapian_Database_create_1_defined */
    break;
   default:
    wrong_number_of_args_error("create",args,0);
  }
}

#endif /* f_Xapian_Database_create_1_defined, f_Xapian_Database_create_2_defined */
#line 3687 "xapian.ccmod"
/*  Database.void reopen() */
/*! @decl void reopen()
 *!
 *!  
 *!
 */
#define f_Xapian_Database_reopen_defined

#ifdef f_Xapian_Database_reopen_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Database_reopen_fun_num = 0;

#endif /* f_Xapian_Database_reopen_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Database_reopen(INT32 args) {
#line 3693 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("reopen",args,0);
{
Database * db = THIS->object_data->database;

db->reopen();
}

}
#line 3700 "xapian.ccmod"
/*  Database.void keep_alive() */
/*! @decl void keep_alive()
 *!
 *!  
 *!
 */
#define f_Xapian_Database_keep_alive_defined

#ifdef f_Xapian_Database_keep_alive_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Database_keep_alive_fun_num = 0;

#endif /* f_Xapian_Database_keep_alive_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Database_keep_alive(INT32 args) {
#line 3706 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("keep_alive",args,0);
{
Database * db = THIS->object_data->database;

db->keep_alive();
}


}
#line 3714 "xapian.ccmod"
/*  Database.int get_doclength(int did) */
/*! @decl int get_doclength(int did)
 *!
 *!  
 *! @param did
 *!  
* !
 *! @returns
 *!  
 *!
 */
#define f_Xapian_Database_get_doclength_defined

#ifdef f_Xapian_Database_get_doclength_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Database_get_doclength_fun_num = 0;

#endif /* f_Xapian_Database_get_doclength_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Database_get_doclength(INT32 args) {
#line 3725 "xapian.ccmod"
INT_TYPE did;
#line 3725 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("get_doclength",args,1);
#line 3725 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_doclength",1,"int");
#line 3725 "xapian.ccmod"
did=Pike_sp[0-1].u.integer;
{
Database *db;
db = THIS->object_data->database;

doclength i = db->get_doclength((docid)did);
pop_n_elems(args);
push_int((INT_TYPE)i);
}

}
#line 3735 "xapian.ccmod"
/*  Database.int get_doccount() */
/*! @decl int get_doccount()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_Database_get_doccount_defined

#ifdef f_Xapian_Database_get_doccount_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Database_get_doccount_fun_num = 0;

#endif /* f_Xapian_Database_get_doccount_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Database_get_doccount(INT32 args) {
#line 3743 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_doccount",args,0);
{
Database *db;
db = THIS->object_data->database;

doccount i = db->get_doccount();
push_int(i);
}

}
#line 3752 "xapian.ccmod"
/*  Database.int get_avlength() */
/*! @decl int get_avlength()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_Database_get_avlength_defined

#ifdef f_Xapian_Database_get_avlength_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Database_get_avlength_fun_num = 0;

#endif /* f_Xapian_Database_get_avlength_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Database_get_avlength(INT32 args) {
#line 3760 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_avlength",args,0);
{
Database *db;
db = THIS->object_data->database;

doclength i = db->get_avlength();
push_int((INT_TYPE)i);
}

}
#line 3769 "xapian.ccmod"
/*  Database.int get_lastdocid() */
/*! @decl int get_lastdocid()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_Database_get_lastdocid_defined

#ifdef f_Xapian_Database_get_lastdocid_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Database_get_lastdocid_fun_num = 0;

#endif /* f_Xapian_Database_get_lastdocid_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Database_get_lastdocid(INT32 args) {
#line 3777 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_lastdocid",args,0);
{
Database *db;
db = THIS->object_data->database;

docid i = db->get_lastdocid();
push_int((INT_TYPE)i);
}


}
#line 3787 "xapian.ccmod"
/*  Database.int has_positions() */
/*! @decl int has_positions()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_Database_has_positions_defined

#ifdef f_Xapian_Database_has_positions_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Database_has_positions_fun_num = 0;

#endif /* f_Xapian_Database_has_positions_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Database_has_positions(INT32 args) {
#line 3795 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("has_positions",args,0);
{
Database *db;
db = THIS->object_data->database;

bool i = db->has_positions();

push_int(i?1:0);
}

}
/*! @decl TermIterator synonyms_iterator(string term)
 *!  Get an iterator for the synonyms of a term.
 *!  @returns
 *!    a @[TermIterator] object which can be passed to @[foreach]()
 */
#define f_Xapian_Database_synonyms_iterator_defined

#ifdef f_Xapian_Database_synonyms_iterator_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Database_synonyms_iterator_fun_num = 0;

#endif /* f_Xapian_Database_synonyms_iterator_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Database_synonyms_iterator(INT32 args) {
#line 3810 "xapian.ccmod"
struct pike_string * term;
#line 3810 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("synonyms_iterator",args,1);
#line 3810 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("synonyms_iterator",1,"string");
#line 3810 "xapian.ccmod"
debug_malloc_pass(term=Pike_sp[0-1].u.string);
{
Database *db;

db = (Database*)THIS->object_data->database;


TermIterator ti;
TermIterator * ti2;
struct object * o;

string str((const char *)term->str, (size_t)term->len);

ti = db->synonyms_begin(str);
ti2 = new TermIterator(ti);

o = fast_clone_object(Xapian_TermIterator_program);

OBJ2_XAPIAN_TERMITERATOR(o)->object_data->termi = ti2;
OBJ2_XAPIAN_TERMITERATOR(o)->tie = new TermIterator(db->synonyms_end(str));

push_object(o); 
}



}
#line 3836 "xapian.ccmod"
/*  Database.object get_document(int id) */
/*! @decl object get_document(int id)
 *!
 *!  
 *! @param id
 *!  
* !
 *! @returns
 *!  
 *!
 */
#define f_Xapian_Database_get_document_defined

#ifdef f_Xapian_Database_get_document_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Database_get_document_fun_num = 0;

#endif /* f_Xapian_Database_get_document_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Database_get_document(INT32 args) {
#line 3847 "xapian.ccmod"
INT_TYPE id;
#line 3847 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("get_document",args,1);
#line 3847 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_document",1,"int");
#line 3847 "xapian.ccmod"
id=Pike_sp[0-1].u.integer;
{
Database *db;
Document doc;
struct object * obj;
struct Xapian_Document_struct * od;

db = (Database*)THIS->object_data->database;

try
{
doc = db->get_document((docid)id);
}

catch(const DocNotFoundError &e)
{
pop_n_elems(args);
Pike_error("DocumentNotFoundError\n");
}

pop_n_elems(args);

obj = fast_clone_object(Xapian_Document_program);

od = OBJ2_XAPIAN_DOCUMENT(obj);

od->object_data->document = new Document(doc);

push_object(obj);

}

}
/*! @decl object get_spelling_terms()
 *!
 *! @returns
 *!   a @[TermIterator] object which can also be passed to @[foreach]()
 */
#define f_Xapian_Database_get_spelling_terms_1_defined

#ifdef f_Xapian_Database_get_spelling_terms_1_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Database_get_spelling_terms_1_fun_num = 0;

#endif /* f_Xapian_Database_get_spelling_terms_1_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Database_get_spelling_terms_1(INT32 args) {
#line 3884 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_spelling_terms",args,0);
{
TermIterator ti;
TermIterator * ti2;
struct object * o;

Database *db;
db = THIS->object_data->database;


ti = db->spellings_begin();
ti2 = new TermIterator(ti);

o = fast_clone_object(Xapian_TermIterator_program);

OBJ2_XAPIAN_TERMITERATOR(o)->object_data->termi = ti2;
OBJ2_XAPIAN_TERMITERATOR(o)->tie = new TermIterator(db->spellings_end());

push_object(o); 
}

}
/*! @decl object get_synonym_terms(string)
 *!
 *! @returns
 *!   a @[TermIterator] object which can also be passed to @[foreach]()
 */
#define f_Xapian_Database_get_spelling_terms_2_defined

#ifdef f_Xapian_Database_get_spelling_terms_2_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Database_get_spelling_terms_2_fun_num = 0;

#endif /* f_Xapian_Database_get_spelling_terms_2_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Database_get_spelling_terms_2(INT32 args) {
#line 3910 "xapian.ccmod"
struct pike_string * term;
#line 3910 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("get_spelling_terms",args,1);
#line 3910 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("get_spelling_terms",1,"string");
#line 3910 "xapian.ccmod"
debug_malloc_pass(term=Pike_sp[0-1].u.string);
{
TermIterator ti;
TermIterator * ti2;
struct object * o;

Database *db;
db = THIS->object_data->database;


ti = db->synonyms_begin(term->str);
ti2 = new TermIterator(ti);

o = fast_clone_object(Xapian_TermIterator_program);

OBJ2_XAPIAN_TERMITERATOR(o)->object_data->termi = ti2;
OBJ2_XAPIAN_TERMITERATOR(o)->tie = new TermIterator(db->synonyms_end(term->str));

push_object(o); 
}


}

#if defined(f_Xapian_Database_get_spelling_terms_1_defined) || defined(f_Xapian_Database_get_spelling_terms_2_defined)
#define f_Xapian_Database_get_spelling_terms_defined

#ifdef Xapian_Database_f_Xapian_Database_get_spelling_terms_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t Xapian_Database_f_Xapian_Database_get_spelling_terms_fun_num = 0;

#endif /* Xapian_Database_f_Xapian_Database_get_spelling_terms_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Database_get_spelling_terms(INT32 args) {
  switch(args) {
   case 0:

#ifdef f_Xapian_Database_get_spelling_terms_1_defined
    f_Xapian_Database_get_spelling_terms_1(args);
    return;

#endif /* f_Xapian_Database_get_spelling_terms_1_defined */
    break;
   case 1:

#ifdef f_Xapian_Database_get_spelling_terms_2_defined
    f_Xapian_Database_get_spelling_terms_2(args);
    return;

#endif /* f_Xapian_Database_get_spelling_terms_2_defined */
    break;
   default:
    wrong_number_of_args_error("get_spelling_terms",args,0);
  }
}

#endif /* f_Xapian_Database_get_spelling_terms_1_defined, f_Xapian_Database_get_spelling_terms_2_defined */
/*! @decl string get_spelling_suggestion(string word, int max_edit_distance)
 *! Suggest a spelling correction.
 *!
 *! @param word
 *! The potentially misspelled word.
 *! @param max_edit_distance 	
 *! Only consider words which are at most max_edit_distance edits from 
 *! word. An edit is a character insertion, deletion, or the transposition 
 *! of two adjacent characters (a reasonable starting value is 2).
 */
#define f_Xapian_Database_get_spelling_suggestion_defined

#ifdef f_Xapian_Database_get_spelling_suggestion_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Database_get_spelling_suggestion_fun_num = 0;

#endif /* f_Xapian_Database_get_spelling_suggestion_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Database_get_spelling_suggestion(INT32 args) {
#line 3942 "xapian.ccmod"
struct pike_string * word;
#line 3942 "xapian.ccmod"
INT_TYPE max_edit_distance;
#line 3942 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("get_spelling_suggestion",args,2);
#line 3942 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("get_spelling_suggestion",1,"string");
#line 3942 "xapian.ccmod"
debug_malloc_pass(word=Pike_sp[0-2].u.string);
#line 3942 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_spelling_suggestion",2,"int");
#line 3942 "xapian.ccmod"
max_edit_distance=Pike_sp[1-2].u.integer;
{
Database *db;

db = (Database*)THIS->object_data->database;

string str((const char *)word->str, (size_t)word->len);
string nstr = db->get_spelling_suggestion(str, max_edit_distance);

pop_n_elems(args);

push_text(str.c_str());
}
}
#line 3955 "xapian.ccmod"
/*  Database.string get_description() */
/*! @decl string get_description()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_Database_get_description_defined

#ifdef f_Xapian_Database_get_description_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Database_get_description_fun_num = 0;

#endif /* f_Xapian_Database_get_description_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Database_get_description(INT32 args) {
#line 3963 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_description",args,0);
{
Database *db;
db = THIS->object_data->database;

string str = db->get_description();

push_text(str.c_str());
}

}
#define f_Xapian_Database_cq__sprintf_defined

#ifdef f_Xapian_Database_cq__sprintf_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Database_cq__sprintf_fun_num = 0;

#endif /* f_Xapian_Database_cq__sprintf_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Database_cq__sprintf(INT32 args) {
#line 3973 "xapian.ccmod"
INT_TYPE conversion_type;
#line 3973 "xapian.ccmod"
struct mapping * params;
#line 3973 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 3973 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 3973 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 3973 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 3973 "xapian.ccmod"
debug_malloc_pass(params=Pike_sp[1-2].u.mapping);
{
Database *db;
if(THIS && THIS->object_data && conversion_type == 'O')
{
db = THIS->object_data->database;

string str = db->get_description();
pop_n_elems(args);
push_text(str.c_str());
}
else
{
pop_n_elems(args);
push_int(0);
}
}


}

#undef internal_init_Xapian_Database_defined
#define internal_init_Xapian_Database_defined

#undef Xapian_Database_event_handler_defined
#define Xapian_Database_event_handler_defined
static void init_Xapian_Database_struct(void)
#line 3993 "xapian.ccmod"
{
XAPIAN_DATABASE_OBJECT_DATA * dta = 
(XAPIAN_DATABASE_OBJECT_DATA*)malloc(sizeof(XAPIAN_DATABASE_OBJECT_DATA));
if (!dta)
Pike_error("init_sample: Out of memory!\n");

dta->database = NULL;
THIS->object_data = dta;
}

/*  Database.void destroy() */
/*! @decl void destroy()
 *!
 *!  
 *!
 */
#define f_Xapian_Database_destroy_defined

#ifdef f_Xapian_Database_destroy_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Database_destroy_fun_num = 0;

#endif /* f_Xapian_Database_destroy_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Database_destroy(INT32 args) {
#line 4009 "xapian.ccmod"
struct svalue * reason;
#line 4009 "xapian.ccmod"
if(args > 1) wrong_number_of_args_error("destroy",args,1);
#line 4009 "xapian.ccmod"
if ((args > 0) &&
    ((TYPEOF(Pike_sp[0-args]) != PIKE_T_INT) ||
     (SUBTYPEOF(Pike_sp[0-args]) != NUMBER_UNDEFINED))) {
#line 4009 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-args]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("destroy",1,"int|void");
#line 4009 "xapian.ccmod"
reason=Pike_sp+0-args; dmalloc_touch_svalue(Pike_sp+0-args);
#line 4009 "xapian.ccmod"
} else reason = NULL;
{
Database *db;
db = THIS->object_data->database;

if(db) 
{
/*printf("deleting db\n"); */
delete db;
}

pop_n_elems(args);

}

}

#undef Xapian_Database_gc_live_obj
#define Xapian_Database_gc_live_obj

#undef internal_exit_Xapian_Database_defined
#define internal_exit_Xapian_Database_defined

#undef Xapian_Database_event_handler_defined
#define Xapian_Database_event_handler_defined
static void exit_Xapian_Database_struct(void)
#line 4025 "xapian.ccmod"
{
if(THIS->object_data)
{ 
Database *db;
db = THIS->object_data->database;
free(THIS->object_data);
}
}


#ifdef Xapian_Database_event_handler_defined
static void Xapian_Database_event_handler(int ev) {
  switch(ev) {

#ifdef internal_init_Xapian_Database_defined
  case PROG_EVENT_INIT: init_Xapian_Database_struct(); break;

#endif /* internal_init_Xapian_Database_defined */

#ifdef internal_exit_Xapian_Database_defined
  case PROG_EVENT_EXIT: exit_Xapian_Database_struct(); break;

#endif /* internal_exit_Xapian_Database_defined */
  default: break; 
  }
}

#endif /* Xapian_Database_event_handler_defined */
/*!  @endclass
*/

/*! @class WriteableDatabase
 *! @inherit Database
*/


#undef class_Xapian_WriteableDatabase_defined
#define class_Xapian_WriteableDatabase_defined
DEFAULT_CMOD_STORAGE struct program *Xapian_WriteableDatabase_program=NULL;

#ifdef Xapian_WriteableDatabase_program_fun_num_used
DEFAULT_CMOD_STORAGE int Xapian_WriteableDatabase_program_fun_num=-1;
#endif /* Xapian_WriteableDatabase_program_fun_num_used */

#undef inherit_Xapian_Database_Xapian_WriteableDatabase_defined
#define inherit_Xapian_Database_Xapian_WriteableDatabase_defined
#line 4045 "xapian.ccmod"
static int Xapian_WriteableDatabase_Xapian_Database_inh_num = -1;
#line 4045 "xapian.ccmod"
static int Xapian_WriteableDatabase_Xapian_Database_inh_offset = -1;
#line 4047 "xapian.ccmod"
/*  WriteableDatabase.void create(string path, int mode) */
/*! @decl void create(string path, int mode)
 *!
 *!  
 *! @param path
 *!  
* !
 *! @param mode
 *!  
* !
 *!
 */
#define f_Xapian_WriteableDatabase_create_defined

#ifdef f_Xapian_WriteableDatabase_create_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_WriteableDatabase_create_fun_num = 0;

#endif /* f_Xapian_WriteableDatabase_create_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_WriteableDatabase_create(INT32 args) {
#line 4059 "xapian.ccmod"
struct pike_string * path;
#line 4059 "xapian.ccmod"
INT_TYPE mode;
#line 4059 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("create",args,2);
#line 4059 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("create",1,"string");
#line 4059 "xapian.ccmod"
debug_malloc_pass(path=Pike_sp[0-2].u.string);
#line 4059 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("create",2,"int");
#line 4059 "xapian.ccmod"
mode=Pike_sp[1-2].u.integer;
{
try
{
const string str((const char *)path->str, (size_t)path->len);

WritableDatabase* database;
try
{
database = new WritableDatabase(str, mode);
}
catch (const Error &error) 
{
Pike_error("Exception: %s\n", error.get_msg().c_str());
}
pop_n_elems(args);

THIS->object_data->database = database;
}

catch(const DatabaseLockError& e)
{
pop_n_elems(args);
Pike_error("DatabaseLockError\n");
}
catch(const DatabaseOpeningError &e) 
{
pop_n_elems(args);
Pike_error("DatabaseOpeningError\n");
}
catch(const InvalidArgumentError &e) 
{
pop_n_elems(args);
Pike_error("InvalidArgumentError\n");
}
catch(...){
pop_n_elems(args);
Pike_error("an error occurred while opening the database.\n");
}
}

}
#line 4100 "xapian.ccmod"
/*  WriteableDatabase.void flush() */
/*! @decl void flush()
 *!
 *!  
 *!
 */
#define f_Xapian_WriteableDatabase_flush_defined

#ifdef f_Xapian_WriteableDatabase_flush_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_WriteableDatabase_flush_fun_num = 0;

#endif /* f_Xapian_WriteableDatabase_flush_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_WriteableDatabase_flush(INT32 args) {
#line 4106 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("flush",args,0);
{
WritableDatabase *db;
db = (WritableDatabase*)THIS->object_data->database;

try
{
db->flush();
}
catch(Xapian::DatabaseCorruptError &e)
{
Pike_error("DatabaseCorruptError\n");
}
catch(Xapian::DatabaseLockError &e)
{
Pike_error("DatabaseLockError\n");
}
catch(Xapian::DatabaseError &e)
{
Pike_error("DatabaseError\n");
}
}

}
#line 4129 "xapian.ccmod"
/*  WriteableDatabase.int add_document(object document) */
/*! @decl int add_document(object document)
 *!
 *!  
 *! @param document
 *!  
* !
 *! @returns
 *!  
 *!
 */
#define f_Xapian_WriteableDatabase_add_document_defined

#ifdef f_Xapian_WriteableDatabase_add_document_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_WriteableDatabase_add_document_fun_num = 0;

#endif /* f_Xapian_WriteableDatabase_add_document_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_WriteableDatabase_add_document(INT32 args) {
#line 4140 "xapian.ccmod"
struct object * document;
#line 4140 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("add_document",args,1);
#line 4140 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("add_document",1,"object");
#line 4140 "xapian.ccmod"
debug_malloc_pass(document=Pike_sp[0-1].u.object);
{
WritableDatabase *db;
Document * doc;
docid id;

struct Xapian_Document_struct * od;

db = (WritableDatabase*)THIS->object_data->database;
od = OBJ2_XAPIAN_DOCUMENT(document);

if(!od) Pike_error("Not a Document!\n");

doc = od->object_data->document;

try
{
id = db->add_document(*doc);
}
catch(Xapian::DatabaseCorruptError &e)
{
Pike_error("DatabaseCorruptError\n");
}
catch(Xapian::DatabaseError &e)
{
Pike_error("DatabaseError\n");
}
catch(Xapian::InvalidArgumentError &e)
{
/*printf("%s\n",e.get_msg().c_str()); */
Pike_error("InvalidArgumentError\n");
}
pop_n_elems(args);
push_int(id); 
}


}
#line 4177 "xapian.ccmod"
/*  WriteableDatabase.void replace_document(int did, object document) */
/*! @decl void replace_document(int did, object document)
 *!
 *!  
 *! @param did
 *!  
* !
 *! @param document
 *!  
* !
 *!
 */
#define f_Xapian_WriteableDatabase_replace_document_1_defined

#ifdef f_Xapian_WriteableDatabase_replace_document_1_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_WriteableDatabase_replace_document_1_fun_num = 0;

#endif /* f_Xapian_WriteableDatabase_replace_document_1_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_WriteableDatabase_replace_document_1(INT32 args) {
#line 4189 "xapian.ccmod"
INT_TYPE did;
#line 4189 "xapian.ccmod"
struct object * document;
#line 4189 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("replace_document",args,2);
#line 4189 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("replace_document",1,"int");
#line 4189 "xapian.ccmod"
did=Pike_sp[0-2].u.integer;
#line 4189 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("replace_document",2,"object");
#line 4189 "xapian.ccmod"
debug_malloc_pass(document=Pike_sp[1-2].u.object);
{
WritableDatabase *db;
Document * doc;
docid id;

struct Xapian_Document_struct * od;

db = (WritableDatabase*)THIS->object_data->database;
od = OBJ2_XAPIAN_DOCUMENT(document);

if(!od) Pike_error("Not a Document!\n");

doc = od->object_data->document;

try
{
db->replace_document((unsigned int)did, *doc);
}
catch(Xapian::DatabaseCorruptError &e)
{
Pike_error("DatabaseCorruptError\n");
}
catch(Xapian::DatabaseError &e)
{
Pike_error("DatabaseError\n");
}

pop_n_elems(args);
}

}
#line 4220 "xapian.ccmod"
/*  WriteableDatabase.void replace_document(string term, object document) */
/*! @decl void replace_document(string term, object document)
 *!
 *!  
 *! @param term
 *!  
* !
 *! @param document
 *!  
* !
 *!
 */
#define f_Xapian_WriteableDatabase_replace_document_2_defined

#ifdef f_Xapian_WriteableDatabase_replace_document_2_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_WriteableDatabase_replace_document_2_fun_num = 0;

#endif /* f_Xapian_WriteableDatabase_replace_document_2_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_WriteableDatabase_replace_document_2(INT32 args) {
#line 4232 "xapian.ccmod"
struct pike_string * term;
#line 4232 "xapian.ccmod"
struct object * document;
#line 4232 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("replace_document",args,2);
#line 4232 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("replace_document",1,"string");
#line 4232 "xapian.ccmod"
debug_malloc_pass(term=Pike_sp[0-2].u.string);
#line 4232 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("replace_document",2,"object");
#line 4232 "xapian.ccmod"
debug_malloc_pass(document=Pike_sp[1-2].u.object);
{
WritableDatabase *db;
Document * doc;
docid id;
string str;
struct Xapian_Document_struct * od;

db = (WritableDatabase*)THIS->object_data->database;
od = OBJ2_XAPIAN_DOCUMENT(document);

if(!od) Pike_error("Not a Document!\n");


doc = od->object_data->document;

try
{
const string str((const char *)term->str, (size_t)term->len);
db->replace_document(str, *doc);
}
catch(Xapian::DatabaseCorruptError &e)
{
Pike_error("DatabaseCorruptError\n");
}
catch(Xapian::DatabaseError &e)
{
Pike_error("DatabaseError\n");
}

pop_n_elems(args);
}

}

#if defined(f_Xapian_WriteableDatabase_replace_document_1_defined) || defined(f_Xapian_WriteableDatabase_replace_document_2_defined)
#define f_Xapian_WriteableDatabase_replace_document_defined

#ifdef Xapian_WriteableDatabase_f_Xapian_WriteableDatabase_replace_document_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t Xapian_WriteableDatabase_f_Xapian_WriteableDatabase_replace_document_fun_num = 0;

#endif /* Xapian_WriteableDatabase_f_Xapian_WriteableDatabase_replace_document_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_WriteableDatabase_replace_document(INT32 args) {
  if(args < 1) wrong_number_of_args_error("replace_document",args,2);
  switch(TYPEOF(Pike_sp[0-args])) {
   case PIKE_T_INT:

#ifdef f_Xapian_WriteableDatabase_replace_document_1_defined
    f_Xapian_WriteableDatabase_replace_document_1(args);
    return;

#endif /* f_Xapian_WriteableDatabase_replace_document_1_defined */
    break;
   case PIKE_T_STRING:

#ifdef f_Xapian_WriteableDatabase_replace_document_2_defined
    f_Xapian_WriteableDatabase_replace_document_2(args);
    return;

#endif /* f_Xapian_WriteableDatabase_replace_document_2_defined */
    break;
   default:
    SIMPLE_BAD_ARG_ERROR("replace_document",1,"int|string");
  }
}

#endif /* f_Xapian_WriteableDatabase_replace_document_1_defined, f_Xapian_WriteableDatabase_replace_document_2_defined */
#line 4265 "xapian.ccmod"
/*  WriteableDatabase.void delete_document(string unique_term) */
/*! @decl void delete_document(string unique_term)
 *!
 *!  
 *! @param unique_term
 *!  
* !
 *!
 */
#define f_Xapian_WriteableDatabase_delete_document_1_defined

#ifdef f_Xapian_WriteableDatabase_delete_document_1_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_WriteableDatabase_delete_document_1_fun_num = 0;

#endif /* f_Xapian_WriteableDatabase_delete_document_1_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_WriteableDatabase_delete_document_1(INT32 args) {
#line 4274 "xapian.ccmod"
struct pike_string * unique_term;
#line 4274 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("delete_document",args,1);
#line 4274 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("delete_document",1,"string");
#line 4274 "xapian.ccmod"
debug_malloc_pass(unique_term=Pike_sp[0-1].u.string);
{
WritableDatabase *db;
db = (WritableDatabase*)THIS->object_data->database;
const string str((const char *)unique_term->str, (size_t)unique_term->len);
pop_n_elems(args);

try
{
db->delete_document(str);
}
catch(Xapian::DatabaseCorruptError &e)
{
Pike_error("DatabaseCorruptError\n");
}
catch(Xapian::DatabaseError &e)
{
Pike_error("DatabaseError\n");
}

}

}
#line 4296 "xapian.ccmod"
/*  WriteableDatabase.void delete_document(int did) */
/*! @decl void delete_document(int did)
 *!
 *!  
 *! @param did
 *!  
* !
 *!
 */
#define f_Xapian_WriteableDatabase_delete_document_2_defined

#ifdef f_Xapian_WriteableDatabase_delete_document_2_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_WriteableDatabase_delete_document_2_fun_num = 0;

#endif /* f_Xapian_WriteableDatabase_delete_document_2_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_WriteableDatabase_delete_document_2(INT32 args) {
#line 4305 "xapian.ccmod"
INT_TYPE did;
#line 4305 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("delete_document",args,1);
#line 4305 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("delete_document",1,"int");
#line 4305 "xapian.ccmod"
did=Pike_sp[0-1].u.integer;
{
WritableDatabase *db;
db = (WritableDatabase*)THIS->object_data->database;

try
{
db->delete_document((docid)did);
}
catch(Xapian::DatabaseCorruptError &e)
{
pop_n_elems(args);
Pike_error("DatabaseCorruptError\n");
}
catch(Xapian::DatabaseError &e)
{
pop_n_elems(args);
Pike_error("DatabaseError\n");
}

}


}

#if defined(f_Xapian_WriteableDatabase_delete_document_1_defined) || defined(f_Xapian_WriteableDatabase_delete_document_2_defined)
#define f_Xapian_WriteableDatabase_delete_document_defined

#ifdef Xapian_WriteableDatabase_f_Xapian_WriteableDatabase_delete_document_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t Xapian_WriteableDatabase_f_Xapian_WriteableDatabase_delete_document_fun_num = 0;

#endif /* Xapian_WriteableDatabase_f_Xapian_WriteableDatabase_delete_document_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_WriteableDatabase_delete_document(INT32 args) {
  if(args < 1) wrong_number_of_args_error("delete_document",args,1);
  switch(TYPEOF(Pike_sp[0-args])) {
   case PIKE_T_INT:

#ifdef f_Xapian_WriteableDatabase_delete_document_2_defined
    f_Xapian_WriteableDatabase_delete_document_2(args);
    return;

#endif /* f_Xapian_WriteableDatabase_delete_document_2_defined */
    break;
   case PIKE_T_STRING:

#ifdef f_Xapian_WriteableDatabase_delete_document_1_defined
    f_Xapian_WriteableDatabase_delete_document_1(args);
    return;

#endif /* f_Xapian_WriteableDatabase_delete_document_1_defined */
    break;
   default:
    SIMPLE_BAD_ARG_ERROR("delete_document",1,"int|string");
  }
}

#endif /* f_Xapian_WriteableDatabase_delete_document_1_defined, f_Xapian_WriteableDatabase_delete_document_2_defined */
#line 4328 "xapian.ccmod"
/*  WriteableDatabase.void begin_transaction(int flushed) */
/*! @decl void begin_transaction(int flushed)
 *!
 *!  
 *! @param flushed
 *!  
* !
 *!
 */
#define f_Xapian_WriteableDatabase_begin_transaction_defined

#ifdef f_Xapian_WriteableDatabase_begin_transaction_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_WriteableDatabase_begin_transaction_fun_num = 0;

#endif /* f_Xapian_WriteableDatabase_begin_transaction_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_WriteableDatabase_begin_transaction(INT32 args) {
#line 4337 "xapian.ccmod"
INT_TYPE flushed;
#line 4337 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("begin_transaction",args,1);
#line 4337 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("begin_transaction",1,"int");
#line 4337 "xapian.ccmod"
flushed=Pike_sp[0-1].u.integer;
{
WritableDatabase *db;
db = (WritableDatabase*)THIS->object_data->database;

try
{
db->begin_transaction((bool)flushed);
}
catch(Xapian::InvalidOperationError &e)
{
pop_n_elems(args);
Pike_error("InvalidOperationError\n");
}
catch(Xapian::UnimplementedError &e)
{
pop_n_elems(args);
Pike_error("UnimplementedError\n");
}

}

}
#line 4359 "xapian.ccmod"
/*  WriteableDatabase.void commit_transaction() */
/*! @decl void commit_transaction()
 *!
 *!  
 *!
 */
#define f_Xapian_WriteableDatabase_commit_transaction_defined

#ifdef f_Xapian_WriteableDatabase_commit_transaction_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_WriteableDatabase_commit_transaction_fun_num = 0;

#endif /* f_Xapian_WriteableDatabase_commit_transaction_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_WriteableDatabase_commit_transaction(INT32 args) {
#line 4365 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("commit_transaction",args,0);
{
WritableDatabase *db;
db = (WritableDatabase*)THIS->object_data->database;

try
{
db->commit_transaction();
}
catch(Xapian::InvalidOperationError &e)
{
Pike_error("InvalidOperationError\n");
}
catch(Xapian::DatabaseCorruptError &e)
{
Pike_error("DatabaseCorruptError\n");
}
catch(Xapian::DatabaseError &e)
{
Pike_error("DatabaseError\n");
}
catch(Xapian::UnimplementedError &e)
{
Pike_error("UnimplementedError\n");
}

}


}
#line 4394 "xapian.ccmod"
/*  WriteableDatabase.void cancel_transaction() */
/*! @decl void cancel_transaction()
 *!
 *!  
 *!
 */
#define f_Xapian_WriteableDatabase_cancel_transaction_defined

#ifdef f_Xapian_WriteableDatabase_cancel_transaction_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_WriteableDatabase_cancel_transaction_fun_num = 0;

#endif /* f_Xapian_WriteableDatabase_cancel_transaction_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_WriteableDatabase_cancel_transaction(INT32 args) {
#line 4400 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("cancel_transaction",args,0);
{
WritableDatabase *db;
db = (WritableDatabase*)THIS->object_data->database;

try
{
db->cancel_transaction();
}
catch(Xapian::InvalidOperationError &e)
{
Pike_error("InvalidOperationError\n");
}
catch(Xapian::DatabaseCorruptError &e)
{
Pike_error("DatabaseCorruptError\n");
}
catch(Xapian::DatabaseError &e)
{
Pike_error("DatabaseError\n");
}
catch(Xapian::UnimplementedError &e)
{
Pike_error("UnimplementedError\n");
}

}

}
#line 4428 "xapian.ccmod"
/*  WriteableDatabase.string get_description() */
/*! @decl string get_description()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_WriteableDatabase_get_description_defined

#ifdef f_Xapian_WriteableDatabase_get_description_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_WriteableDatabase_get_description_fun_num = 0;

#endif /* f_Xapian_WriteableDatabase_get_description_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_WriteableDatabase_get_description(INT32 args) {
#line 4436 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_description",args,0);
{
WritableDatabase *db;
db = (WritableDatabase*)THIS->object_data->database;

string str = db->get_description();

push_text(str.c_str());
}

}
#define f_Xapian_WriteableDatabase_cq__sprintf_defined

#ifdef f_Xapian_WriteableDatabase_cq__sprintf_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_WriteableDatabase_cq__sprintf_fun_num = 0;

#endif /* f_Xapian_WriteableDatabase_cq__sprintf_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_WriteableDatabase_cq__sprintf(INT32 args) {
#line 4446 "xapian.ccmod"
INT_TYPE conversion_type;
#line 4446 "xapian.ccmod"
struct mapping * params;
#line 4446 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 4446 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 4446 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 4446 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 4446 "xapian.ccmod"
debug_malloc_pass(params=Pike_sp[1-2].u.mapping);
{
WritableDatabase *db;
if(THIS && THIS->object_data && conversion_type == 'O')
{
db = (WritableDatabase*)THIS->object_data->database;

string str = db->get_description();
pop_n_elems(args);
push_text(str.c_str());
}
else
{
pop_n_elems(args);
push_int(0);
}
}


}
/*!  @endclass
*/


/*! @class QueryParser
*/


#undef class_Xapian_QueryParser_defined
#define class_Xapian_QueryParser_defined
DEFAULT_CMOD_STORAGE struct program *Xapian_QueryParser_program=NULL;

#ifdef Xapian_QueryParser_program_fun_num_used
DEFAULT_CMOD_STORAGE int Xapian_QueryParser_program_fun_num=-1;
#endif /* Xapian_QueryParser_program_fun_num_used */

#undef var_object_data_Xapian_QueryParser_defined
#define var_object_data_Xapian_QueryParser_defined

#undef THIS
#define THIS ((struct Xapian_QueryParser_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef THIS_XAPIAN_QUERYPARSER
#define THIS_XAPIAN_QUERYPARSER ((struct Xapian_QueryParser_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef OBJ2_XAPIAN_QUERYPARSER
#define OBJ2_XAPIAN_QUERYPARSER(o) ((struct Xapian_QueryParser_struct *)(o->storage+Xapian_QueryParser_storage_offset))

#undef GET_XAPIAN_QUERYPARSER_STORAGE
#define GET_XAPIAN_QUERYPARSER_STORAGE(o) ((struct Xapian_QueryParser_struct *)(o->storage+Xapian_QueryParser_storage_offset)
static ptrdiff_t Xapian_QueryParser_storage_offset;
struct Xapian_QueryParser_struct {

#ifdef var_object_data_Xapian_QueryParser_defined
#line 4476 "xapian.ccmod"
XAPIAN_QUERYPARSER_OBJECT_DATA *object_data;
#endif /* var_object_data_Xapian_QueryParser_defined */
};
#ifdef PIKE_DEBUG
/* Ensure the struct is used in a variable declaration, or else gdb might not see it. */
static struct Xapian_QueryParser_struct *Xapian_QueryParser_gdb_dummy_ptr;
#endif
#line 4478 "xapian.ccmod"
/*  QueryParser.void create() */
/*! @decl void create()
 *!
 *!  
 *!
 */
#define f_Xapian_QueryParser_create_defined

#ifdef f_Xapian_QueryParser_create_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_QueryParser_create_fun_num = 0;

#endif /* f_Xapian_QueryParser_create_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_QueryParser_create(INT32 args) {
#line 4484 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("create",args,0);
{
QueryParser * parser = new QueryParser();

THIS->object_data->parser = parser;
}

}
/*! @decl string get_corrected_query_string()
 *!
 */
#define f_Xapian_QueryParser_get_corrected_query_string_defined

#ifdef f_Xapian_QueryParser_get_corrected_query_string_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_QueryParser_get_corrected_query_string_fun_num = 0;

#endif /* f_Xapian_QueryParser_get_corrected_query_string_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_QueryParser_get_corrected_query_string(INT32 args) {
#line 4494 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_corrected_query_string",args,0);
{
QueryParser * parser;

parser = THIS->object_data->parser;
string nstr = parser->get_corrected_query_string();

pop_n_elems(args);

push_text(nstr.c_str());
}

}
#line 4506 "xapian.ccmod"
/*  QueryParser.void set_stemmer(object stemmer) */
/*! @decl void set_stemmer(object stemmer)
 *!
 *!  
 *! @param stemmer
 *!  
* !
 *!
 */
#define f_Xapian_QueryParser_set_stemmer_defined

#ifdef f_Xapian_QueryParser_set_stemmer_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_QueryParser_set_stemmer_fun_num = 0;

#endif /* f_Xapian_QueryParser_set_stemmer_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_QueryParser_set_stemmer(INT32 args) {
#line 4515 "xapian.ccmod"
struct object * stemmer;
#line 4515 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("set_stemmer",args,1);
#line 4515 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("set_stemmer",1,"object");
#line 4515 "xapian.ccmod"
debug_malloc_pass(stemmer=Pike_sp[0-1].u.object);
{
QueryParser * parser;
Stem * s;

parser = THIS->object_data->parser;
s = OBJ2_XAPIAN_STEM(stemmer)->object_data->stem; 
parser->set_stemmer((const Stem)*s);

pop_n_elems(args);
}

}
#line 4527 "xapian.ccmod"
/*  QueryParser.void set_stopper(object stopper) */
/*! @decl void set_stopper(object stopper)
 *!
 *!  
 *! @param stopper
 *!  
* !
 *!
 */
#define f_Xapian_QueryParser_set_stopper_defined

#ifdef f_Xapian_QueryParser_set_stopper_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_QueryParser_set_stopper_fun_num = 0;

#endif /* f_Xapian_QueryParser_set_stopper_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_QueryParser_set_stopper(INT32 args) {
#line 4536 "xapian.ccmod"
struct object * stopper;
#line 4536 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("set_stopper",args,1);
#line 4536 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("set_stopper",1,"object");
#line 4536 "xapian.ccmod"
debug_malloc_pass(stopper=Pike_sp[0-1].u.object);
{
QueryParser * parser;
Stopper * s;

parser = THIS->object_data->parser;
s = OBJ2_XAPIAN_STOPPER(stopper)->object_data->stopper; 
parser->set_stopper((const Stopper*)s);

pop_n_elems(args);
}

}
#line 4548 "xapian.ccmod"
/*  QueryParser.void set_database(object database) */
/*! @decl void set_database(object database)
 *!
 *!  
 *! @param database
 *!  
 *!
 *!
 */
#define f_Xapian_QueryParser_set_database_defined

#ifdef f_Xapian_QueryParser_set_database_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_QueryParser_set_database_fun_num = 0;

#endif /* f_Xapian_QueryParser_set_database_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_QueryParser_set_database(INT32 args) {
#line 4557 "xapian.ccmod"
struct object * database;
#line 4557 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("set_database",args,1);
#line 4557 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("set_database",1,"object");
#line 4557 "xapian.ccmod"
debug_malloc_pass(database=Pike_sp[0-1].u.object);
{
QueryParser * parser;
Database * d;

parser = THIS->object_data->parser;
d = OBJ2_XAPIAN_DATABASE(database)->object_data->database; 
parser->set_database((const Database)*d);

pop_n_elems(args);
}

}
#line 4569 "xapian.ccmod"
/*  QueryParser.void set_default_op(int op) */
/*! @decl void set_default_op(int op)
 *!
 *!  
 *! @param op
 *!  
* !
 *!
 */
#define f_Xapian_QueryParser_set_default_op_defined

#ifdef f_Xapian_QueryParser_set_default_op_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_QueryParser_set_default_op_fun_num = 0;

#endif /* f_Xapian_QueryParser_set_default_op_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_QueryParser_set_default_op(INT32 args) {
#line 4578 "xapian.ccmod"
INT_TYPE op;
#line 4578 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("set_default_op",args,1);
#line 4578 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_default_op",1,"int");
#line 4578 "xapian.ccmod"
op=Pike_sp[0-1].u.integer;
{
QueryParser * parser;

parser = THIS->object_data->parser;

parser->set_default_op((Query::op)op);
pop_n_elems(args);
}


}
/*! @decl void set_stemming_strategy(int strat)
 *! Set the stemming strategy.
 *!
 *! This controls how the query parser will apply the stemming algorithm. 
 *! The default value is STEM_NONE. The possible values are:
 *! 
 *!   * STEM_NONE: Don't perform any stemming.
 *!
 *!   * STEM_SOME: Search for stemmed forms of terms except for those 
 *!  which start with a capital letter, or are followed by certain 
 *! characters (currently: (/@@<>=*[{" ), or are used with operators which 
 *! need positional information. Stemmed terms are prefixed with 'Z'.
 *!
 *!   * STEM_ALL: Search for stemmed forms of all words (note: no 'Z' 
 *! prefix is added).
 *!
 *! Note that the stemming algorithm is only applied to words in 
 *! probabilistic fields - boolean filter terms are never stemmed.
 *! 
 */
#define f_Xapian_QueryParser_set_stemming_strategy_defined

#ifdef f_Xapian_QueryParser_set_stemming_strategy_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_QueryParser_set_stemming_strategy_fun_num = 0;

#endif /* f_Xapian_QueryParser_set_stemming_strategy_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_QueryParser_set_stemming_strategy(INT32 args) {
#line 4609 "xapian.ccmod"
INT_TYPE strat;
#line 4609 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("set_stemming_strategy",args,1);
#line 4609 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_stemming_strategy",1,"int");
#line 4609 "xapian.ccmod"
strat=Pike_sp[0-1].u.integer;
{
QueryParser * parser;

parser = THIS->object_data->parser;

parser->set_stemming_strategy((Xapian::QueryParser::stem_strategy)strat);
pop_n_elems(args);
}

}
#line 4619 "xapian.ccmod"
/*  QueryParser.object parse_query(string query, int flags) */
/*! @decl object parse_query(string query, int flags)
 *!
 *!  
 *! @param query
 *!   a plain text query string
* !
 *! @param flags
 *!  
* !
 *! @returns
 *!   a @[Query] object
 *!
 *! @note
 *!   this function is wide-string aware
 */
#define f_Xapian_QueryParser_parse_query_defined

#ifdef f_Xapian_QueryParser_parse_query_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_QueryParser_parse_query_fun_num = 0;

#endif /* f_Xapian_QueryParser_parse_query_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_QueryParser_parse_query(INT32 args) {
#line 4635 "xapian.ccmod"
struct pike_string * query;
#line 4635 "xapian.ccmod"
INT_TYPE flags;
#line 4635 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("parse_query",args,2);
#line 4635 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("parse_query",1,"string");
#line 4635 "xapian.ccmod"
debug_malloc_pass(query=Pike_sp[0-2].u.string);
#line 4635 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("parse_query",2,"int");
#line 4635 "xapian.ccmod"
flags=Pike_sp[1-2].u.integer;
{
Query q;
Query * q1;
QueryParser *parser;
struct object *o;
parser = THIS->object_data->parser;

ref_push_string(query);
f_string_to_utf8(1);

string str((const char *)Pike_sp[-1].u.string->str, (size_t) Pike_sp[-1].u.string->len);

q = parser->parse_query(str, flags);

q1 = new Query(q); 

o = fast_clone_object(Xapian_Query_program);
if(!o) Pike_error("unable to clone the query program.\n");
if(!q1) Pike_error("unable to parse the query.\n");
OBJ2_XAPIAN_QUERY(o)->object_data->query = q1;
pop_n_elems(args+1);
push_object(o);
}

}
#line 4660 "xapian.ccmod"
/*  QueryParser.void add_prefix(string field, string prefix) */
/*! @decl void add_prefix(string field, string prefix)
 *!
 *!  
 *! @param field
 *!  
* !
 *! @param prefix
 *!  
* !
 *!
 */
#define f_Xapian_QueryParser_add_prefix_defined

#ifdef f_Xapian_QueryParser_add_prefix_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_QueryParser_add_prefix_fun_num = 0;

#endif /* f_Xapian_QueryParser_add_prefix_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_QueryParser_add_prefix(INT32 args) {
#line 4672 "xapian.ccmod"
struct pike_string * field;
#line 4672 "xapian.ccmod"
struct pike_string * prefix;
#line 4672 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("add_prefix",args,2);
#line 4672 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("add_prefix",1,"string");
#line 4672 "xapian.ccmod"
debug_malloc_pass(field=Pike_sp[0-2].u.string);
#line 4672 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("add_prefix",2,"string");
#line 4672 "xapian.ccmod"
debug_malloc_pass(prefix=Pike_sp[1-2].u.string);
{
QueryParser *parser;
parser = THIS->object_data->parser;

string f((const char *)field->str, (size_t)field->len);
string p((const char *)prefix->str, (size_t)prefix->len);

parser->add_prefix(f, p);
pop_n_elems(args);
}

}
#line 4684 "xapian.ccmod"
/*  QueryParser.void add_boolean_prefix(string field, string prefix) */
/*! @decl void add_boolean_prefix(string field, string prefix)
 *!
 *!  
 *! @param field
 *!  
* !
 *! @param prefix
 *!  
* !
 *!
 */
#define f_Xapian_QueryParser_add_boolean_prefix_defined

#ifdef f_Xapian_QueryParser_add_boolean_prefix_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_QueryParser_add_boolean_prefix_fun_num = 0;

#endif /* f_Xapian_QueryParser_add_boolean_prefix_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_QueryParser_add_boolean_prefix(INT32 args) {
#line 4696 "xapian.ccmod"
struct pike_string * field;
#line 4696 "xapian.ccmod"
struct pike_string * prefix;
#line 4696 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("add_boolean_prefix",args,2);
#line 4696 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("add_boolean_prefix",1,"string");
#line 4696 "xapian.ccmod"
debug_malloc_pass(field=Pike_sp[0-2].u.string);
#line 4696 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("add_boolean_prefix",2,"string");
#line 4696 "xapian.ccmod"
debug_malloc_pass(prefix=Pike_sp[1-2].u.string);
{
QueryParser *parser;
parser = THIS->object_data->parser;

string f((const char *)field->str, (size_t)field->len);
string p((const char *)prefix->str, (size_t)prefix->len);

parser->add_boolean_prefix(f, p);
pop_n_elems(args);
}

}
#line 4708 "xapian.ccmod"
/*  QueryParser.string get_description() */
/*! @decl string get_description()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_QueryParser_get_description_defined

#ifdef f_Xapian_QueryParser_get_description_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_QueryParser_get_description_fun_num = 0;

#endif /* f_Xapian_QueryParser_get_description_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_QueryParser_get_description(INT32 args) {
#line 4716 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_description",args,0);
{
QueryParser *parser;
parser = THIS->object_data->parser;

string str = parser->get_description();

push_text(str.c_str());
}

}
#define f_Xapian_QueryParser_cq__sprintf_defined

#ifdef f_Xapian_QueryParser_cq__sprintf_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_QueryParser_cq__sprintf_fun_num = 0;

#endif /* f_Xapian_QueryParser_cq__sprintf_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_QueryParser_cq__sprintf(INT32 args) {
#line 4726 "xapian.ccmod"
INT_TYPE conversion_type;
#line 4726 "xapian.ccmod"
struct mapping * params;
#line 4726 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 4726 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 4726 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 4726 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 4726 "xapian.ccmod"
debug_malloc_pass(params=Pike_sp[1-2].u.mapping);
{
QueryParser *query;
if(THIS && THIS->object_data && conversion_type == 'O')
{
query = THIS->object_data->parser;

string str = query->get_description();
pop_n_elems(args);
push_text(str.c_str());
}
else
{
pop_n_elems(args);
push_int(0);
}
}

}

#undef internal_init_Xapian_QueryParser_defined
#define internal_init_Xapian_QueryParser_defined

#undef Xapian_QueryParser_event_handler_defined
#define Xapian_QueryParser_event_handler_defined
static void init_Xapian_QueryParser_struct(void)
#line 4745 "xapian.ccmod"
{
XAPIAN_QUERYPARSER_OBJECT_DATA * dta = 
(XAPIAN_QUERYPARSER_OBJECT_DATA*)malloc(sizeof(XAPIAN_QUERYPARSER_OBJECT_DATA));
if (!dta)
Pike_error("init_sample: Out of memory!\n");

dta->parser = NULL;
THIS->object_data = dta;
}


#undef Xapian_QueryParser_gc_live_obj
#define Xapian_QueryParser_gc_live_obj

#undef internal_exit_Xapian_QueryParser_defined
#define internal_exit_Xapian_QueryParser_defined

#undef Xapian_QueryParser_event_handler_defined
#define Xapian_QueryParser_event_handler_defined
static void exit_Xapian_QueryParser_struct(void)
#line 4756 "xapian.ccmod"
{
if(THIS->object_data)
{
QueryParser *parser;
parser = THIS->object_data->parser;
if(parser) delete parser;
free(THIS->object_data);
}
}


#undef extra_Xapian_QueryParser_defined
#define extra_Xapian_QueryParser_defined

#ifdef Xapian_QueryParser_event_handler_defined
static void Xapian_QueryParser_event_handler(int ev) {
  switch(ev) {

#ifdef internal_init_Xapian_QueryParser_defined
  case PROG_EVENT_INIT: init_Xapian_QueryParser_struct(); break;

#endif /* internal_init_Xapian_QueryParser_defined */

#ifdef internal_exit_Xapian_QueryParser_defined
  case PROG_EVENT_EXIT: exit_Xapian_QueryParser_struct(); break;

#endif /* internal_exit_Xapian_QueryParser_defined */
  default: break; 
  }
}

#endif /* Xapian_QueryParser_event_handler_defined */
/*!  @endclass
*/


/*! @class Enquire
*/


#undef class_Xapian_Enquire_defined
#define class_Xapian_Enquire_defined
DEFAULT_CMOD_STORAGE struct program *Xapian_Enquire_program=NULL;

#ifdef Xapian_Enquire_program_fun_num_used
DEFAULT_CMOD_STORAGE int Xapian_Enquire_program_fun_num=-1;
#endif /* Xapian_Enquire_program_fun_num_used */

#undef var_object_data_Xapian_Enquire_defined
#define var_object_data_Xapian_Enquire_defined

#undef THIS
#define THIS ((struct Xapian_Enquire_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef THIS_XAPIAN_ENQUIRE
#define THIS_XAPIAN_ENQUIRE ((struct Xapian_Enquire_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef OBJ2_XAPIAN_ENQUIRE
#define OBJ2_XAPIAN_ENQUIRE(o) ((struct Xapian_Enquire_struct *)(o->storage+Xapian_Enquire_storage_offset))

#undef GET_XAPIAN_ENQUIRE_STORAGE
#define GET_XAPIAN_ENQUIRE_STORAGE(o) ((struct Xapian_Enquire_struct *)(o->storage+Xapian_Enquire_storage_offset)
static ptrdiff_t Xapian_Enquire_storage_offset;
struct Xapian_Enquire_struct {

#ifdef var_object_data_Xapian_Enquire_defined
#line 4818 "xapian.ccmod"
XAPIAN_ENQUIRE_OBJECT_DATA *object_data;
#endif /* var_object_data_Xapian_Enquire_defined */
};
#ifdef PIKE_DEBUG
/* Ensure the struct is used in a variable declaration, or else gdb might not see it. */
static struct Xapian_Enquire_struct *Xapian_Enquire_gdb_dummy_ptr;
#endif
#line 4821 "xapian.ccmod"
/*  Enquire.void create(object database) */
/*! @decl void create(object database)
 *!
 *!  
 *! @param database
 *!  
* !
 *!
 */
#define f_Xapian_Enquire_create_defined

#ifdef f_Xapian_Enquire_create_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Enquire_create_fun_num = 0;

#endif /* f_Xapian_Enquire_create_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Enquire_create(INT32 args) {
#line 4830 "xapian.ccmod"
struct object * database;
#line 4830 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("create",args,1);
#line 4830 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("create",1,"object");
#line 4830 "xapian.ccmod"
debug_malloc_pass(database=Pike_sp[0-1].u.object);
{
try
{
Database * db;
db = OBJ2_XAPIAN_DATABASE(database)->object_data->database;

Enquire * enquire = new Enquire(*db);

pop_n_elems(args);

THIS->object_data->enquire = enquire;
}

catch(...) 
{
Pike_error("an error occurred!\n");
}
}

}
#line 4850 "xapian.ccmod"
/*  Enquire.void set_weighting_scheme(object weight) */
/*! @decl void set_weighting_scheme(object weight)
 *!
 *!  
 *! @param weight
 *!  
* !
 *!
 */
#define f_Xapian_Enquire_set_weighting_scheme_defined

#ifdef f_Xapian_Enquire_set_weighting_scheme_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Enquire_set_weighting_scheme_fun_num = 0;

#endif /* f_Xapian_Enquire_set_weighting_scheme_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Enquire_set_weighting_scheme(INT32 args) {
#line 4859 "xapian.ccmod"
struct object * weight;
#line 4859 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("set_weighting_scheme",args,1);
#line 4859 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("set_weighting_scheme",1,"object");
#line 4859 "xapian.ccmod"
debug_malloc_pass(weight=Pike_sp[0-1].u.object);
{
Enquire * e = THIS->object_data->enquire;
Weight * w = (OBJ2_XAPIAN_WEIGHT(weight)->object_data->weight);

e->set_weighting_scheme(*w);
pop_n_elems(args); 
}

}
#line 4868 "xapian.ccmod"
/*  Enquire.void set_query(object query, int termcount) */
/*! @decl void set_query(object query, int termcount)
 *!
 *!  
 *! @param query
 *!  
* !
 *! @param termcount
 *!  
* !
 *!
 */
#define f_Xapian_Enquire_set_query_defined

#ifdef f_Xapian_Enquire_set_query_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Enquire_set_query_fun_num = 0;

#endif /* f_Xapian_Enquire_set_query_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Enquire_set_query(INT32 args) {
#line 4880 "xapian.ccmod"
struct object * query;
#line 4880 "xapian.ccmod"
INT_TYPE termcount;
#line 4880 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("set_query",args,2);
#line 4880 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("set_query",1,"object");
#line 4880 "xapian.ccmod"
debug_malloc_pass(query=Pike_sp[0-2].u.object);
#line 4880 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_query",2,"int");
#line 4880 "xapian.ccmod"
termcount=Pike_sp[1-2].u.integer;
{
Query * q;
Enquire *enquire;
enquire = THIS->object_data->enquire;

q = OBJ2_XAPIAN_QUERY(query)->object_data->query;

enquire->set_query(*q, (Xapian::termcount)termcount);
pop_n_elems(args); 
}

}
#line 4892 "xapian.ccmod"
/*  Enquire.void set_cutoff(int percent_cutoff, float weight_cutoff) */
/*! @decl void set_cutoff(int percent_cutoff, float weight_cutoff)
 *!
 *!  
 *! @param percent_cutoff
 *!  
* !
 *! @param weight_cutoff
 *!  
* !
 *!
 */
#define f_Xapian_Enquire_set_cutoff_defined

#ifdef f_Xapian_Enquire_set_cutoff_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Enquire_set_cutoff_fun_num = 0;

#endif /* f_Xapian_Enquire_set_cutoff_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Enquire_set_cutoff(INT32 args) {
#line 4904 "xapian.ccmod"
INT_TYPE percent_cutoff;
#line 4904 "xapian.ccmod"
FLOAT_TYPE weight_cutoff;
#line 4904 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("set_cutoff",args,2);
#line 4904 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_cutoff",1,"int");
#line 4904 "xapian.ccmod"
percent_cutoff=Pike_sp[0-2].u.integer;
#line 4904 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_FLOAT) SIMPLE_ARG_TYPE_ERROR("set_cutoff",2,"float");
#line 4904 "xapian.ccmod"
weight_cutoff=Pike_sp[1-2].u.float_number;
{
Enquire *enquire;
enquire = THIS->object_data->enquire;

enquire->set_cutoff((percent)percent_cutoff, (weight)weight_cutoff);
pop_n_elems(args); 
}

}
#line 4913 "xapian.ccmod"
/*  Enquire.void set_docid_order(int docid_order) */
/*! @decl void set_docid_order(int docid_order)
 *!
 *!  
 *! @param docid_order
 *!  
* !
 *!
 */
#define f_Xapian_Enquire_set_docid_order_defined

#ifdef f_Xapian_Enquire_set_docid_order_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Enquire_set_docid_order_fun_num = 0;

#endif /* f_Xapian_Enquire_set_docid_order_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Enquire_set_docid_order(INT32 args) {
#line 4922 "xapian.ccmod"
INT_TYPE docid_order;
#line 4922 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("set_docid_order",args,1);
#line 4922 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_docid_order",1,"int");
#line 4922 "xapian.ccmod"
docid_order=Pike_sp[0-1].u.integer;
{
Enquire *enquire;
enquire = THIS->object_data->enquire;

enquire->set_docid_order((Xapian::Enquire::docid_order)docid_order);
pop_n_elems(args); 
}

}
#line 4931 "xapian.ccmod"
/*  Enquire.void set_collapse_key(int collapse_key) */
/*! @decl void set_collapse_key(int collapse_key)
 *!
 *!  
 *! @param collapse_key
 *!  
* !
 *!
 */
#define f_Xapian_Enquire_set_collapse_key_defined

#ifdef f_Xapian_Enquire_set_collapse_key_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Enquire_set_collapse_key_fun_num = 0;

#endif /* f_Xapian_Enquire_set_collapse_key_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Enquire_set_collapse_key(INT32 args) {
#line 4940 "xapian.ccmod"
INT_TYPE collapse_key;
#line 4940 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("set_collapse_key",args,1);
#line 4940 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_collapse_key",1,"int");
#line 4940 "xapian.ccmod"
collapse_key=Pike_sp[0-1].u.integer;
{
Enquire *enquire;
enquire = THIS->object_data->enquire;

enquire->set_collapse_key((valueno)collapse_key);
pop_n_elems(args); 
}

}
#line 4949 "xapian.ccmod"
/*  Enquire.void set_sort_by_relevance_then_value(int sort_key, int ascending) */
/*! @decl void set_sort_by_relevance_then_value(int sort_key, int ascending)
 *!
 *!  
 *! @param sort_key
 *!  
* !
 *! @param ascending
 *!  
* !
 *!
 */
#define f_Xapian_Enquire_set_sort_by_relevance_then_value_defined

#ifdef f_Xapian_Enquire_set_sort_by_relevance_then_value_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Enquire_set_sort_by_relevance_then_value_fun_num = 0;

#endif /* f_Xapian_Enquire_set_sort_by_relevance_then_value_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Enquire_set_sort_by_relevance_then_value(INT32 args) {
#line 4961 "xapian.ccmod"
INT_TYPE sort_key;
#line 4961 "xapian.ccmod"
INT_TYPE ascending;
#line 4961 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("set_sort_by_relevance_then_value",args,2);
#line 4961 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_sort_by_relevance_then_value",1,"int");
#line 4961 "xapian.ccmod"
sort_key=Pike_sp[0-2].u.integer;
#line 4961 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_sort_by_relevance_then_value",2,"int");
#line 4961 "xapian.ccmod"
ascending=Pike_sp[1-2].u.integer;
{
Enquire *enquire;
enquire = THIS->object_data->enquire;

enquire->set_sort_by_relevance_then_value((valueno)sort_key, ascending?true:false);
pop_n_elems(args); 
}

}
#line 4970 "xapian.ccmod"
/*  Enquire.void set_sort_by_value_then_relevance(int sort_key, int ascending) */
/*! @decl void set_sort_by_value_then_relevance(int sort_key, int ascending)
 *!
 *!  
 *! @param sort_key
 *!  
* !
 *! @param ascending
 *!  
* !
 *!
 */
#define f_Xapian_Enquire_set_sort_by_value_then_relevance_defined

#ifdef f_Xapian_Enquire_set_sort_by_value_then_relevance_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Enquire_set_sort_by_value_then_relevance_fun_num = 0;

#endif /* f_Xapian_Enquire_set_sort_by_value_then_relevance_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Enquire_set_sort_by_value_then_relevance(INT32 args) {
#line 4982 "xapian.ccmod"
INT_TYPE sort_key;
#line 4982 "xapian.ccmod"
INT_TYPE ascending;
#line 4982 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("set_sort_by_value_then_relevance",args,2);
#line 4982 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_sort_by_value_then_relevance",1,"int");
#line 4982 "xapian.ccmod"
sort_key=Pike_sp[0-2].u.integer;
#line 4982 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_sort_by_value_then_relevance",2,"int");
#line 4982 "xapian.ccmod"
ascending=Pike_sp[1-2].u.integer;
{
Enquire *enquire;
enquire = THIS->object_data->enquire;

enquire->set_sort_by_value_then_relevance((valueno)sort_key, ascending?true:false);
pop_n_elems(args); 
}

}
#line 4991 "xapian.ccmod"
/*  Enquire.void set_sort_value(int sort_key, int ascending) */
/*! @decl void set_sort_value(int sort_key, int ascending)
 *!
 *!  
 *! @param sort_key
 *!  
* !
 *! @param ascending
 *!  
* !
 *!
 */
#define f_Xapian_Enquire_set_sort_value_defined

#ifdef f_Xapian_Enquire_set_sort_value_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Enquire_set_sort_value_fun_num = 0;

#endif /* f_Xapian_Enquire_set_sort_value_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Enquire_set_sort_value(INT32 args) {
#line 5003 "xapian.ccmod"
INT_TYPE sort_key;
#line 5003 "xapian.ccmod"
INT_TYPE ascending;
#line 5003 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("set_sort_value",args,2);
#line 5003 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_sort_value",1,"int");
#line 5003 "xapian.ccmod"
sort_key=Pike_sp[0-2].u.integer;
#line 5003 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_sort_value",2,"int");
#line 5003 "xapian.ccmod"
ascending=Pike_sp[1-2].u.integer;
{
Enquire *enquire;
enquire = THIS->object_data->enquire;

enquire->set_sort_by_value((valueno)sort_key, ascending?true:false);
pop_n_elems(args); 
}

}
#line 5012 "xapian.ccmod"
/*  Enquire.void set_sort_by_relevence() */
/*! @decl void set_sort_by_relevence()
 *!
 *!  
 *!
 */
#define f_Xapian_Enquire_set_sort_by_relevence_defined

#ifdef f_Xapian_Enquire_set_sort_by_relevence_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Enquire_set_sort_by_relevence_fun_num = 0;

#endif /* f_Xapian_Enquire_set_sort_by_relevence_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Enquire_set_sort_by_relevence(INT32 args) {
#line 5018 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("set_sort_by_relevence",args,0);
{
Enquire *enquire;
enquire = THIS->object_data->enquire;

enquire->set_sort_by_relevance();
}


}
#line 5027 "xapian.ccmod"
/*  Enquire.object get_query() */
/*! @decl object get_query()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_Enquire_get_query_defined

#ifdef f_Xapian_Enquire_get_query_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Enquire_get_query_fun_num = 0;

#endif /* f_Xapian_Enquire_get_query_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Enquire_get_query(INT32 args) {
#line 5035 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_query",args,0);
{
Enquire *enquire;
Query q;
Query * q2;
struct object* r;
enquire = THIS->object_data->enquire;

q = enquire->get_query(); 

q2 = new Query(q); 

r = fast_clone_object(Xapian_Query_program);

OBJ2_XAPIAN_QUERY(r)->object_data->query = q2;

push_object(r);
}

}
#line 5054 "xapian.ccmod"
/*  Enquire.object get_mset(int first, int maxitems, object rset, function|void mdecider) */
/*! @decl object get_mset(int first, int maxitems, object rset, function|void mdecider)
 *!
 *!  
 *! @param first
 *!  
* !
 *! @param maxitems
 *!  
* !
 *! @param rset
 *!  
* !
 *! @returns
 *!  
 *!
 */
#define f_Xapian_Enquire_get_mset_1_defined

#ifdef f_Xapian_Enquire_get_mset_1_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Enquire_get_mset_1_fun_num = 0;

#endif /* f_Xapian_Enquire_get_mset_1_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Enquire_get_mset_1(INT32 args) {
#line 5071 "xapian.ccmod"
INT_TYPE first;
#line 5071 "xapian.ccmod"
INT_TYPE maxitems;
#line 5071 "xapian.ccmod"
struct object * rset;
#line 5071 "xapian.ccmod"
if(args != 3) wrong_number_of_args_error("get_mset",args,3);
#line 5071 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_mset",1,"int");
#line 5071 "xapian.ccmod"
first=Pike_sp[0-3].u.integer;
#line 5071 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_mset",2,"int");
#line 5071 "xapian.ccmod"
maxitems=Pike_sp[1-3].u.integer;
#line 5071 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-3]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("get_mset",3,"object");
#line 5071 "xapian.ccmod"
debug_malloc_pass(rset=Pike_sp[2-3].u.object);
{
Enquire *enquire;
enquire = THIS->object_data->enquire;
MSet mset;
MSet * mset1;
struct object * o;
RSet * rseto;

rseto = OBJ2_XAPIAN_RSET(rset)->object_data->rset;

try
{
mset = enquire->get_mset((doccount)first, (doccount)maxitems, 
rseto, 0);

}
catch(InvalidArgumentError &e)
{
pop_n_elems(args);
Pike_error("InvalidArgumentError\n");
} 

pop_n_elems(args);

o = fast_clone_object(Xapian_MSet_program);
mset1 = new MSet(mset);
OBJ2_XAPIAN_MSET(o)->object_data->mset = mset1;

push_object(o);


}

}
#define f_Xapian_Enquire_get_mset_2_defined

#ifdef f_Xapian_Enquire_get_mset_2_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Enquire_get_mset_2_fun_num = 0;

#endif /* f_Xapian_Enquire_get_mset_2_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Enquire_get_mset_2(INT32 args) {
#line 5105 "xapian.ccmod"
INT_TYPE first;
#line 5105 "xapian.ccmod"
INT_TYPE maxitems;
#line 5105 "xapian.ccmod"
struct object * rset;
#line 5105 "xapian.ccmod"
struct svalue * mdecider;
#line 5105 "xapian.ccmod"
if(args != 4) wrong_number_of_args_error("get_mset",args,4);
#line 5105 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-4]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_mset",1,"int");
#line 5105 "xapian.ccmod"
first=Pike_sp[0-4].u.integer;
#line 5105 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-4]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_mset",2,"int");
#line 5105 "xapian.ccmod"
maxitems=Pike_sp[1-4].u.integer;
#line 5105 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-4]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("get_mset",3,"object");
#line 5105 "xapian.ccmod"
debug_malloc_pass(rset=Pike_sp[2-4].u.object);
#line 5105 "xapian.ccmod"
if(TYPEOF(Pike_sp[3-4]) != PIKE_T_FUNCTION) SIMPLE_ARG_TYPE_ERROR("get_mset",4,"function");
#line 5105 "xapian.ccmod"
mdecider=Pike_sp+3-4; dmalloc_touch_svalue(Pike_sp+3-4);
{
Enquire *enquire;
enquire = THIS->object_data->enquire;
MSet mset;
MSet * mset1;
struct object * o;
RSet * rseto;
PikeMatchDeciderProxy * md;

rseto = OBJ2_XAPIAN_RSET(rset)->object_data->rset;

md = new PikeMatchDeciderProxy(mdecider);

try
{
mset = enquire->get_mset((doccount)first, (doccount)maxitems, 
rseto, md);

}
catch(InvalidArgumentError &e)
{
pop_n_elems(args);
Pike_error("InvalidArgumentError\n");
} 

pop_n_elems(args);

o = fast_clone_object(Xapian_MSet_program);
mset1 = new MSet(mset);
OBJ2_XAPIAN_MSET(o)->object_data->mset = mset1;

push_object(o);

}

}
#line 5141 "xapian.ccmod"
/*  Enquire.object get_mset(int first, int maxitems, int checkatleast) */
/*! @decl object get_mset(int first, int maxitems, int checkatleast)
 *!
 *!  
 *! @param first
 *!  
* !
 *! @param maxitems
 *!  
* !
 *! @param checkatleast
 *!  
* !
 *! @returns
 *!  
 *!
 */
#define f_Xapian_Enquire_get_mset_3_defined

#ifdef f_Xapian_Enquire_get_mset_3_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Enquire_get_mset_3_fun_num = 0;

#endif /* f_Xapian_Enquire_get_mset_3_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Enquire_get_mset_3(INT32 args) {
#line 5158 "xapian.ccmod"
INT_TYPE first;
#line 5158 "xapian.ccmod"
INT_TYPE maxitems;
#line 5158 "xapian.ccmod"
INT_TYPE checkatleast;
#line 5158 "xapian.ccmod"
if(args != 3) wrong_number_of_args_error("get_mset",args,3);
#line 5158 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_mset",1,"int");
#line 5158 "xapian.ccmod"
first=Pike_sp[0-3].u.integer;
#line 5158 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_mset",2,"int");
#line 5158 "xapian.ccmod"
maxitems=Pike_sp[1-3].u.integer;
#line 5158 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_mset",3,"int");
#line 5158 "xapian.ccmod"
checkatleast=Pike_sp[2-3].u.integer;
{
Enquire *enquire;
enquire = THIS->object_data->enquire;
MSet mset;
MSet * mset1;
struct object * o;

try
{
mset = enquire->get_mset((doccount)first, (doccount)maxitems, 
(doccount)checkatleast);

}
catch(InvalidArgumentError &e)
{
pop_n_elems(args);
Pike_error("InvalidArgumentError\n");
} 

pop_n_elems(args);

o = fast_clone_object(Xapian_MSet_program);
mset1 = new MSet(mset);
OBJ2_XAPIAN_MSET(o)->object_data->mset = mset1;

push_object(o);
}


}

#if defined(f_Xapian_Enquire_get_mset_1_defined) || defined(f_Xapian_Enquire_get_mset_2_defined) || defined(f_Xapian_Enquire_get_mset_3_defined)
#define f_Xapian_Enquire_get_mset_defined

#ifdef Xapian_Enquire_f_Xapian_Enquire_get_mset_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t Xapian_Enquire_f_Xapian_Enquire_get_mset_fun_num = 0;

#endif /* Xapian_Enquire_f_Xapian_Enquire_get_mset_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Enquire_get_mset(INT32 args) {
  switch(args) {
   case 3:
    switch(TYPEOF(Pike_sp[2-3])) {
     case PIKE_T_INT:

#ifdef f_Xapian_Enquire_get_mset_3_defined
      f_Xapian_Enquire_get_mset_3(args);
      return;

#endif /* f_Xapian_Enquire_get_mset_3_defined */
      break;
     case PIKE_T_OBJECT:

#ifdef f_Xapian_Enquire_get_mset_1_defined
      f_Xapian_Enquire_get_mset_1(args);
      return;

#endif /* f_Xapian_Enquire_get_mset_1_defined */
      break;
     default:
      SIMPLE_BAD_ARG_ERROR("get_mset",3,"int|object");
    }
   case 4:

#ifdef f_Xapian_Enquire_get_mset_2_defined
    f_Xapian_Enquire_get_mset_2(args);
    return;

#endif /* f_Xapian_Enquire_get_mset_2_defined */
    break;
   default:
    wrong_number_of_args_error("get_mset",args,3);
  }
}

#endif /* f_Xapian_Enquire_get_mset_1_defined, f_Xapian_Enquire_get_mset_2_defined, f_Xapian_Enquire_get_mset_3_defined */
#line 5188 "xapian.ccmod"
/*  Enquire.object get_eset(int maxitems, object rset, function|void edecider) */
/*! @decl object get_eset(int maxitems, object rset, function|void edecider)
 *!
 *!  
 *! @param maxitems
 *!  
* !
 *! @param rset
 *!  
* !
 *! @param edecider
 *!  
* !
 *! @returns
 *!  
 *!
 */
#define f_Xapian_Enquire_get_eset_1_defined

#ifdef f_Xapian_Enquire_get_eset_1_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Enquire_get_eset_1_fun_num = 0;

#endif /* f_Xapian_Enquire_get_eset_1_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Enquire_get_eset_1(INT32 args) {
#line 5205 "xapian.ccmod"
INT_TYPE maxitems;
#line 5205 "xapian.ccmod"
struct object * rset;
#line 5205 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("get_eset",args,2);
#line 5205 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_eset",1,"int");
#line 5205 "xapian.ccmod"
maxitems=Pike_sp[0-2].u.integer;
#line 5205 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("get_eset",2,"object");
#line 5205 "xapian.ccmod"
debug_malloc_pass(rset=Pike_sp[1-2].u.object);
{
Enquire *enquire;
enquire = THIS->object_data->enquire;
ESet eset;
ESet * eset1;
RSet * rseto;
struct object * o;

rseto = OBJ2_XAPIAN_RSET(rset)->object_data->rset;

try
{
eset = enquire->get_eset((termcount)maxitems, *rseto, 0);

}
catch(InvalidArgumentError &e)
{
pop_n_elems(args);
Pike_error("InvalidArgumentError\n");
} 

pop_n_elems(args);

o = fast_clone_object(Xapian_ESet_program);
eset1 = new ESet(eset);
OBJ2_XAPIAN_ESET(o)->object_data->eset = eset1;

push_object(o);
}

}
#define f_Xapian_Enquire_get_eset_2_defined

#ifdef f_Xapian_Enquire_get_eset_2_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Enquire_get_eset_2_fun_num = 0;

#endif /* f_Xapian_Enquire_get_eset_2_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Enquire_get_eset_2(INT32 args) {
#line 5236 "xapian.ccmod"
INT_TYPE maxitems;
#line 5236 "xapian.ccmod"
struct object * rset;
#line 5236 "xapian.ccmod"
struct svalue * edecider;
#line 5236 "xapian.ccmod"
if(args != 3) wrong_number_of_args_error("get_eset",args,3);
#line 5236 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_eset",1,"int");
#line 5236 "xapian.ccmod"
maxitems=Pike_sp[0-3].u.integer;
#line 5236 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-3]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("get_eset",2,"object");
#line 5236 "xapian.ccmod"
debug_malloc_pass(rset=Pike_sp[1-3].u.object);
#line 5236 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-3]) != PIKE_T_FUNCTION) SIMPLE_ARG_TYPE_ERROR("get_eset",3,"function");
#line 5236 "xapian.ccmod"
edecider=Pike_sp+2-3; dmalloc_touch_svalue(Pike_sp+2-3);
{
Enquire *enquire;
enquire = THIS->object_data->enquire;
ESet eset;
ESet * eset1;
RSet * rseto;
struct object * o;
PikeExpandDeciderProxy * ed;

ed = new PikeExpandDeciderProxy(edecider);

rseto = OBJ2_XAPIAN_RSET(rset)->object_data->rset;

try
{
eset = enquire->get_eset((termcount)maxitems, *rseto, ed);

}
catch(InvalidArgumentError &e)
{
pop_n_elems(args);
Pike_error("InvalidArgumentError\n");
} 

pop_n_elems(args);

o = fast_clone_object(Xapian_ESet_program);
eset1 = new ESet(eset);
OBJ2_XAPIAN_ESET(o)->object_data->eset = eset1;

push_object(o);
}

}
#line 5270 "xapian.ccmod"
/*  Enquire.object get_eset(int maxitems, object rset, int flags, float k, function|void edecider) */
/*! @decl object get_eset(int maxitems, object rset, int flags, float k, function|void edecider)
 *!
 *!  
 *! @param maxitems
 *!  
* !
 *! @param rset
 *!  
* !
 *! @param flags
 *!  
* !
 *! @param k
 *!  
* !
 *! @param edecider
 *!  
* !
 *! @returns
 *!  
 *!
 */
#define f_Xapian_Enquire_get_eset_3_defined

#ifdef f_Xapian_Enquire_get_eset_3_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Enquire_get_eset_3_fun_num = 0;

#endif /* f_Xapian_Enquire_get_eset_3_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Enquire_get_eset_3(INT32 args) {
#line 5293 "xapian.ccmod"
INT_TYPE maxitems;
#line 5293 "xapian.ccmod"
struct object * rset;
#line 5293 "xapian.ccmod"
INT_TYPE flags;
#line 5293 "xapian.ccmod"
FLOAT_TYPE k;
#line 5293 "xapian.ccmod"
struct svalue * edecider;
#line 5293 "xapian.ccmod"
if(args != 5) wrong_number_of_args_error("get_eset",args,5);
#line 5293 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-5]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_eset",1,"int");
#line 5293 "xapian.ccmod"
maxitems=Pike_sp[0-5].u.integer;
#line 5293 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-5]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("get_eset",2,"object");
#line 5293 "xapian.ccmod"
debug_malloc_pass(rset=Pike_sp[1-5].u.object);
#line 5293 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-5]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_eset",3,"int");
#line 5293 "xapian.ccmod"
flags=Pike_sp[2-5].u.integer;
#line 5293 "xapian.ccmod"
if(TYPEOF(Pike_sp[3-5]) != PIKE_T_FLOAT) SIMPLE_ARG_TYPE_ERROR("get_eset",4,"float");
#line 5293 "xapian.ccmod"
k=Pike_sp[3-5].u.float_number;
#line 5293 "xapian.ccmod"
if(TYPEOF(Pike_sp[4-5]) != PIKE_T_FUNCTION) SIMPLE_ARG_TYPE_ERROR("get_eset",5,"function");
#line 5293 "xapian.ccmod"
edecider=Pike_sp+4-5; dmalloc_touch_svalue(Pike_sp+4-5);
{
Enquire *enquire;
enquire = THIS->object_data->enquire;
ESet eset;
ESet * eset1;
RSet * rseto;
struct object * o;
PikeExpandDeciderProxy * ed;

ed = new PikeExpandDeciderProxy(edecider);

rseto = OBJ2_XAPIAN_RSET(rset)->object_data->rset;

try
{
eset = enquire->get_eset((termcount)maxitems, *rseto, (int)flags, (double)k, ed);

}
catch(InvalidArgumentError &e)
{
pop_n_elems(args);
Pike_error("InvalidArgumentError\n");
} 

pop_n_elems(args);

o = fast_clone_object(Xapian_ESet_program);
eset1 = new ESet(eset);
OBJ2_XAPIAN_ESET(o)->object_data->eset = eset1;

push_object(o);
}

}
#define f_Xapian_Enquire_get_eset_4_defined

#ifdef f_Xapian_Enquire_get_eset_4_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Enquire_get_eset_4_fun_num = 0;

#endif /* f_Xapian_Enquire_get_eset_4_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Enquire_get_eset_4(INT32 args) {
#line 5327 "xapian.ccmod"
INT_TYPE maxitems;
#line 5327 "xapian.ccmod"
struct object * rset;
#line 5327 "xapian.ccmod"
INT_TYPE flags;
#line 5327 "xapian.ccmod"
FLOAT_TYPE k;
#line 5327 "xapian.ccmod"
if(args != 4) wrong_number_of_args_error("get_eset",args,4);
#line 5327 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-4]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_eset",1,"int");
#line 5327 "xapian.ccmod"
maxitems=Pike_sp[0-4].u.integer;
#line 5327 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-4]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("get_eset",2,"object");
#line 5327 "xapian.ccmod"
debug_malloc_pass(rset=Pike_sp[1-4].u.object);
#line 5327 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-4]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_eset",3,"int");
#line 5327 "xapian.ccmod"
flags=Pike_sp[2-4].u.integer;
#line 5327 "xapian.ccmod"
if(TYPEOF(Pike_sp[3-4]) != PIKE_T_FLOAT) SIMPLE_ARG_TYPE_ERROR("get_eset",4,"float");
#line 5327 "xapian.ccmod"
k=Pike_sp[3-4].u.float_number;
{
Enquire *enquire;
enquire = THIS->object_data->enquire;
ESet eset;
ESet * eset1;
RSet * rseto;
struct object * o;

rseto = OBJ2_XAPIAN_RSET(rset)->object_data->rset;

try
{
eset = enquire->get_eset((termcount)maxitems, *rseto, (int)flags, (double)k, 0);

}
catch(InvalidArgumentError &e)
{
pop_n_elems(args);
Pike_error("InvalidArgumentError\n");
} 

pop_n_elems(args);

o = fast_clone_object(Xapian_ESet_program);
eset1 = new ESet(eset);
OBJ2_XAPIAN_ESET(o)->object_data->eset = eset1;

push_object(o);
}

}

#if defined(f_Xapian_Enquire_get_eset_1_defined) || defined(f_Xapian_Enquire_get_eset_2_defined) || defined(f_Xapian_Enquire_get_eset_3_defined) || defined(f_Xapian_Enquire_get_eset_4_defined)
#define f_Xapian_Enquire_get_eset_defined

#ifdef Xapian_Enquire_f_Xapian_Enquire_get_eset_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t Xapian_Enquire_f_Xapian_Enquire_get_eset_fun_num = 0;

#endif /* Xapian_Enquire_f_Xapian_Enquire_get_eset_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Enquire_get_eset(INT32 args) {
  switch(args) {
   case 2:

#ifdef f_Xapian_Enquire_get_eset_1_defined
    f_Xapian_Enquire_get_eset_1(args);
    return;

#endif /* f_Xapian_Enquire_get_eset_1_defined */
    break;
   case 3:

#ifdef f_Xapian_Enquire_get_eset_2_defined
    f_Xapian_Enquire_get_eset_2(args);
    return;

#endif /* f_Xapian_Enquire_get_eset_2_defined */
    break;
   case 4:

#ifdef f_Xapian_Enquire_get_eset_4_defined
    f_Xapian_Enquire_get_eset_4(args);
    return;

#endif /* f_Xapian_Enquire_get_eset_4_defined */
    break;
   case 5:

#ifdef f_Xapian_Enquire_get_eset_3_defined
    f_Xapian_Enquire_get_eset_3(args);
    return;

#endif /* f_Xapian_Enquire_get_eset_3_defined */
    break;
   default:
    wrong_number_of_args_error("get_eset",args,2);
  }
}

#endif /* f_Xapian_Enquire_get_eset_1_defined, f_Xapian_Enquire_get_eset_2_defined, f_Xapian_Enquire_get_eset_3_defined, f_Xapian_Enquire_get_eset_4_defined */
/*! @decl object get_matching_terms(int docid)
 *!
 *! @returns
 *!   a @[TermIterator] object which can also be passed to @[foreach]()
 */
#define f_Xapian_Enquire_get_matching_terms_defined

#ifdef f_Xapian_Enquire_get_matching_terms_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Enquire_get_matching_terms_fun_num = 0;

#endif /* f_Xapian_Enquire_get_matching_terms_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Enquire_get_matching_terms(INT32 args) {
#line 5363 "xapian.ccmod"
INT_TYPE docid;
#line 5363 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("get_matching_terms",args,1);
#line 5363 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_matching_terms",1,"int");
#line 5363 "xapian.ccmod"
docid=Pike_sp[0-1].u.integer;
{
TermIterator ti;
TermIterator * ti2;
struct object * o;

Enquire *enquire;
enquire = THIS->object_data->enquire;


ti = enquire->get_matching_terms_begin(docid);
ti2 = new TermIterator(ti);

o = fast_clone_object(Xapian_TermIterator_program);

OBJ2_XAPIAN_TERMITERATOR(o)->object_data->termi = ti2;
OBJ2_XAPIAN_TERMITERATOR(o)->tie = new TermIterator(enquire->get_matching_terms_end(docid));

push_object(o); 

}

}
#line 5385 "xapian.ccmod"
/*  Enquire.string get_description() */
/*! @decl string get_description()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_Enquire_get_description_defined

#ifdef f_Xapian_Enquire_get_description_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Enquire_get_description_fun_num = 0;

#endif /* f_Xapian_Enquire_get_description_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Enquire_get_description(INT32 args) {
#line 5393 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_description",args,0);
{
Enquire *enquire;
enquire = THIS->object_data->enquire;

string str = enquire->get_description();

push_text(str.c_str());
}

}
#define f_Xapian_Enquire_cq__sprintf_defined

#ifdef f_Xapian_Enquire_cq__sprintf_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_Enquire_cq__sprintf_fun_num = 0;

#endif /* f_Xapian_Enquire_cq__sprintf_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_Enquire_cq__sprintf(INT32 args) {
#line 5403 "xapian.ccmod"
INT_TYPE conversion_type;
#line 5403 "xapian.ccmod"
struct mapping * params;
#line 5403 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 5403 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 5403 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 5403 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 5403 "xapian.ccmod"
debug_malloc_pass(params=Pike_sp[1-2].u.mapping);
{
Enquire *enquire;
if(THIS && THIS->object_data && conversion_type == 'O')
{
enquire = THIS->object_data->enquire;

string str = enquire->get_description();
pop_n_elems(args);
push_text(str.c_str());
}
else
{
pop_n_elems(args);
push_int(0);
}
}


}

#undef internal_init_Xapian_Enquire_defined
#define internal_init_Xapian_Enquire_defined

#undef Xapian_Enquire_event_handler_defined
#define Xapian_Enquire_event_handler_defined
static void init_Xapian_Enquire_struct(void)
#line 5423 "xapian.ccmod"
{
XAPIAN_ENQUIRE_OBJECT_DATA * dta = 
(XAPIAN_ENQUIRE_OBJECT_DATA*)malloc(sizeof(XAPIAN_ENQUIRE_OBJECT_DATA));
if (!dta)
Pike_error("init_sample: Out of memory!\n");

dta->enquire = NULL;
THIS->object_data = dta;
}


#undef Xapian_Enquire_gc_live_obj
#define Xapian_Enquire_gc_live_obj

#undef internal_exit_Xapian_Enquire_defined
#define internal_exit_Xapian_Enquire_defined

#undef Xapian_Enquire_event_handler_defined
#define Xapian_Enquire_event_handler_defined
static void exit_Xapian_Enquire_struct(void)
#line 5434 "xapian.ccmod"
{
if(THIS->object_data)
{
Enquire *enquire;
enquire = THIS->object_data->enquire;
/* if(enquire) delete enquire; */
free(THIS->object_data);
}
}


#undef extra_Xapian_Enquire_defined
#define extra_Xapian_Enquire_defined

#ifdef Xapian_Enquire_event_handler_defined
static void Xapian_Enquire_event_handler(int ev) {
  switch(ev) {

#ifdef internal_init_Xapian_Enquire_defined
  case PROG_EVENT_INIT: init_Xapian_Enquire_struct(); break;

#endif /* internal_init_Xapian_Enquire_defined */

#ifdef internal_exit_Xapian_Enquire_defined
  case PROG_EVENT_EXIT: exit_Xapian_Enquire_struct(); break;

#endif /* internal_exit_Xapian_Enquire_defined */
  default: break; 
  }
}

#endif /* Xapian_Enquire_event_handler_defined */

#undef internal_init_Xapian_defined
#define internal_init_Xapian_defined

#undef Xapian_event_handler_defined_2
#define Xapian_event_handler_defined_2
static void init_Xapian_struct(void)
#line 5455 "xapian.ccmod"
{
}

#undef Xapian_gc_live_obj
#define Xapian_gc_live_obj

#undef internal_exit_Xapian_defined
#define internal_exit_Xapian_defined

#undef Xapian_event_handler_defined_2
#define Xapian_event_handler_defined_2
static void exit_Xapian_struct(void)
#line 5458 "xapian.ccmod"
{
}

#undef extra_Xapian_defined
#define extra_Xapian_defined
/*!  @endclass
 */


/*! @class TermGenerator
*/

#undef class_Xapian_TermGenerator_defined
#define class_Xapian_TermGenerator_defined
DEFAULT_CMOD_STORAGE struct program *Xapian_TermGenerator_program=NULL;

#ifdef Xapian_TermGenerator_program_fun_num_used
DEFAULT_CMOD_STORAGE int Xapian_TermGenerator_program_fun_num=-1;
#endif /* Xapian_TermGenerator_program_fun_num_used */

#undef var_object_data_Xapian_TermGenerator_defined
#define var_object_data_Xapian_TermGenerator_defined

#undef THIS
#define THIS ((struct Xapian_TermGenerator_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef THIS_XAPIAN_TERMGENERATOR
#define THIS_XAPIAN_TERMGENERATOR ((struct Xapian_TermGenerator_struct *)(Pike_interpreter.frame_pointer->current_storage))

#undef OBJ2_XAPIAN_TERMGENERATOR
#define OBJ2_XAPIAN_TERMGENERATOR(o) ((struct Xapian_TermGenerator_struct *)(o->storage+Xapian_TermGenerator_storage_offset))

#undef GET_XAPIAN_TERMGENERATOR_STORAGE
#define GET_XAPIAN_TERMGENERATOR_STORAGE(o) ((struct Xapian_TermGenerator_struct *)(o->storage+Xapian_TermGenerator_storage_offset)
static ptrdiff_t Xapian_TermGenerator_storage_offset;
struct Xapian_TermGenerator_struct {

#ifdef var_object_data_Xapian_TermGenerator_defined
#line 5483 "xapian.ccmod"
XAPIAN_TERMGENERATOR_OBJECT_DATA *object_data;
#endif /* var_object_data_Xapian_TermGenerator_defined */
};
#ifdef PIKE_DEBUG
/* Ensure the struct is used in a variable declaration, or else gdb might not see it. */
static struct Xapian_TermGenerator_struct *Xapian_TermGenerator_gdb_dummy_ptr;
#endif
#define f_Xapian_TermGenerator_create_defined

#ifdef f_Xapian_TermGenerator_create_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_TermGenerator_create_fun_num = 0;

#endif /* f_Xapian_TermGenerator_create_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_TermGenerator_create(INT32 args) {
#line 5485 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("create",args,0);
{
TermGenerator * termgenerator;
termgenerator = new TermGenerator();

THIS->object_data->termgenerator = termgenerator;
}


}
#define f_Xapian_TermGenerator_set_flags_defined

#ifdef f_Xapian_TermGenerator_set_flags_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_TermGenerator_set_flags_fun_num = 0;

#endif /* f_Xapian_TermGenerator_set_flags_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_TermGenerator_set_flags(INT32 args) {
#line 5494 "xapian.ccmod"
INT_TYPE flags;
#line 5494 "xapian.ccmod"
INT_TYPE mask;
#line 5494 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("set_flags",args,2);
#line 5494 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_flags",1,"int");
#line 5494 "xapian.ccmod"
flags=Pike_sp[0-2].u.integer;
#line 5494 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_flags",2,"int");
#line 5494 "xapian.ccmod"
mask=Pike_sp[1-2].u.integer;
{
TermGenerator * termgenerator;
termgenerator = (TermGenerator*)THIS->object_data->termgenerator;

TermGenerator::flags f;
TermGenerator::flags m;

f = (TermGenerator::flags)flags;
m = (TermGenerator::flags)mask;

termgenerator->set_flags(f, m);

pop_n_elems(args);
}

}
#line 5510 "xapian.ccmod"
/*  TermGenerator.void set_document(object document) */
/*! @decl void set_document(object document)
 *!
 *!  
 *! @param document
 *!  
* !
 *! @returns
 *!  
 *!
 */
#define f_Xapian_TermGenerator_set_document_defined

#ifdef f_Xapian_TermGenerator_set_document_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_TermGenerator_set_document_fun_num = 0;

#endif /* f_Xapian_TermGenerator_set_document_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_TermGenerator_set_document(INT32 args) {
#line 5521 "xapian.ccmod"
struct object * document;
#line 5521 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("set_document",args,1);
#line 5521 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("set_document",1,"object");
#line 5521 "xapian.ccmod"
debug_malloc_pass(document=Pike_sp[0-1].u.object);
{
TermGenerator * termgenerator;
Document * doc;
struct Xapian_Document_struct * od;

termgenerator = (TermGenerator*)THIS->object_data->termgenerator;

od = OBJ2_XAPIAN_DOCUMENT(document);

if(!od) Pike_error("Not a Document!\n");

doc = od->object_data->document;

try
{
termgenerator->set_document(*doc);
}
catch(Xapian::DatabaseCorruptError &e)
{
Pike_error("DatabaseCorruptError\n");
}
catch(Xapian::DatabaseError &e)
{
Pike_error("DatabaseError\n");
}
catch(Xapian::InvalidArgumentError &e)
{
/*printf("%s\n",e.get_msg().c_str()); */
Pike_error("InvalidArgumentError\n");
}
pop_n_elems(args);
}

}
/*! @decl object get_document()
*!
*/
#define f_Xapian_TermGenerator_get_document_defined

#ifdef f_Xapian_TermGenerator_get_document_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_TermGenerator_get_document_fun_num = 0;

#endif /* f_Xapian_TermGenerator_get_document_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_TermGenerator_get_document(INT32 args) {
#line 5558 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_document",args,0);
{
TermGenerator * termgenerator;
Document doc;
Document *doc2;
struct object * o;
try {
termgenerator = (TermGenerator*)THIS->object_data->termgenerator;
doc = termgenerator->get_document(); 
doc2 = new Document(doc);

o = fast_clone_object(Xapian_Document_program);
OBJ2_XAPIAN_DOCUMENT(o)->object_data->document = doc2;

push_object(o);
}
catch(RangeError &e)
{
pop_n_elems(args);
Pike_error("RangeError\n");
}

}

}
#line 5582 "xapian.ccmod"
/*  TermGenerator.void set_stemmer(object stemmer) */
/*! @decl void set_stemmer(object stemmer)
 *!
 *!  
 *! @param stemmer
 *!  
* !
 *!
 */
#define f_Xapian_TermGenerator_set_stemmer_defined

#ifdef f_Xapian_TermGenerator_set_stemmer_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_TermGenerator_set_stemmer_fun_num = 0;

#endif /* f_Xapian_TermGenerator_set_stemmer_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_TermGenerator_set_stemmer(INT32 args) {
#line 5591 "xapian.ccmod"
struct object * stemmer;
#line 5591 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("set_stemmer",args,1);
#line 5591 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("set_stemmer",1,"object");
#line 5591 "xapian.ccmod"
debug_malloc_pass(stemmer=Pike_sp[0-1].u.object);
{
TermGenerator * termgenerator;
Stem * s;

termgenerator = THIS->object_data->termgenerator;
s = OBJ2_XAPIAN_STEM(stemmer)->object_data->stem; 
termgenerator->set_stemmer((const Stem)*s);

pop_n_elems(args);
}

}
#line 5603 "xapian.ccmod"
/*  TermGenerator.void set_stopper(object stopper) */
/*! @decl void set_stopper(object stopper)
 *!
 *!  
 *! @param stopper
 *!  
* !
 *!
 */
#define f_Xapian_TermGenerator_set_stopper_defined

#ifdef f_Xapian_TermGenerator_set_stopper_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_TermGenerator_set_stopper_fun_num = 0;

#endif /* f_Xapian_TermGenerator_set_stopper_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_TermGenerator_set_stopper(INT32 args) {
#line 5612 "xapian.ccmod"
struct object * stopper;
#line 5612 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("set_stopper",args,1);
#line 5612 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("set_stopper",1,"object");
#line 5612 "xapian.ccmod"
debug_malloc_pass(stopper=Pike_sp[0-1].u.object);
{
TermGenerator * termgenerator;
Stopper * s;

termgenerator = THIS->object_data->termgenerator;
s = OBJ2_XAPIAN_STOPPER(stopper)->object_data->stopper; 
termgenerator->set_stopper((const Stopper*)s);

pop_n_elems(args);
}

}
#line 5624 "xapian.ccmod"
/*  TermGenerator.void set_database(object database) */
/*! @decl void set_database(object database)
 *!
 *!  
 *! @param database
 *!  
 *!
 *!
 */
#define f_Xapian_TermGenerator_set_database_defined

#ifdef f_Xapian_TermGenerator_set_database_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_TermGenerator_set_database_fun_num = 0;

#endif /* f_Xapian_TermGenerator_set_database_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_TermGenerator_set_database(INT32 args) {
#line 5633 "xapian.ccmod"
struct object * database;
#line 5633 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("set_database",args,1);
#line 5633 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("set_database",1,"object");
#line 5633 "xapian.ccmod"
debug_malloc_pass(database=Pike_sp[0-1].u.object);
{
TermGenerator * termgenerator;
Database * d;

termgenerator = THIS->object_data->termgenerator;
d = OBJ2_XAPIAN_DATABASE(database)->object_data->database; 

termgenerator->set_database((const Xapian::WritableDatabase&)*d);

pop_n_elems(args);
}



}
/*! @decl void set_termpos(int termpos)
 *!
 */
#define f_Xapian_TermGenerator_set_termpos_defined

#ifdef f_Xapian_TermGenerator_set_termpos_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_TermGenerator_set_termpos_fun_num = 0;

#endif /* f_Xapian_TermGenerator_set_termpos_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_TermGenerator_set_termpos(INT32 args) {
#line 5651 "xapian.ccmod"
INT_TYPE termpos;
#line 5651 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("set_termpos",args,1);
#line 5651 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_termpos",1,"int");
#line 5651 "xapian.ccmod"
termpos=Pike_sp[0-1].u.integer;
{
TermGenerator * termgenerator;

termgenerator = THIS->object_data->termgenerator;

termgenerator->set_termpos((Xapian::termcount)termpos);

pop_n_elems(args);
}


}
/*! @decl int get_termpos()
 *!
 */
#define f_Xapian_TermGenerator_get_termpos_defined

#ifdef f_Xapian_TermGenerator_get_termpos_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_TermGenerator_get_termpos_fun_num = 0;

#endif /* f_Xapian_TermGenerator_get_termpos_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_TermGenerator_get_termpos(INT32 args) {
#line 5666 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_termpos",args,0);
{
TermGenerator * termgenerator;

termgenerator = THIS->object_data->termgenerator;

Xapian::termcount termpos;

termpos = termgenerator->get_termpos();

push_int((int)termpos);
}


}
/*! @decl void index_text(string text, int weight, string prefix)
 *!
 *! @note
 *!   this function is wide-string aware.
*/
#define f_Xapian_TermGenerator_index_text_defined

#ifdef f_Xapian_TermGenerator_index_text_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_TermGenerator_index_text_fun_num = 0;

#endif /* f_Xapian_TermGenerator_index_text_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_TermGenerator_index_text(INT32 args) {
#line 5685 "xapian.ccmod"
struct pike_string * text;
#line 5685 "xapian.ccmod"
INT_TYPE weight;
#line 5685 "xapian.ccmod"
struct pike_string * prefix;
#line 5685 "xapian.ccmod"
if(args != 3) wrong_number_of_args_error("index_text",args,3);
#line 5685 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-3]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("index_text",1,"string");
#line 5685 "xapian.ccmod"
debug_malloc_pass(text=Pike_sp[0-3].u.string);
#line 5685 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("index_text",2,"int");
#line 5685 "xapian.ccmod"
weight=Pike_sp[1-3].u.integer;
#line 5685 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-3]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("index_text",3,"string");
#line 5685 "xapian.ccmod"
debug_malloc_pass(prefix=Pike_sp[2-3].u.string);
{
TermGenerator * termgenerator;

ref_push_string(text);
f_string_to_utf8(1);

Xapian::Utf8Iterator * text_iter = new Xapian::Utf8Iterator((const char *)Pike_sp[-1].u.string->str, (size_t) Pike_sp[-1].u.string->len);
string prefix_str((const char *)prefix->str, (size_t)prefix->len);

termgenerator = THIS->object_data->termgenerator;

termgenerator->index_text(*text_iter, (Xapian::termcount) weight, prefix_str);

pop_n_elems(args+1);
}


}
/*! @decl void index_text_without_positions(string text, int weight, string prefix)
 *!
 *! @note
 *!   this function is wide-string aware.
*/
#define f_Xapian_TermGenerator_index_text_without_positions_defined

#ifdef f_Xapian_TermGenerator_index_text_without_positions_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_TermGenerator_index_text_without_positions_fun_num = 0;

#endif /* f_Xapian_TermGenerator_index_text_without_positions_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_TermGenerator_index_text_without_positions(INT32 args) {
#line 5708 "xapian.ccmod"
struct pike_string * text;
#line 5708 "xapian.ccmod"
INT_TYPE weight;
#line 5708 "xapian.ccmod"
struct pike_string * prefix;
#line 5708 "xapian.ccmod"
if(args != 3) wrong_number_of_args_error("index_text_without_positions",args,3);
#line 5708 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-3]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("index_text_without_positions",1,"string");
#line 5708 "xapian.ccmod"
debug_malloc_pass(text=Pike_sp[0-3].u.string);
#line 5708 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("index_text_without_positions",2,"int");
#line 5708 "xapian.ccmod"
weight=Pike_sp[1-3].u.integer;
#line 5708 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-3]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("index_text_without_positions",3,"string");
#line 5708 "xapian.ccmod"
debug_malloc_pass(prefix=Pike_sp[2-3].u.string);
{
TermGenerator * termgenerator;

ref_push_string(text);
f_string_to_utf8(1);

Xapian::Utf8Iterator * text_iter = new Xapian::Utf8Iterator((const char *)Pike_sp[-1].u.string->str, (size_t) Pike_sp[-1].u.string->len);
string prefix_str((const char *)prefix->str, (size_t)prefix->len);

termgenerator = THIS->object_data->termgenerator;

termgenerator->index_text_without_positions(*text_iter, (Xapian::termcount) weight, prefix_str);

pop_n_elems(args+1);
}


}
#line 5726 "xapian.ccmod"
/*  Stopper.string get_description() */
/*! @decl string get_description()
 *!
 *!  
 *! @returns
 *!  
 *!
 */
#define f_Xapian_TermGenerator_get_description_defined

#ifdef f_Xapian_TermGenerator_get_description_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_TermGenerator_get_description_fun_num = 0;

#endif /* f_Xapian_TermGenerator_get_description_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_TermGenerator_get_description(INT32 args) {
#line 5734 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("get_description",args,0);
{
TermGenerator * termgenerator;
termgenerator = THIS->object_data->termgenerator;

string str = termgenerator->get_description();

push_text(str.c_str());
}

}
#define f_Xapian_TermGenerator_cq__sprintf_defined

#ifdef f_Xapian_TermGenerator_cq__sprintf_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_TermGenerator_cq__sprintf_fun_num = 0;

#endif /* f_Xapian_TermGenerator_cq__sprintf_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_TermGenerator_cq__sprintf(INT32 args) {
#line 5744 "xapian.ccmod"
INT_TYPE conversion_type;
#line 5744 "xapian.ccmod"
struct mapping * params;
#line 5744 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 5744 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 5744 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 5744 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 5744 "xapian.ccmod"
debug_malloc_pass(params=Pike_sp[1-2].u.mapping);
{
TermGenerator * termgenerator;


if(THIS && THIS->object_data && conversion_type == 'O')
{
termgenerator = THIS->object_data->termgenerator;

string str = termgenerator->get_description();
pop_n_elems(args);
push_text(str.c_str());
}
else
{
pop_n_elems(args);
push_int(0);
}
}

}

#undef internal_init_Xapian_TermGenerator_defined
#define internal_init_Xapian_TermGenerator_defined

#undef Xapian_TermGenerator_event_handler_defined
#define Xapian_TermGenerator_event_handler_defined
static void init_Xapian_TermGenerator_struct(void)
#line 5765 "xapian.ccmod"
{
XAPIAN_TERMGENERATOR_OBJECT_DATA * dta = 
(XAPIAN_TERMGENERATOR_OBJECT_DATA*)malloc(sizeof(XAPIAN_TERMGENERATOR_OBJECT_DATA));
if (!dta)
Pike_error("init_sample: Out of memory!\n");

dta->termgenerator = NULL;
THIS->object_data = dta;
}

/*  Weight.void destroy() */
/*! @decl void destroy()
 *!
 *!  
 *!
 */
#define f_Xapian_TermGenerator_destroy_defined

#ifdef f_Xapian_TermGenerator_destroy_fun_num_used
DEFAULT_CMOD_STORAGE ptrdiff_t f_Xapian_TermGenerator_destroy_fun_num = 0;

#endif /* f_Xapian_TermGenerator_destroy_fun_num_used */
DEFAULT_CMOD_STORAGE void f_Xapian_TermGenerator_destroy(INT32 args) {
#line 5781 "xapian.ccmod"
struct svalue * reason;
#line 5781 "xapian.ccmod"
if(args > 1) wrong_number_of_args_error("destroy",args,1);
#line 5781 "xapian.ccmod"
if ((args > 0) &&
    ((TYPEOF(Pike_sp[0-args]) != PIKE_T_INT) ||
     (SUBTYPEOF(Pike_sp[0-args]) != NUMBER_UNDEFINED))) {
#line 5781 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-args]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("destroy",1,"int|void");
#line 5781 "xapian.ccmod"
reason=Pike_sp+0-args; dmalloc_touch_svalue(Pike_sp+0-args);
#line 5781 "xapian.ccmod"
} else reason = NULL;
{

TermGenerator * termgenerator;
termgenerator = THIS->object_data->termgenerator;

if(termgenerator) 
{
delete termgenerator;
}

pop_n_elems(args);
}

}

#undef extra_Xapian_TermGenerator_defined
#define extra_Xapian_TermGenerator_defined

#undef Xapian_TermGenerator_gc_live_obj
#define Xapian_TermGenerator_gc_live_obj

#undef internal_exit_Xapian_TermGenerator_defined
#define internal_exit_Xapian_TermGenerator_defined

#undef Xapian_TermGenerator_event_handler_defined
#define Xapian_TermGenerator_event_handler_defined
static void exit_Xapian_TermGenerator_struct(void)
#line 5805 "xapian.ccmod"
{
if(THIS->object_data)
{

TermGenerator *termgenerator;
termgenerator = THIS->object_data->termgenerator;
/*    printf("shutting down!\n"); */
free(THIS->object_data);
}
}


#ifdef Xapian_TermGenerator_event_handler_defined
static void Xapian_TermGenerator_event_handler(int ev) {
  switch(ev) {

#ifdef internal_init_Xapian_TermGenerator_defined
  case PROG_EVENT_INIT: init_Xapian_TermGenerator_struct(); break;

#endif /* internal_init_Xapian_TermGenerator_defined */

#ifdef internal_exit_Xapian_TermGenerator_defined
  case PROG_EVENT_EXIT: exit_Xapian_TermGenerator_struct(); break;

#endif /* internal_exit_Xapian_TermGenerator_defined */
  default: break; 
  }
}

#endif /* Xapian_TermGenerator_event_handler_defined */
/*!  @endclass
*/


/*! @endmodule
 */

/*! @endmodule
 */




#ifdef Xapian_event_handler_defined_2
static void Xapian_event_handler(int ev) {
  switch(ev) {

#ifdef internal_init_Xapian_defined
  case PROG_EVENT_INIT: init_Xapian_struct(); break;

#endif /* internal_init_Xapian_defined */

#ifdef internal_exit_Xapian_defined
  case PROG_EVENT_EXIT: exit_Xapian_struct(); break;

#endif /* internal_exit_Xapian_defined */
  default: break; 
  }
}

#endif /* Xapian_event_handler_defined_2 */

#ifdef CMOD_MAP_PROGRAM_IDS_DEFINED
static int ___cmod_map_program_ids(int id)
{
  int i = 0;
  if( (id&0x7f000000) != 0x7f000000 ) return id;
  id = id&0x00ffffff;
#ifdef class_Xapian_Document_defined
if(id==17) return Xapian_Document_program->id;
#endif
#ifdef class_Xapian_TermIterator_defined
if(id==16) return Xapian_TermIterator_program->id;
#endif
#ifdef class_Xapian_ESetIterator_defined
if(id==19) return Xapian_ESetIterator_program->id;
#endif
#ifdef class_Xapian_Weight_defined
if(id==2) return Xapian_Weight_program->id;
#endif
#ifdef class_Xapian_MSetIterator_defined
if(id==18) return Xapian_MSetIterator_program->id;
#endif
#ifdef class_Xapian_BM25Weight_defined
if(id==3) return Xapian_BM25Weight_program->id;
#endif
#ifdef class_Xapian_RSet_defined
if(id==21) return Xapian_RSet_program->id;
#endif
#ifdef class_Xapian_BoolWeight_defined
if(id==4) return Xapian_BoolWeight_program->id;
#endif
#ifdef class_Xapian_MSet_defined
if(id==20) return Xapian_MSet_program->id;
#endif
#ifdef class_Xapian_TradWeight_defined
if(id==5) return Xapian_TradWeight_program->id;
#endif
#ifdef class_Xapian_Database_defined
if(id==23) return Xapian_Database_program->id;
#endif
#ifdef class_Xapian_ValueRangeProcessor_defined
if(id==6) return Xapian_ValueRangeProcessor_program->id;
#endif
#ifdef class_Xapian_ESet_defined
if(id==22) return Xapian_ESet_program->id;
#endif
#ifdef class_Xapian_StringValueRangeProcessor_defined
if(id==7) return Xapian_StringValueRangeProcessor_program->id;
#endif
#ifdef class_Xapian_QueryParser_defined
if(id==25) return Xapian_QueryParser_program->id;
#endif
#ifdef class_Xapian_NumberValueRangeProcessor_defined
if(id==8) return Xapian_NumberValueRangeProcessor_program->id;
#endif
#ifdef class_Xapian_WriteableDatabase_defined
if(id==24) return Xapian_WriteableDatabase_program->id;
#endif
#ifdef class_Xapian_DateValueRangeProcessor_defined
if(id==9) return Xapian_DateValueRangeProcessor_program->id;
#endif
#ifdef class_Xapian_TermGenerator_defined
if(id==27) return Xapian_TermGenerator_program->id;
#endif
#ifdef class_Xapian_Stopper_defined
if(id==10) return Xapian_Stopper_program->id;
#endif
#ifdef class_Xapian_Enquire_defined
if(id==26) return Xapian_Enquire_program->id;
#endif
#ifdef class_Xapian_SimpleStopper_defined
if(id==11) return Xapian_SimpleStopper_program->id;
#endif
#ifdef class_Xapian_Stem_defined
if(id==12) return Xapian_Stem_program->id;
#endif
#ifdef class_Xapian_Query_defined
if(id==13) return Xapian_Query_program->id;
#endif
#ifdef class_Xapian_PositionIterator_defined
if(id==14) return Xapian_PositionIterator_program->id;
#endif
#ifdef class_Xapian_ValueIterator_defined
if(id==15) return Xapian_ValueIterator_program->id;
#endif
  return 0;
}
#endif /* CMOD_MAP_PROGRAM_IDS_DEFINED */
PIKE_MODULE_INIT {

#ifdef CMOD_MAP_PROGRAM_IDS_DEFINED
set_program_id_to_id( ___cmod_map_program_ids );

#endif /* CMOD_MAP_PROGRAM_IDS_DEFINED */

#ifdef class_Xapian_Weight_defined

#ifdef PROG_XAPIAN_WEIGHT_ID
#line 206 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_WEIGHT);
#else
#line 206 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_WEIGHT_ID */
#line 206 "xapian.ccmod"
  Xapian_Weight_program = Pike_compiler->new_program;

#ifndef tObjImpl_XAPIAN_WEIGHT

#undef tObjIs_XAPIAN_WEIGHT
#define tObjIs_XAPIAN_WEIGHT "\3\1\177\0\0\2"

#undef tObjImpl_XAPIAN_WEIGHT
#define tObjImpl_XAPIAN_WEIGHT "\3\0\177\0\0\2"

#endif /* tObjImpl_XAPIAN_WEIGHT */

#ifdef THIS_XAPIAN_WEIGHT
  Xapian_Weight_storage_offset = ADD_STORAGE(struct Xapian_Weight_struct);
#endif /* THIS_XAPIAN_WEIGHT */

#ifdef Xapian_Weight_event_handler_defined
  pike_set_prog_event_callback(Xapian_Weight_event_handler);

#ifndef Xapian_Weight_gc_live_obj
  Pike_compiler->new_program->flags &= ~PROGRAM_LIVE_OBJ;

#endif /* Xapian_Weight_gc_live_obj */

#endif /* Xapian_Weight_event_handler_defined */

#ifdef f_Xapian_Weight_get_sumpart_needs_doclength_defined

#ifdef f_Xapian_Weight_get_sumpart_needs_doclength_fun_num_used
  f_Xapian_Weight_get_sumpart_needs_doclength_fun_num =
#endif /* f_Xapian_Weight_get_sumpart_needs_doclength_fun_num_used */
#line 218 "xapian.ccmod"
    ADD_FUNCTION2("get_sumpart_needs_doclength", f_Xapian_Weight_get_sumpart_needs_doclength, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Weight_get_sumpart_needs_doclength_defined */

#ifdef f_Xapian_Weight_get_maxpart_defined

#ifdef f_Xapian_Weight_get_maxpart_fun_num_used
  f_Xapian_Weight_get_maxpart_fun_num =
#endif /* f_Xapian_Weight_get_maxpart_fun_num_used */
#line 244 "xapian.ccmod"
    ADD_FUNCTION2("get_maxpart", f_Xapian_Weight_get_maxpart, tFunc(tNone,tFloat), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Weight_get_maxpart_defined */

#ifdef f_Xapian_Weight_get_maxextra_defined

#ifdef f_Xapian_Weight_get_maxextra_fun_num_used
  f_Xapian_Weight_get_maxextra_fun_num =
#endif /* f_Xapian_Weight_get_maxextra_fun_num_used */
#line 264 "xapian.ccmod"
    ADD_FUNCTION2("get_maxextra", f_Xapian_Weight_get_maxextra, tFunc(tNone,tFloat), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Weight_get_maxextra_defined */

#ifdef f_Xapian_Weight_get_sumextra_defined

#ifdef f_Xapian_Weight_get_sumextra_fun_num_used
  f_Xapian_Weight_get_sumextra_fun_num =
#endif /* f_Xapian_Weight_get_sumextra_fun_num_used */
#line 291 "xapian.ccmod"
    ADD_FUNCTION2("get_sumextra", f_Xapian_Weight_get_sumextra, tFunc("\10\200\0\0\0\177\377\377\377" "\10\200\0\0\0\177\377\377\377",tFloat), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Weight_get_sumextra_defined */

#ifdef f_Xapian_Weight_get_sumpart_defined

#ifdef f_Xapian_Weight_get_sumpart_fun_num_used
  f_Xapian_Weight_get_sumpart_fun_num =
#endif /* f_Xapian_Weight_get_sumpart_fun_num_used */
#line 320 "xapian.ccmod"
    ADD_FUNCTION2("get_sumpart", f_Xapian_Weight_get_sumpart, tFunc("\10\200\0\0\0\177\377\377\377" "\10\200\0\0\0\177\377\377\377" "\10\200\0\0\0\177\377\377\377",tFloat), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Weight_get_sumpart_defined */

#ifdef f_Xapian_Weight_serialise_defined

#ifdef f_Xapian_Weight_serialise_fun_num_used
  f_Xapian_Weight_serialise_fun_num =
#endif /* f_Xapian_Weight_serialise_fun_num_used */
#line 339 "xapian.ccmod"
    ADD_FUNCTION2("serialise", f_Xapian_Weight_serialise, tFunc(tNone,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Weight_serialise_defined */

#ifdef f_Xapian_Weight_name_defined

#ifdef f_Xapian_Weight_name_fun_num_used
  f_Xapian_Weight_name_fun_num =
#endif /* f_Xapian_Weight_name_fun_num_used */
#line 359 "xapian.ccmod"
    ADD_FUNCTION2("name", f_Xapian_Weight_name, tFunc(tNone,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Weight_name_defined */

#ifdef f_Xapian_Weight_destroy_defined

#ifdef f_Xapian_Weight_destroy_fun_num_used
  f_Xapian_Weight_destroy_fun_num =
#endif /* f_Xapian_Weight_destroy_fun_num_used */
#line 386 "xapian.ccmod"
    ADD_FUNCTION2("destroy", f_Xapian_Weight_destroy, tFunc(tOr("\10\200\0\0\0\177\377\377\377",tVoid),tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Weight_destroy_defined */
#line 206 "xapian.ccmod"
  Xapian_Weight_program=end_program();
#line 206 "xapian.ccmod"
#ifdef Xapian_Weight_program_fun_num_used
Xapian_Weight_program_fun_num=
#endif
 add_program_constant("Weight",Xapian_Weight_program,0);

#endif /* class_Xapian_Weight_defined */

#ifdef class_Xapian_BM25Weight_defined

#ifdef PROG_XAPIAN_BM25WEIGHT_ID
#line 422 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_BM25WEIGHT);
#else
#line 422 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_BM25WEIGHT_ID */
#line 422 "xapian.ccmod"
  Xapian_BM25Weight_program = Pike_compiler->new_program;

#ifndef tObjImpl_XAPIAN_BM25WEIGHT

#undef tObjIs_XAPIAN_BM25WEIGHT
#define tObjIs_XAPIAN_BM25WEIGHT "\3\1\177\0\0\3"

#undef tObjImpl_XAPIAN_BM25WEIGHT
#define tObjImpl_XAPIAN_BM25WEIGHT "\3\0\177\0\0\3"

#endif /* tObjImpl_XAPIAN_BM25WEIGHT */

#ifdef inherit_Xapian_Weight_Xapian_BM25Weight_defined
#line 424 "xapian.ccmod"
  Xapian_BM25Weight_Xapian_Weight_inh_num = Pike_compiler->new_program->num_inherits;
#line 424 "xapian.ccmod"
  low_inherit(Xapian_Weight_program, NULL, -1, 0, 0, NULL);
#line 424 "xapian.ccmod"
  Xapian_BM25Weight_Xapian_Weight_inh_offset = Pike_compiler->new_program->inherits[Xapian_BM25Weight_Xapian_Weight_inh_num].identifier_level;

#endif /* inherit_Xapian_Weight_Xapian_BM25Weight_defined */

#ifdef f_Xapian_BM25Weight_create_defined

#ifdef f_Xapian_BM25Weight_create_fun_num_used
  f_Xapian_BM25Weight_create_fun_num =
#endif /* f_Xapian_BM25Weight_create_fun_num_used */
#line 426 "xapian.ccmod"
    ADD_FUNCTION2("create", f_Xapian_BM25Weight_create, tFunc(tFloat tFloat tFloat tFloat tFloat,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_BM25Weight_create_defined */
#line 422 "xapian.ccmod"
  Xapian_BM25Weight_program=end_program();
#line 422 "xapian.ccmod"
#ifdef Xapian_BM25Weight_program_fun_num_used
Xapian_BM25Weight_program_fun_num=
#endif
 add_program_constant("BM25Weight",Xapian_BM25Weight_program,0);

#endif /* class_Xapian_BM25Weight_defined */

#ifdef class_Xapian_BoolWeight_defined

#ifdef PROG_XAPIAN_BOOLWEIGHT_ID
#line 445 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_BOOLWEIGHT);
#else
#line 445 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_BOOLWEIGHT_ID */
#line 445 "xapian.ccmod"
  Xapian_BoolWeight_program = Pike_compiler->new_program;

#ifndef tObjImpl_XAPIAN_BOOLWEIGHT

#undef tObjIs_XAPIAN_BOOLWEIGHT
#define tObjIs_XAPIAN_BOOLWEIGHT "\3\1\177\0\0\4"

#undef tObjImpl_XAPIAN_BOOLWEIGHT
#define tObjImpl_XAPIAN_BOOLWEIGHT "\3\0\177\0\0\4"

#endif /* tObjImpl_XAPIAN_BOOLWEIGHT */

#ifdef inherit_Xapian_Weight_Xapian_BoolWeight_defined
#line 447 "xapian.ccmod"
  Xapian_BoolWeight_Xapian_Weight_inh_num = Pike_compiler->new_program->num_inherits;
#line 447 "xapian.ccmod"
  low_inherit(Xapian_Weight_program, NULL, -1, 0, 0, NULL);
#line 447 "xapian.ccmod"
  Xapian_BoolWeight_Xapian_Weight_inh_offset = Pike_compiler->new_program->inherits[Xapian_BoolWeight_Xapian_Weight_inh_num].identifier_level;

#endif /* inherit_Xapian_Weight_Xapian_BoolWeight_defined */

#ifdef f_Xapian_BoolWeight_create_defined

#ifdef f_Xapian_BoolWeight_create_fun_num_used
  f_Xapian_BoolWeight_create_fun_num =
#endif /* f_Xapian_BoolWeight_create_fun_num_used */
#line 449 "xapian.ccmod"
    ADD_FUNCTION2("create", f_Xapian_BoolWeight_create, tFunc(tNone,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_BoolWeight_create_defined */
#line 445 "xapian.ccmod"
  Xapian_BoolWeight_program=end_program();
#line 445 "xapian.ccmod"
#ifdef Xapian_BoolWeight_program_fun_num_used
Xapian_BoolWeight_program_fun_num=
#endif
 add_program_constant("BoolWeight",Xapian_BoolWeight_program,0);

#endif /* class_Xapian_BoolWeight_defined */

#ifdef class_Xapian_TradWeight_defined

#ifdef PROG_XAPIAN_TRADWEIGHT_ID
#line 471 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_TRADWEIGHT);
#else
#line 471 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_TRADWEIGHT_ID */
#line 471 "xapian.ccmod"
  Xapian_TradWeight_program = Pike_compiler->new_program;

#ifndef tObjImpl_XAPIAN_TRADWEIGHT

#undef tObjIs_XAPIAN_TRADWEIGHT
#define tObjIs_XAPIAN_TRADWEIGHT "\3\1\177\0\0\5"

#undef tObjImpl_XAPIAN_TRADWEIGHT
#define tObjImpl_XAPIAN_TRADWEIGHT "\3\0\177\0\0\5"

#endif /* tObjImpl_XAPIAN_TRADWEIGHT */

#ifdef inherit_Xapian_Weight_Xapian_TradWeight_defined
#line 473 "xapian.ccmod"
  Xapian_TradWeight_Xapian_Weight_inh_num = Pike_compiler->new_program->num_inherits;
#line 473 "xapian.ccmod"
  low_inherit(Xapian_Weight_program, NULL, -1, 0, 0, NULL);
#line 473 "xapian.ccmod"
  Xapian_TradWeight_Xapian_Weight_inh_offset = Pike_compiler->new_program->inherits[Xapian_TradWeight_Xapian_Weight_inh_num].identifier_level;

#endif /* inherit_Xapian_Weight_Xapian_TradWeight_defined */

#ifdef f_Xapian_TradWeight_create_defined

#ifdef f_Xapian_TradWeight_create_fun_num_used
  f_Xapian_TradWeight_create_fun_num =
#endif /* f_Xapian_TradWeight_create_fun_num_used */
#line 475 "xapian.ccmod"
    ADD_FUNCTION2("create", f_Xapian_TradWeight_create, tFunc(tFloat,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_TradWeight_create_defined */
#line 471 "xapian.ccmod"
  Xapian_TradWeight_program=end_program();
#line 471 "xapian.ccmod"
#ifdef Xapian_TradWeight_program_fun_num_used
Xapian_TradWeight_program_fun_num=
#endif
 add_program_constant("TradWeight",Xapian_TradWeight_program,0);

#endif /* class_Xapian_TradWeight_defined */

#ifdef class_Xapian_ValueRangeProcessor_defined

#ifdef PROG_XAPIAN_VALUERANGEPROCESSOR_ID
#line 492 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_VALUERANGEPROCESSOR);
#else
#line 492 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_VALUERANGEPROCESSOR_ID */
#line 492 "xapian.ccmod"
  Xapian_ValueRangeProcessor_program = Pike_compiler->new_program;

#ifndef tObjImpl_XAPIAN_VALUERANGEPROCESSOR

#undef tObjIs_XAPIAN_VALUERANGEPROCESSOR
#define tObjIs_XAPIAN_VALUERANGEPROCESSOR "\3\1\177\0\0\6"

#undef tObjImpl_XAPIAN_VALUERANGEPROCESSOR
#define tObjImpl_XAPIAN_VALUERANGEPROCESSOR "\3\0\177\0\0\6"

#endif /* tObjImpl_XAPIAN_VALUERANGEPROCESSOR */

#ifdef THIS_XAPIAN_VALUERANGEPROCESSOR
  Xapian_ValueRangeProcessor_storage_offset = ADD_STORAGE(struct Xapian_ValueRangeProcessor_struct);
#endif /* THIS_XAPIAN_VALUERANGEPROCESSOR */

#ifdef Xapian_ValueRangeProcessor_event_handler_defined
  pike_set_prog_event_callback(Xapian_ValueRangeProcessor_event_handler);

#ifndef Xapian_ValueRangeProcessor_gc_live_obj
  Pike_compiler->new_program->flags &= ~PROGRAM_LIVE_OBJ;

#endif /* Xapian_ValueRangeProcessor_gc_live_obj */

#endif /* Xapian_ValueRangeProcessor_event_handler_defined */

#ifdef f_Xapian_ValueRangeProcessor_cq__backtick_28_29_defined

#ifdef f_Xapian_ValueRangeProcessor_cq__backtick_28_29_fun_num_used
  f_Xapian_ValueRangeProcessor_cq__backtick_28_29_fun_num =
#endif /* f_Xapian_ValueRangeProcessor_cq__backtick_28_29_fun_num_used */
#line 503 "xapian.ccmod"
    ADD_FUNCTION2("`()", f_Xapian_ValueRangeProcessor_cq__backtick_28_29, tFunc(tStr tStr,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ValueRangeProcessor_cq__backtick_28_29_defined */

#ifdef f_Xapian_ValueRangeProcessor_destroy_defined

#ifdef f_Xapian_ValueRangeProcessor_destroy_fun_num_used
  f_Xapian_ValueRangeProcessor_destroy_fun_num =
#endif /* f_Xapian_ValueRangeProcessor_destroy_fun_num_used */
#line 532 "xapian.ccmod"
    ADD_FUNCTION2("destroy", f_Xapian_ValueRangeProcessor_destroy, tFunc(tOr("\10\200\0\0\0\177\377\377\377",tVoid),tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ValueRangeProcessor_destroy_defined */
#line 492 "xapian.ccmod"
  Xapian_ValueRangeProcessor_program=end_program();
#line 492 "xapian.ccmod"
#ifdef Xapian_ValueRangeProcessor_program_fun_num_used
Xapian_ValueRangeProcessor_program_fun_num=
#endif
 add_program_constant("ValueRangeProcessor",Xapian_ValueRangeProcessor_program,0);

#endif /* class_Xapian_ValueRangeProcessor_defined */

#ifdef class_Xapian_StringValueRangeProcessor_defined

#ifdef PROG_XAPIAN_STRINGVALUERANGEPROCESSOR_ID
#line 570 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_STRINGVALUERANGEPROCESSOR);
#else
#line 570 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_STRINGVALUERANGEPROCESSOR_ID */
#line 570 "xapian.ccmod"
  Xapian_StringValueRangeProcessor_program = Pike_compiler->new_program;

#ifndef tObjImpl_XAPIAN_STRINGVALUERANGEPROCESSOR

#undef tObjIs_XAPIAN_STRINGVALUERANGEPROCESSOR
#define tObjIs_XAPIAN_STRINGVALUERANGEPROCESSOR "\3\1\177\0\0\a"

#undef tObjImpl_XAPIAN_STRINGVALUERANGEPROCESSOR
#define tObjImpl_XAPIAN_STRINGVALUERANGEPROCESSOR "\3\0\177\0\0\a"

#endif /* tObjImpl_XAPIAN_STRINGVALUERANGEPROCESSOR */

#ifdef inherit_Xapian_ValueRangeProcessor_Xapian_StringValueRangeProcessor_defined
#line 572 "xapian.ccmod"
  Xapian_StringValueRangeProcessor_Xapian_ValueRangeProcessor_inh_num = Pike_compiler->new_program->num_inherits;
#line 572 "xapian.ccmod"
  low_inherit(Xapian_ValueRangeProcessor_program, NULL, -1, 0, 0, NULL);
#line 572 "xapian.ccmod"
  Xapian_StringValueRangeProcessor_Xapian_ValueRangeProcessor_inh_offset = Pike_compiler->new_program->inherits[Xapian_StringValueRangeProcessor_Xapian_ValueRangeProcessor_inh_num].identifier_level;

#endif /* inherit_Xapian_ValueRangeProcessor_Xapian_StringValueRangeProcessor_defined */

#ifdef f_Xapian_StringValueRangeProcessor_create_defined

#ifdef f_Xapian_StringValueRangeProcessor_create_fun_num_used
  f_Xapian_StringValueRangeProcessor_create_fun_num =
#endif /* f_Xapian_StringValueRangeProcessor_create_fun_num_used */
#line 574 "xapian.ccmod"
    ADD_FUNCTION2("create", f_Xapian_StringValueRangeProcessor_create, tFunc("\10\200\0\0\0\177\377\377\377",tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_StringValueRangeProcessor_create_defined */
#line 570 "xapian.ccmod"
  Xapian_StringValueRangeProcessor_program=end_program();
#line 570 "xapian.ccmod"
#ifdef Xapian_StringValueRangeProcessor_program_fun_num_used
Xapian_StringValueRangeProcessor_program_fun_num=
#endif
 add_program_constant("StringValueRangeProcessor",Xapian_StringValueRangeProcessor_program,0);

#endif /* class_Xapian_StringValueRangeProcessor_defined */

#ifdef class_Xapian_NumberValueRangeProcessor_defined

#ifdef PROG_XAPIAN_NUMBERVALUERANGEPROCESSOR_ID
#line 599 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_NUMBERVALUERANGEPROCESSOR);
#else
#line 599 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_NUMBERVALUERANGEPROCESSOR_ID */
#line 599 "xapian.ccmod"
  Xapian_NumberValueRangeProcessor_program = Pike_compiler->new_program;

#ifndef tObjImpl_XAPIAN_NUMBERVALUERANGEPROCESSOR

#undef tObjIs_XAPIAN_NUMBERVALUERANGEPROCESSOR
#define tObjIs_XAPIAN_NUMBERVALUERANGEPROCESSOR "\3\1\177\0\0\b"

#undef tObjImpl_XAPIAN_NUMBERVALUERANGEPROCESSOR
#define tObjImpl_XAPIAN_NUMBERVALUERANGEPROCESSOR "\3\0\177\0\0\b"

#endif /* tObjImpl_XAPIAN_NUMBERVALUERANGEPROCESSOR */

#ifdef inherit_Xapian_ValueRangeProcessor_Xapian_NumberValueRangeProcessor_defined
#line 601 "xapian.ccmod"
  Xapian_NumberValueRangeProcessor_Xapian_ValueRangeProcessor_inh_num = Pike_compiler->new_program->num_inherits;
#line 601 "xapian.ccmod"
  low_inherit(Xapian_ValueRangeProcessor_program, NULL, -1, 0, 0, NULL);
#line 601 "xapian.ccmod"
  Xapian_NumberValueRangeProcessor_Xapian_ValueRangeProcessor_inh_offset = Pike_compiler->new_program->inherits[Xapian_NumberValueRangeProcessor_Xapian_ValueRangeProcessor_inh_num].identifier_level;

#endif /* inherit_Xapian_ValueRangeProcessor_Xapian_NumberValueRangeProcessor_defined */

#ifdef f_Xapian_NumberValueRangeProcessor_create_defined

#ifdef Xapian_NumberValueRangeProcessor_f_Xapian_NumberValueRangeProcessor_create_fun_num_used
  Xapian_NumberValueRangeProcessor_f_Xapian_NumberValueRangeProcessor_create_fun_num =
#endif /* Xapian_NumberValueRangeProcessor_f_Xapian_NumberValueRangeProcessor_create_fun_num_used */
#line 634 "xapian.ccmod"
    ADD_FUNCTION2("create", f_Xapian_NumberValueRangeProcessor_create, tOr(tFunc("\10\200\0\0\0\177\377\377\377",tVoid),tFunc("\10\200\0\0\0\177\377\377\377" tStr "\10\200\0\0\0\177\377\377\377",tVoid)), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_NumberValueRangeProcessor_create_defined */
#line 599 "xapian.ccmod"
  Xapian_NumberValueRangeProcessor_program=end_program();
#line 599 "xapian.ccmod"
#ifdef Xapian_NumberValueRangeProcessor_program_fun_num_used
Xapian_NumberValueRangeProcessor_program_fun_num=
#endif
 add_program_constant("NumberValueRangeProcessor",Xapian_NumberValueRangeProcessor_program,0);

#endif /* class_Xapian_NumberValueRangeProcessor_defined */

#ifdef class_Xapian_DateValueRangeProcessor_defined

#ifdef PROG_XAPIAN_DATEVALUERANGEPROCESSOR_ID
#line 656 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_DATEVALUERANGEPROCESSOR);
#else
#line 656 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_DATEVALUERANGEPROCESSOR_ID */
#line 656 "xapian.ccmod"
  Xapian_DateValueRangeProcessor_program = Pike_compiler->new_program;

#ifndef tObjImpl_XAPIAN_DATEVALUERANGEPROCESSOR

#undef tObjIs_XAPIAN_DATEVALUERANGEPROCESSOR
#define tObjIs_XAPIAN_DATEVALUERANGEPROCESSOR "\3\1\177\0\0\t"

#undef tObjImpl_XAPIAN_DATEVALUERANGEPROCESSOR
#define tObjImpl_XAPIAN_DATEVALUERANGEPROCESSOR "\3\0\177\0\0\t"

#endif /* tObjImpl_XAPIAN_DATEVALUERANGEPROCESSOR */

#ifdef inherit_Xapian_ValueRangeProcessor_Xapian_DateValueRangeProcessor_defined
#line 658 "xapian.ccmod"
  Xapian_DateValueRangeProcessor_Xapian_ValueRangeProcessor_inh_num = Pike_compiler->new_program->num_inherits;
#line 658 "xapian.ccmod"
  low_inherit(Xapian_ValueRangeProcessor_program, NULL, -1, 0, 0, NULL);
#line 658 "xapian.ccmod"
  Xapian_DateValueRangeProcessor_Xapian_ValueRangeProcessor_inh_offset = Pike_compiler->new_program->inherits[Xapian_DateValueRangeProcessor_Xapian_ValueRangeProcessor_inh_num].identifier_level;

#endif /* inherit_Xapian_ValueRangeProcessor_Xapian_DateValueRangeProcessor_defined */

#ifdef f_Xapian_DateValueRangeProcessor_create_defined

#ifdef f_Xapian_DateValueRangeProcessor_create_fun_num_used
  f_Xapian_DateValueRangeProcessor_create_fun_num =
#endif /* f_Xapian_DateValueRangeProcessor_create_fun_num_used */
#line 670 "xapian.ccmod"
    ADD_FUNCTION2("create", f_Xapian_DateValueRangeProcessor_create, tFunc("\10\200\0\0\0\177\377\377\377" "\10\200\0\0\0\177\377\377\377" "\10\200\0\0\0\177\377\377\377",tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_DateValueRangeProcessor_create_defined */
#line 656 "xapian.ccmod"
  Xapian_DateValueRangeProcessor_program=end_program();
#line 656 "xapian.ccmod"
#ifdef Xapian_DateValueRangeProcessor_program_fun_num_used
Xapian_DateValueRangeProcessor_program_fun_num=
#endif
 add_program_constant("DateValueRangeProcessor",Xapian_DateValueRangeProcessor_program,0);

#endif /* class_Xapian_DateValueRangeProcessor_defined */

#ifdef class_Xapian_Stopper_defined

#ifdef PROG_XAPIAN_STOPPER_ID
#line 686 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_STOPPER);
#else
#line 686 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_STOPPER_ID */
#line 686 "xapian.ccmod"
  Xapian_Stopper_program = Pike_compiler->new_program;

#ifndef tObjImpl_XAPIAN_STOPPER

#undef tObjIs_XAPIAN_STOPPER
#define tObjIs_XAPIAN_STOPPER "\3\1\177\0\0\n"

#undef tObjImpl_XAPIAN_STOPPER
#define tObjImpl_XAPIAN_STOPPER "\3\0\177\0\0\n"

#endif /* tObjImpl_XAPIAN_STOPPER */

#ifdef THIS_XAPIAN_STOPPER
  Xapian_Stopper_storage_offset = ADD_STORAGE(struct Xapian_Stopper_struct);
#endif /* THIS_XAPIAN_STOPPER */

#ifdef Xapian_Stopper_event_handler_defined
  pike_set_prog_event_callback(Xapian_Stopper_event_handler);

#ifndef Xapian_Stopper_gc_live_obj
  Pike_compiler->new_program->flags &= ~PROGRAM_LIVE_OBJ;

#endif /* Xapian_Stopper_gc_live_obj */

#endif /* Xapian_Stopper_event_handler_defined */

#ifdef f_Xapian_Stopper_cq__backtick_28_29_defined

#ifdef f_Xapian_Stopper_cq__backtick_28_29_fun_num_used
  f_Xapian_Stopper_cq__backtick_28_29_fun_num =
#endif /* f_Xapian_Stopper_cq__backtick_28_29_fun_num_used */
#line 697 "xapian.ccmod"
    ADD_FUNCTION2("`()", f_Xapian_Stopper_cq__backtick_28_29, tFunc(tStr,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Stopper_cq__backtick_28_29_defined */

#ifdef f_Xapian_Stopper_get_description_defined

#ifdef f_Xapian_Stopper_get_description_fun_num_used
  f_Xapian_Stopper_get_description_fun_num =
#endif /* f_Xapian_Stopper_get_description_fun_num_used */
#line 717 "xapian.ccmod"
    ADD_FUNCTION2("get_description", f_Xapian_Stopper_get_description, tFunc(tNone,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Stopper_get_description_defined */

#ifdef f_Xapian_Stopper_cq__sprintf_defined

#ifdef f_Xapian_Stopper_cq__sprintf_fun_num_used
  f_Xapian_Stopper_cq__sprintf_fun_num =
#endif /* f_Xapian_Stopper_cq__sprintf_fun_num_used */
#line 727 "xapian.ccmod"
    ADD_FUNCTION2("_sprintf", f_Xapian_Stopper_cq__sprintf, tFunc("\10\200\0\0\0\177\377\377\377" tMapping,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Stopper_cq__sprintf_defined */

#ifdef f_Xapian_Stopper_destroy_defined

#ifdef f_Xapian_Stopper_destroy_fun_num_used
  f_Xapian_Stopper_destroy_fun_num =
#endif /* f_Xapian_Stopper_destroy_fun_num_used */
#line 763 "xapian.ccmod"
    ADD_FUNCTION2("destroy", f_Xapian_Stopper_destroy, tFunc(tOr("\10\200\0\0\0\177\377\377\377",tVoid),tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Stopper_destroy_defined */
#line 686 "xapian.ccmod"
  Xapian_Stopper_program=end_program();
#line 686 "xapian.ccmod"
#ifdef Xapian_Stopper_program_fun_num_used
Xapian_Stopper_program_fun_num=
#endif
 add_program_constant("Stopper",Xapian_Stopper_program,0);

#endif /* class_Xapian_Stopper_defined */

#ifdef class_Xapian_SimpleStopper_defined

#ifdef PROG_XAPIAN_SIMPLESTOPPER_ID
#line 799 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_SIMPLESTOPPER);
#else
#line 799 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_SIMPLESTOPPER_ID */
#line 799 "xapian.ccmod"
  Xapian_SimpleStopper_program = Pike_compiler->new_program;

#ifndef tObjImpl_XAPIAN_SIMPLESTOPPER

#undef tObjIs_XAPIAN_SIMPLESTOPPER
#define tObjIs_XAPIAN_SIMPLESTOPPER "\3\1\177\0\0\v"

#undef tObjImpl_XAPIAN_SIMPLESTOPPER
#define tObjImpl_XAPIAN_SIMPLESTOPPER "\3\0\177\0\0\v"

#endif /* tObjImpl_XAPIAN_SIMPLESTOPPER */

#ifdef inherit_Xapian_Stopper_Xapian_SimpleStopper_defined
#line 801 "xapian.ccmod"
  Xapian_SimpleStopper_Xapian_Stopper_inh_num = Pike_compiler->new_program->num_inherits;
#line 801 "xapian.ccmod"
  low_inherit(Xapian_Stopper_program, NULL, -1, 0, 0, NULL);
#line 801 "xapian.ccmod"
  Xapian_SimpleStopper_Xapian_Stopper_inh_offset = Pike_compiler->new_program->inherits[Xapian_SimpleStopper_Xapian_Stopper_inh_num].identifier_level;

#endif /* inherit_Xapian_Stopper_Xapian_SimpleStopper_defined */

#ifdef f_Xapian_SimpleStopper_create_defined

#ifdef Xapian_SimpleStopper_f_Xapian_SimpleStopper_create_fun_num_used
  Xapian_SimpleStopper_f_Xapian_SimpleStopper_create_fun_num =
#endif /* Xapian_SimpleStopper_f_Xapian_SimpleStopper_create_fun_num_used */
#line 811 "xapian.ccmod"
    ADD_FUNCTION2("create", f_Xapian_SimpleStopper_create, tOr(tFunc(tNone,tVoid),tFunc(tArray,tVoid)), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_SimpleStopper_create_defined */

#ifdef f_Xapian_SimpleStopper_add_defined

#ifdef f_Xapian_SimpleStopper_add_fun_num_used
  f_Xapian_SimpleStopper_add_fun_num =
#endif /* f_Xapian_SimpleStopper_add_fun_num_used */
#line 832 "xapian.ccmod"
    ADD_FUNCTION2("add", f_Xapian_SimpleStopper_add, tFunc(tStr,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_SimpleStopper_add_defined */
#line 799 "xapian.ccmod"
  Xapian_SimpleStopper_program=end_program();
#line 799 "xapian.ccmod"
#ifdef Xapian_SimpleStopper_program_fun_num_used
Xapian_SimpleStopper_program_fun_num=
#endif
 add_program_constant("SimpleStopper",Xapian_SimpleStopper_program,0);

#endif /* class_Xapian_SimpleStopper_defined */

#ifdef class_Xapian_Stem_defined

#ifdef PROG_XAPIAN_STEM_ID
#line 852 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_STEM);
#else
#line 852 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_STEM_ID */
#line 852 "xapian.ccmod"
  Xapian_Stem_program = Pike_compiler->new_program;

#ifndef tObjImpl_XAPIAN_STEM

#undef tObjIs_XAPIAN_STEM
#define tObjIs_XAPIAN_STEM "\3\1\177\0\0\f"

#undef tObjImpl_XAPIAN_STEM
#define tObjImpl_XAPIAN_STEM "\3\0\177\0\0\f"

#endif /* tObjImpl_XAPIAN_STEM */

#ifdef THIS_XAPIAN_STEM
  Xapian_Stem_storage_offset = ADD_STORAGE(struct Xapian_Stem_struct);
#endif /* THIS_XAPIAN_STEM */

#ifdef Xapian_Stem_event_handler_defined
  pike_set_prog_event_callback(Xapian_Stem_event_handler);

#ifndef Xapian_Stem_gc_live_obj
  Pike_compiler->new_program->flags &= ~PROGRAM_LIVE_OBJ;

#endif /* Xapian_Stem_gc_live_obj */

#endif /* Xapian_Stem_event_handler_defined */

#ifdef f_Xapian_Stem_create_defined

#ifdef Xapian_Stem_f_Xapian_Stem_create_fun_num_used
  Xapian_Stem_f_Xapian_Stem_create_fun_num =
#endif /* Xapian_Stem_f_Xapian_Stem_create_fun_num_used */
#line 912 "xapian.ccmod"
    ADD_FUNCTION2("create", f_Xapian_Stem_create, tOr(tFunc(tStr,tVoid),tFunc(tNone,tVoid)), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Stem_create_defined */

#ifdef f_Xapian_Stem_cq__backtick_28_29_defined

#ifdef f_Xapian_Stem_cq__backtick_28_29_fun_num_used
  f_Xapian_Stem_cq__backtick_28_29_fun_num =
#endif /* f_Xapian_Stem_cq__backtick_28_29_fun_num_used */
#line 935 "xapian.ccmod"
    ADD_FUNCTION2("`()", f_Xapian_Stem_cq__backtick_28_29, tFunc(tStr,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Stem_cq__backtick_28_29_defined */

#ifdef f_Xapian_Stem_get_description_defined

#ifdef f_Xapian_Stem_get_description_fun_num_used
  f_Xapian_Stem_get_description_fun_num =
#endif /* f_Xapian_Stem_get_description_fun_num_used */
#line 960 "xapian.ccmod"
    ADD_FUNCTION2("get_description", f_Xapian_Stem_get_description, tFunc(tNone,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Stem_get_description_defined */

#ifdef f_Xapian_Stem_cq__sprintf_defined

#ifdef f_Xapian_Stem_cq__sprintf_fun_num_used
  f_Xapian_Stem_cq__sprintf_fun_num =
#endif /* f_Xapian_Stem_cq__sprintf_fun_num_used */
#line 970 "xapian.ccmod"
    ADD_FUNCTION2("_sprintf", f_Xapian_Stem_cq__sprintf, tFunc("\10\200\0\0\0\177\377\377\377" tMapping,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Stem_cq__sprintf_defined */

#ifdef f_Xapian_Stem_destroy_defined

#ifdef f_Xapian_Stem_destroy_fun_num_used
  f_Xapian_Stem_destroy_fun_num =
#endif /* f_Xapian_Stem_destroy_fun_num_used */
#line 1006 "xapian.ccmod"
    ADD_FUNCTION2("destroy", f_Xapian_Stem_destroy, tFunc(tOr("\10\200\0\0\0\177\377\377\377",tVoid),tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Stem_destroy_defined */
#line 852 "xapian.ccmod"
  Xapian_Stem_program=end_program();
#line 852 "xapian.ccmod"
#ifdef Xapian_Stem_program_fun_num_used
Xapian_Stem_program_fun_num=
#endif
 add_program_constant("Stem",Xapian_Stem_program,0);

#endif /* class_Xapian_Stem_defined */

#ifdef class_Xapian_Query_defined

#ifdef PROG_XAPIAN_QUERY_ID
#line 1043 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_QUERY);
#else
#line 1043 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_QUERY_ID */
#line 1043 "xapian.ccmod"
  Xapian_Query_program = Pike_compiler->new_program;

#ifndef tObjImpl_XAPIAN_QUERY

#undef tObjIs_XAPIAN_QUERY
#define tObjIs_XAPIAN_QUERY "\3\1\177\0\0\r"

#undef tObjImpl_XAPIAN_QUERY
#define tObjImpl_XAPIAN_QUERY "\3\0\177\0\0\r"

#endif /* tObjImpl_XAPIAN_QUERY */

#ifdef THIS_XAPIAN_QUERY
  Xapian_Query_storage_offset = ADD_STORAGE(struct Xapian_Query_struct);
#endif /* THIS_XAPIAN_QUERY */

#ifdef extra_Xapian_Query_defined
#line 1316 "xapian.ccmod"
{
/*! @decl constant OP_AND
 *! Return iff both subqueries are satisfied.
 */
add_integer_constant("OP_AND", Query::OP_AND, 0);
/*! @decl constant OP_OR
 *! Return if either subquery is satisfied. 
 */
add_integer_constant("OP_OR", Query::OP_OR, 0);
/*! @decl constant OP_AND_NOT
 *! Return if left but not right satisfied.
 */
add_integer_constant("OP_AND_NOT", Query::OP_AND_NOT, 0);
/*! @decl constant OP_XOR
 *! Return if one query satisfied, but not both.
 */
add_integer_constant("OP_XOR", Query::OP_XOR, 0);
/*! @decl constant OP_AND_MAYBE
 *! Return iff left satisfied, but use weights from both.
 */
add_integer_constant("OP_AND_MAYBE", Query::OP_AND_MAYBE, 0);
/*! @decl constant OP_FILTER
 *! As AND, but use only weights from left subquery.
 */
add_integer_constant("OP_FILTER", Query::OP_FILTER, 0);
/*! @decl constant OP_NEAR
 *! Find occurrences of a list of terms with all the terms occurring 
 *! within a specified window of positions.
 *! 
 *! Each occurrence of a term must be at a different position, but the 
 *! order they appear in is irrelevant.
 *! 
 *! The window parameter should be specified for this operation, but will 
 *! default to the number of terms in the list. 
 */
add_integer_constant("OP_NEAR", Query::OP_NEAR, 0);
/*! @decl constant OP_PHRASE
 *!  Find occurrences of a list of terms with all the terms occurring 
 *! within a specified window of positions, and all the terms appearing 
 *! in the order specified.
 *! 
 *! Each occurrence of a term must be at a different position.
 *! 
 *! The window parameter should be specified for this operation, but will 
 *! default to the number of terms in the list. 
 */
add_integer_constant("OP_PHRASE", Query::OP_PHRASE, 0);
/*! @decl constant OP_ELITE_SET
 *! Select an elite set from the subqueries, and perform a query with 
 *! these combined as an OR query. 
 */
add_integer_constant("OP_ELITE_SET", Query::OP_ELITE_SET, 0);
/*! @decl constant OP_VALUE_RANGE
 *! Filter by a range test on a document value.
 */
add_integer_constant("OP_VALUE_RANGE", Query::OP_VALUE_RANGE, 0);
/*! @decl constant OP_SCALE_WEIGHT
 *! Scale the weight of a subquery by the specified factor.
 *! 
 *! A factor of 0 means this subquery will contribute no weight to the 
 *! query - it will act as a purely boolean subquery.
 *! 
 *! If the factor is negative, an error will be 
 *! thrown. 
 */
add_integer_constant("OP_SCALE_WEIGHT", Query::OP_SCALE_WEIGHT, 0);
}


#endif /* extra_Xapian_Query_defined */

#ifdef Xapian_Query_event_handler_defined
  pike_set_prog_event_callback(Xapian_Query_event_handler);

#ifndef Xapian_Query_gc_live_obj
  Pike_compiler->new_program->flags &= ~PROGRAM_LIVE_OBJ;

#endif /* Xapian_Query_gc_live_obj */

#endif /* Xapian_Query_event_handler_defined */

#ifdef f_Xapian_Query_create_defined

#ifdef Xapian_Query_f_Xapian_Query_create_fun_num_used
  Xapian_Query_f_Xapian_Query_create_fun_num =
#endif /* Xapian_Query_f_Xapian_Query_create_fun_num_used */
#line 1197 "xapian.ccmod"
    ADD_FUNCTION2("create", f_Xapian_Query_create, tOr5(tFunc(tNone,tVoid),tFunc(tStr "\10\200\0\0\0\177\377\377\377" "\10\200\0\0\0\177\377\377\377",tVoid),tFunc("\10\200\0\0\0\177\377\377\377" tStr tStr,tVoid),tFunc("\10\200\0\0\0\177\377\377\377" tObj tObj,tVoid),tFunc("\10\200\0\0\0\177\377\377\377" tObj tFloat,tVoid)), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Query_create_defined */

#ifdef f_Xapian_Query_get_length_defined

#ifdef f_Xapian_Query_get_length_fun_num_used
  f_Xapian_Query_get_length_fun_num =
#endif /* f_Xapian_Query_get_length_fun_num_used */
#line 1229 "xapian.ccmod"
    ADD_FUNCTION2("get_length", f_Xapian_Query_get_length, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Query_get_length_defined */

#ifdef f_Xapian_Query_empty_defined

#ifdef f_Xapian_Query_empty_fun_num_used
  f_Xapian_Query_empty_fun_num =
#endif /* f_Xapian_Query_empty_fun_num_used */
#line 1247 "xapian.ccmod"
    ADD_FUNCTION2("empty", f_Xapian_Query_empty, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Query_empty_defined */

#ifdef f_Xapian_Query_get_description_defined

#ifdef f_Xapian_Query_get_description_fun_num_used
  f_Xapian_Query_get_description_fun_num =
#endif /* f_Xapian_Query_get_description_fun_num_used */
#line 1265 "xapian.ccmod"
    ADD_FUNCTION2("get_description", f_Xapian_Query_get_description, tFunc(tNone,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Query_get_description_defined */

#ifdef f_Xapian_Query_cq__sprintf_defined

#ifdef f_Xapian_Query_cq__sprintf_fun_num_used
  f_Xapian_Query_cq__sprintf_fun_num =
#endif /* f_Xapian_Query_cq__sprintf_fun_num_used */
#line 1275 "xapian.ccmod"
    ADD_FUNCTION2("_sprintf", f_Xapian_Query_cq__sprintf, tFunc("\10\200\0\0\0\177\377\377\377" tMapping,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Query_cq__sprintf_defined */
#line 1043 "xapian.ccmod"
  Xapian_Query_program=end_program();
#line 1043 "xapian.ccmod"
#ifdef Xapian_Query_program_fun_num_used
Xapian_Query_program_fun_num=
#endif
 add_program_constant("Query",Xapian_Query_program,0);

#endif /* class_Xapian_Query_defined */

#ifdef class_Xapian_PositionIterator_defined

#ifdef PROG_XAPIAN_POSITIONITERATOR_ID
#line 1392 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_POSITIONITERATOR);
#else
#line 1392 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_POSITIONITERATOR_ID */
#line 1392 "xapian.ccmod"
  Xapian_PositionIterator_program = Pike_compiler->new_program;

#ifndef tObjImpl_XAPIAN_POSITIONITERATOR

#undef tObjIs_XAPIAN_POSITIONITERATOR
#define tObjIs_XAPIAN_POSITIONITERATOR "\3\1\177\0\0\16"

#undef tObjImpl_XAPIAN_POSITIONITERATOR
#define tObjImpl_XAPIAN_POSITIONITERATOR "\3\0\177\0\0\16"

#endif /* tObjImpl_XAPIAN_POSITIONITERATOR */

#ifdef THIS_XAPIAN_POSITIONITERATOR
  Xapian_PositionIterator_storage_offset = ADD_STORAGE(struct Xapian_PositionIterator_struct);
#endif /* THIS_XAPIAN_POSITIONITERATOR */

#ifdef Xapian_PositionIterator_event_handler_defined
  pike_set_prog_event_callback(Xapian_PositionIterator_event_handler);

#ifndef Xapian_PositionIterator_gc_live_obj
  Pike_compiler->new_program->flags &= ~PROGRAM_LIVE_OBJ;

#endif /* Xapian_PositionIterator_gc_live_obj */

#endif /* Xapian_PositionIterator_event_handler_defined */

#ifdef f_Xapian_PositionIterator_next_defined

#ifdef f_Xapian_PositionIterator_next_fun_num_used
  f_Xapian_PositionIterator_next_fun_num =
#endif /* f_Xapian_PositionIterator_next_fun_num_used */
#line 1398 "xapian.ccmod"
    ADD_FUNCTION2("next", f_Xapian_PositionIterator_next, tFunc(tNone,tObj), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_PositionIterator_next_defined */

#ifdef f_Xapian_PositionIterator_index_defined

#ifdef f_Xapian_PositionIterator_index_fun_num_used
  f_Xapian_PositionIterator_index_fun_num =
#endif /* f_Xapian_PositionIterator_index_fun_num_used */
#line 1406 "xapian.ccmod"
    ADD_FUNCTION2("index", f_Xapian_PositionIterator_index, tFunc(tNone,tMix), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_PositionIterator_index_defined */

#ifdef f_Xapian_PositionIterator_value_defined

#ifdef f_Xapian_PositionIterator_value_fun_num_used
  f_Xapian_PositionIterator_value_fun_num =
#endif /* f_Xapian_PositionIterator_value_fun_num_used */
#line 1411 "xapian.ccmod"
    ADD_FUNCTION2("value", f_Xapian_PositionIterator_value, tFunc(tNone,tObj), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_PositionIterator_value_defined */

#ifdef f_Xapian_PositionIterator_cq__backtick_eq_eq_defined

#ifdef f_Xapian_PositionIterator_cq__backtick_eq_eq_fun_num_used
  f_Xapian_PositionIterator_cq__backtick_eq_eq_fun_num =
#endif /* f_Xapian_PositionIterator_cq__backtick_eq_eq_fun_num_used */
#line 1416 "xapian.ccmod"
    ADD_FUNCTION2("`==", f_Xapian_PositionIterator_cq__backtick_eq_eq, tFunc(tMix,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_PositionIterator_cq__backtick_eq_eq_defined */

#ifdef f_Xapian_PositionIterator_skip_to_defined

#ifdef f_Xapian_PositionIterator_skip_to_fun_num_used
  f_Xapian_PositionIterator_skip_to_fun_num =
#endif /* f_Xapian_PositionIterator_skip_to_fun_num_used */
#line 1441 "xapian.ccmod"
    ADD_FUNCTION2("skip_to", f_Xapian_PositionIterator_skip_to, tFunc("\10\200\0\0\0\177\377\377\377",tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_PositionIterator_skip_to_defined */

#ifdef f_Xapian_PositionIterator_get_position_defined

#ifdef f_Xapian_PositionIterator_get_position_fun_num_used
  f_Xapian_PositionIterator_get_position_fun_num =
#endif /* f_Xapian_PositionIterator_get_position_fun_num_used */
#line 1468 "xapian.ccmod"
    ADD_FUNCTION2("get_position", f_Xapian_PositionIterator_get_position, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_PositionIterator_get_position_defined */

#ifdef f_Xapian_PositionIterator_cq__backtick_21_defined

#ifdef f_Xapian_PositionIterator_cq__backtick_21_fun_num_used
  f_Xapian_PositionIterator_cq__backtick_21_fun_num =
#endif /* f_Xapian_PositionIterator_cq__backtick_21_fun_num_used */
#line 1485 "xapian.ccmod"
    ADD_FUNCTION2("`!", f_Xapian_PositionIterator_cq__backtick_21, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_PositionIterator_cq__backtick_21_defined */

#ifdef f_Xapian_PositionIterator_get_description_defined

#ifdef f_Xapian_PositionIterator_get_description_fun_num_used
  f_Xapian_PositionIterator_get_description_fun_num =
#endif /* f_Xapian_PositionIterator_get_description_fun_num_used */
#line 1501 "xapian.ccmod"
    ADD_FUNCTION2("get_description", f_Xapian_PositionIterator_get_description, tFunc(tNone,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_PositionIterator_get_description_defined */

#ifdef f_Xapian_PositionIterator_cq__sprintf_defined

#ifdef f_Xapian_PositionIterator_cq__sprintf_fun_num_used
  f_Xapian_PositionIterator_cq__sprintf_fun_num =
#endif /* f_Xapian_PositionIterator_cq__sprintf_fun_num_used */
#line 1511 "xapian.ccmod"
    ADD_FUNCTION2("_sprintf", f_Xapian_PositionIterator_cq__sprintf, tFunc("\10\200\0\0\0\177\377\377\377" tMapping,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_PositionIterator_cq__sprintf_defined */
#line 1392 "xapian.ccmod"
  Xapian_PositionIterator_program=end_program();
#line 1392 "xapian.ccmod"
#ifdef Xapian_PositionIterator_program_fun_num_used
Xapian_PositionIterator_program_fun_num=
#endif
 add_program_constant("PositionIterator",Xapian_PositionIterator_program,0);

#endif /* class_Xapian_PositionIterator_defined */

#ifdef class_Xapian_ValueIterator_defined

#ifdef PROG_XAPIAN_VALUEITERATOR_ID
#line 1560 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_VALUEITERATOR);
#else
#line 1560 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_VALUEITERATOR_ID */
#line 1560 "xapian.ccmod"
  Xapian_ValueIterator_program = Pike_compiler->new_program;

#ifndef tObjImpl_XAPIAN_VALUEITERATOR

#undef tObjIs_XAPIAN_VALUEITERATOR
#define tObjIs_XAPIAN_VALUEITERATOR "\3\1\177\0\0\17"

#undef tObjImpl_XAPIAN_VALUEITERATOR
#define tObjImpl_XAPIAN_VALUEITERATOR "\3\0\177\0\0\17"

#endif /* tObjImpl_XAPIAN_VALUEITERATOR */

#ifdef THIS_XAPIAN_VALUEITERATOR
  Xapian_ValueIterator_storage_offset = ADD_STORAGE(struct Xapian_ValueIterator_struct);
#endif /* THIS_XAPIAN_VALUEITERATOR */

#ifdef Xapian_ValueIterator_event_handler_defined
  pike_set_prog_event_callback(Xapian_ValueIterator_event_handler);

#ifndef Xapian_ValueIterator_gc_live_obj
  Pike_compiler->new_program->flags &= ~PROGRAM_LIVE_OBJ;

#endif /* Xapian_ValueIterator_gc_live_obj */

#endif /* Xapian_ValueIterator_event_handler_defined */

#ifdef f_Xapian_ValueIterator_next_defined

#ifdef f_Xapian_ValueIterator_next_fun_num_used
  f_Xapian_ValueIterator_next_fun_num =
#endif /* f_Xapian_ValueIterator_next_fun_num_used */
#line 1566 "xapian.ccmod"
    ADD_FUNCTION2("next", f_Xapian_ValueIterator_next, tFunc(tNone,tObj), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ValueIterator_next_defined */

#ifdef f_Xapian_ValueIterator_index_defined

#ifdef f_Xapian_ValueIterator_index_fun_num_used
  f_Xapian_ValueIterator_index_fun_num =
#endif /* f_Xapian_ValueIterator_index_fun_num_used */
#line 1574 "xapian.ccmod"
    ADD_FUNCTION2("index", f_Xapian_ValueIterator_index, tFunc(tNone,tMix), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ValueIterator_index_defined */

#ifdef f_Xapian_ValueIterator_value_defined

#ifdef f_Xapian_ValueIterator_value_fun_num_used
  f_Xapian_ValueIterator_value_fun_num =
#endif /* f_Xapian_ValueIterator_value_fun_num_used */
#line 1591 "xapian.ccmod"
    ADD_FUNCTION2("value", f_Xapian_ValueIterator_value, tFunc(tNone,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ValueIterator_value_defined */

#ifdef f_Xapian_ValueIterator_cq__backtick_eq_eq_defined

#ifdef f_Xapian_ValueIterator_cq__backtick_eq_eq_fun_num_used
  f_Xapian_ValueIterator_cq__backtick_eq_eq_fun_num =
#endif /* f_Xapian_ValueIterator_cq__backtick_eq_eq_fun_num_used */
#line 1607 "xapian.ccmod"
    ADD_FUNCTION2("`==", f_Xapian_ValueIterator_cq__backtick_eq_eq, tFunc(tMix,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ValueIterator_cq__backtick_eq_eq_defined */

#ifdef f_Xapian_ValueIterator_get_valueno_defined

#ifdef f_Xapian_ValueIterator_get_valueno_fun_num_used
  f_Xapian_ValueIterator_get_valueno_fun_num =
#endif /* f_Xapian_ValueIterator_get_valueno_fun_num_used */
#line 1632 "xapian.ccmod"
    ADD_FUNCTION2("get_valueno", f_Xapian_ValueIterator_get_valueno, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ValueIterator_get_valueno_defined */

#ifdef f_Xapian_ValueIterator_get_value_defined

#ifdef f_Xapian_ValueIterator_get_value_fun_num_used
  f_Xapian_ValueIterator_get_value_fun_num =
#endif /* f_Xapian_ValueIterator_get_value_fun_num_used */
#line 1657 "xapian.ccmod"
    ADD_FUNCTION2("get_value", f_Xapian_ValueIterator_get_value, tFunc(tNone,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ValueIterator_get_value_defined */

#ifdef f_Xapian_ValueIterator_cq__backtick_21_defined

#ifdef f_Xapian_ValueIterator_cq__backtick_21_fun_num_used
  f_Xapian_ValueIterator_cq__backtick_21_fun_num =
#endif /* f_Xapian_ValueIterator_cq__backtick_21_fun_num_used */
#line 1674 "xapian.ccmod"
    ADD_FUNCTION2("`!", f_Xapian_ValueIterator_cq__backtick_21, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ValueIterator_cq__backtick_21_defined */

#ifdef f_Xapian_ValueIterator_get_description_defined

#ifdef f_Xapian_ValueIterator_get_description_fun_num_used
  f_Xapian_ValueIterator_get_description_fun_num =
#endif /* f_Xapian_ValueIterator_get_description_fun_num_used */
#line 1692 "xapian.ccmod"
    ADD_FUNCTION2("get_description", f_Xapian_ValueIterator_get_description, tFunc(tNone,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ValueIterator_get_description_defined */

#ifdef f_Xapian_ValueIterator_cq__sprintf_defined

#ifdef f_Xapian_ValueIterator_cq__sprintf_fun_num_used
  f_Xapian_ValueIterator_cq__sprintf_fun_num =
#endif /* f_Xapian_ValueIterator_cq__sprintf_fun_num_used */
#line 1699 "xapian.ccmod"
    ADD_FUNCTION2("_sprintf", f_Xapian_ValueIterator_cq__sprintf, tFunc("\10\200\0\0\0\177\377\377\377" tMapping,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ValueIterator_cq__sprintf_defined */
#line 1560 "xapian.ccmod"
  Xapian_ValueIterator_program=end_program();
#line 1560 "xapian.ccmod"
#ifdef Xapian_ValueIterator_program_fun_num_used
Xapian_ValueIterator_program_fun_num=
#endif
 add_program_constant("ValueIterator",Xapian_ValueIterator_program,0);

#endif /* class_Xapian_ValueIterator_defined */

#ifdef class_Xapian_TermIterator_defined

#ifdef PROG_XAPIAN_TERMITERATOR_ID
#line 1746 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_TERMITERATOR);
#else
#line 1746 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_TERMITERATOR_ID */
#line 1746 "xapian.ccmod"
  Xapian_TermIterator_program = Pike_compiler->new_program;

#ifndef tObjImpl_XAPIAN_TERMITERATOR

#undef tObjIs_XAPIAN_TERMITERATOR
#define tObjIs_XAPIAN_TERMITERATOR "\3\1\177\0\0\20"

#undef tObjImpl_XAPIAN_TERMITERATOR
#define tObjImpl_XAPIAN_TERMITERATOR "\3\0\177\0\0\20"

#endif /* tObjImpl_XAPIAN_TERMITERATOR */

#ifdef THIS_XAPIAN_TERMITERATOR
  Xapian_TermIterator_storage_offset = ADD_STORAGE(struct Xapian_TermIterator_struct);
#endif /* THIS_XAPIAN_TERMITERATOR */

#ifdef Xapian_TermIterator_event_handler_defined
  pike_set_prog_event_callback(Xapian_TermIterator_event_handler);

#ifndef Xapian_TermIterator_gc_live_obj
  Pike_compiler->new_program->flags &= ~PROGRAM_LIVE_OBJ;

#endif /* Xapian_TermIterator_gc_live_obj */

#endif /* Xapian_TermIterator_event_handler_defined */

#ifdef f_Xapian_TermIterator_next_defined

#ifdef f_Xapian_TermIterator_next_fun_num_used
  f_Xapian_TermIterator_next_fun_num =
#endif /* f_Xapian_TermIterator_next_fun_num_used */
#line 1752 "xapian.ccmod"
    ADD_FUNCTION2("next", f_Xapian_TermIterator_next, tFunc(tNone,tObj), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_TermIterator_next_defined */

#ifdef f_Xapian_TermIterator_index_defined

#ifdef f_Xapian_TermIterator_index_fun_num_used
  f_Xapian_TermIterator_index_fun_num =
#endif /* f_Xapian_TermIterator_index_fun_num_used */
#line 1758 "xapian.ccmod"
    ADD_FUNCTION2("index", f_Xapian_TermIterator_index, tFunc(tNone,tMix), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_TermIterator_index_defined */

#ifdef f_Xapian_TermIterator_value_defined

#ifdef f_Xapian_TermIterator_value_fun_num_used
  f_Xapian_TermIterator_value_fun_num =
#endif /* f_Xapian_TermIterator_value_fun_num_used */
#line 1763 "xapian.ccmod"
    ADD_FUNCTION2("value", f_Xapian_TermIterator_value, tFunc(tNone,tObj), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_TermIterator_value_defined */

#ifdef f_Xapian_TermIterator_cq__backtick_eq_eq_defined

#ifdef f_Xapian_TermIterator_cq__backtick_eq_eq_fun_num_used
  f_Xapian_TermIterator_cq__backtick_eq_eq_fun_num =
#endif /* f_Xapian_TermIterator_cq__backtick_eq_eq_fun_num_used */
#line 1768 "xapian.ccmod"
    ADD_FUNCTION2("`==", f_Xapian_TermIterator_cq__backtick_eq_eq, tFunc(tMix,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_TermIterator_cq__backtick_eq_eq_defined */

#ifdef f_Xapian_TermIterator_position_iterator_defined

#ifdef f_Xapian_TermIterator_position_iterator_fun_num_used
  f_Xapian_TermIterator_position_iterator_fun_num =
#endif /* f_Xapian_TermIterator_position_iterator_fun_num_used */
#line 1793 "xapian.ccmod"
    ADD_FUNCTION2("position_iterator", f_Xapian_TermIterator_position_iterator, tFunc(tNone,tObj), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_TermIterator_position_iterator_defined */

#ifdef f_Xapian_TermIterator_get_wdf_defined

#ifdef f_Xapian_TermIterator_get_wdf_fun_num_used
  f_Xapian_TermIterator_get_wdf_fun_num =
#endif /* f_Xapian_TermIterator_get_wdf_fun_num_used */
#line 1820 "xapian.ccmod"
    ADD_FUNCTION2("get_wdf", f_Xapian_TermIterator_get_wdf, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_TermIterator_get_wdf_defined */

#ifdef f_Xapian_TermIterator_get_termfreq_defined

#ifdef f_Xapian_TermIterator_get_termfreq_fun_num_used
  f_Xapian_TermIterator_get_termfreq_fun_num =
#endif /* f_Xapian_TermIterator_get_termfreq_fun_num_used */
#line 1836 "xapian.ccmod"
    ADD_FUNCTION2("get_termfreq", f_Xapian_TermIterator_get_termfreq, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_TermIterator_get_termfreq_defined */

#ifdef f_Xapian_TermIterator_positionlist_count_defined

#ifdef f_Xapian_TermIterator_positionlist_count_fun_num_used
  f_Xapian_TermIterator_positionlist_count_fun_num =
#endif /* f_Xapian_TermIterator_positionlist_count_fun_num_used */
#line 1852 "xapian.ccmod"
    ADD_FUNCTION2("positionlist_count", f_Xapian_TermIterator_positionlist_count, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_TermIterator_positionlist_count_defined */

#ifdef f_Xapian_TermIterator_get_term_defined

#ifdef f_Xapian_TermIterator_get_term_fun_num_used
  f_Xapian_TermIterator_get_term_fun_num =
#endif /* f_Xapian_TermIterator_get_term_fun_num_used */
#line 1869 "xapian.ccmod"
    ADD_FUNCTION2("get_term", f_Xapian_TermIterator_get_term, tFunc(tNone,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_TermIterator_get_term_defined */

#ifdef f_Xapian_TermIterator_cq__backtick_add_eq_defined

#ifdef f_Xapian_TermIterator_cq__backtick_add_eq_fun_num_used
  f_Xapian_TermIterator_cq__backtick_add_eq_fun_num =
#endif /* f_Xapian_TermIterator_cq__backtick_add_eq_fun_num_used */
    ADD_FUNCTION2("`+=", f_Xapian_TermIterator_cq__backtick_add_eq, tFunc("\10\200\0\0\0\177\377\377\377",tMix), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_TermIterator_cq__backtick_add_eq_defined */

#ifdef f_Xapian_TermIterator_cq__backtick_21_defined

#ifdef f_Xapian_TermIterator_cq__backtick_21_fun_num_used
  f_Xapian_TermIterator_cq__backtick_21_fun_num =
#endif /* f_Xapian_TermIterator_cq__backtick_21_fun_num_used */
#line 1894 "xapian.ccmod"
    ADD_FUNCTION2("`!", f_Xapian_TermIterator_cq__backtick_21, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_TermIterator_cq__backtick_21_defined */

#ifdef f_Xapian_TermIterator_get_description_defined

#ifdef f_Xapian_TermIterator_get_description_fun_num_used
  f_Xapian_TermIterator_get_description_fun_num =
#endif /* f_Xapian_TermIterator_get_description_fun_num_used */
#line 1911 "xapian.ccmod"
    ADD_FUNCTION2("get_description", f_Xapian_TermIterator_get_description, tFunc(tNone,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_TermIterator_get_description_defined */

#ifdef f_Xapian_TermIterator_cq__sprintf_defined

#ifdef f_Xapian_TermIterator_cq__sprintf_fun_num_used
  f_Xapian_TermIterator_cq__sprintf_fun_num =
#endif /* f_Xapian_TermIterator_cq__sprintf_fun_num_used */
#line 1921 "xapian.ccmod"
    ADD_FUNCTION2("_sprintf", f_Xapian_TermIterator_cq__sprintf, tFunc("\10\200\0\0\0\177\377\377\377" tMapping,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_TermIterator_cq__sprintf_defined */
#line 1746 "xapian.ccmod"
  Xapian_TermIterator_program=end_program();
#line 1746 "xapian.ccmod"
#ifdef Xapian_TermIterator_program_fun_num_used
Xapian_TermIterator_program_fun_num=
#endif
 add_program_constant("TermIterator",Xapian_TermIterator_program,0);

#endif /* class_Xapian_TermIterator_defined */

#ifdef class_Xapian_Document_defined

#ifdef PROG_XAPIAN_DOCUMENT_ID
#line 1971 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_DOCUMENT);
#else
#line 1971 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_DOCUMENT_ID */
#line 1971 "xapian.ccmod"
  Xapian_Document_program = Pike_compiler->new_program;

#ifndef tObjImpl_XAPIAN_DOCUMENT

#undef tObjIs_XAPIAN_DOCUMENT
#define tObjIs_XAPIAN_DOCUMENT "\3\1\177\0\0\21"

#undef tObjImpl_XAPIAN_DOCUMENT
#define tObjImpl_XAPIAN_DOCUMENT "\3\0\177\0\0\21"

#endif /* tObjImpl_XAPIAN_DOCUMENT */

#ifdef THIS_XAPIAN_DOCUMENT
  Xapian_Document_storage_offset = ADD_STORAGE(struct Xapian_Document_struct);
#endif /* THIS_XAPIAN_DOCUMENT */

#ifdef Xapian_Document_event_handler_defined
  pike_set_prog_event_callback(Xapian_Document_event_handler);

#ifndef Xapian_Document_gc_live_obj
  Pike_compiler->new_program->flags &= ~PROGRAM_LIVE_OBJ;

#endif /* Xapian_Document_gc_live_obj */

#endif /* Xapian_Document_event_handler_defined */

#ifdef f_Xapian_Document_create_defined

#ifdef f_Xapian_Document_create_fun_num_used
  f_Xapian_Document_create_fun_num =
#endif /* f_Xapian_Document_create_fun_num_used */
#line 1983 "xapian.ccmod"
    ADD_FUNCTION2("create", f_Xapian_Document_create, tFunc(tNone,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Document_create_defined */

#ifdef f_Xapian_Document_set_data_defined

#ifdef f_Xapian_Document_set_data_fun_num_used
  f_Xapian_Document_set_data_fun_num =
#endif /* f_Xapian_Document_set_data_fun_num_used */
#line 2010 "xapian.ccmod"
    ADD_FUNCTION2("set_data", f_Xapian_Document_set_data, tFunc(tStr,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Document_set_data_defined */

#ifdef f_Xapian_Document_value_iterator_defined

#ifdef f_Xapian_Document_value_iterator_fun_num_used
  f_Xapian_Document_value_iterator_fun_num =
#endif /* f_Xapian_Document_value_iterator_fun_num_used */
#line 2028 "xapian.ccmod"
    ADD_FUNCTION2("value_iterator", f_Xapian_Document_value_iterator, tFunc(tNone,tObj), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Document_value_iterator_defined */

#ifdef f_Xapian_Document_term_iterator_defined

#ifdef f_Xapian_Document_term_iterator_fun_num_used
  f_Xapian_Document_term_iterator_fun_num =
#endif /* f_Xapian_Document_term_iterator_fun_num_used */
#line 2048 "xapian.ccmod"
    ADD_FUNCTION2("term_iterator", f_Xapian_Document_term_iterator, tFunc(tNone,tObj), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Document_term_iterator_defined */

#ifdef f_Xapian_Document_clear_terms_defined

#ifdef f_Xapian_Document_clear_terms_fun_num_used
  f_Xapian_Document_clear_terms_fun_num =
#endif /* f_Xapian_Document_clear_terms_fun_num_used */
#line 2074 "xapian.ccmod"
    ADD_FUNCTION2("clear_terms", f_Xapian_Document_clear_terms, tFunc(tNone,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Document_clear_terms_defined */

#ifdef f_Xapian_Document_clear_values_defined

#ifdef f_Xapian_Document_clear_values_fun_num_used
  f_Xapian_Document_clear_values_fun_num =
#endif /* f_Xapian_Document_clear_values_fun_num_used */
#line 2088 "xapian.ccmod"
    ADD_FUNCTION2("clear_values", f_Xapian_Document_clear_values, tFunc(tNone,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Document_clear_values_defined */

#ifdef f_Xapian_Document_get_data_defined

#ifdef f_Xapian_Document_get_data_fun_num_used
  f_Xapian_Document_get_data_fun_num =
#endif /* f_Xapian_Document_get_data_fun_num_used */
#line 2107 "xapian.ccmod"
    ADD_FUNCTION2("get_data", f_Xapian_Document_get_data, tFunc(tNone,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Document_get_data_defined */

#ifdef f_Xapian_Document_get_description_defined

#ifdef f_Xapian_Document_get_description_fun_num_used
  f_Xapian_Document_get_description_fun_num =
#endif /* f_Xapian_Document_get_description_fun_num_used */
#line 2125 "xapian.ccmod"
    ADD_FUNCTION2("get_description", f_Xapian_Document_get_description, tFunc(tNone,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Document_get_description_defined */

#ifdef f_Xapian_Document_cq__sprintf_defined

#ifdef f_Xapian_Document_cq__sprintf_fun_num_used
  f_Xapian_Document_cq__sprintf_fun_num =
#endif /* f_Xapian_Document_cq__sprintf_fun_num_used */
#line 2135 "xapian.ccmod"
    ADD_FUNCTION2("_sprintf", f_Xapian_Document_cq__sprintf, tFunc("\10\200\0\0\0\177\377\377\377" tMapping,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Document_cq__sprintf_defined */

#ifdef f_Xapian_Document_get_value_defined

#ifdef f_Xapian_Document_get_value_fun_num_used
  f_Xapian_Document_get_value_fun_num =
#endif /* f_Xapian_Document_get_value_fun_num_used */
#line 2167 "xapian.ccmod"
    ADD_FUNCTION2("get_value", f_Xapian_Document_get_value, tFunc("\10\200\0\0\0\177\377\377\377",tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Document_get_value_defined */

#ifdef f_Xapian_Document_remove_value_defined

#ifdef f_Xapian_Document_remove_value_fun_num_used
  f_Xapian_Document_remove_value_fun_num =
#endif /* f_Xapian_Document_remove_value_fun_num_used */
#line 2191 "xapian.ccmod"
    ADD_FUNCTION2("remove_value", f_Xapian_Document_remove_value, tFunc("\10\200\0\0\0\177\377\377\377",tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Document_remove_value_defined */

#ifdef f_Xapian_Document_add_term_defined

#ifdef f_Xapian_Document_add_term_fun_num_used
  f_Xapian_Document_add_term_fun_num =
#endif /* f_Xapian_Document_add_term_fun_num_used */
#line 2215 "xapian.ccmod"
    ADD_FUNCTION2("add_term", f_Xapian_Document_add_term, tFunc(tStr "\10\200\0\0\0\177\377\377\377",tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Document_add_term_defined */

#ifdef f_Xapian_Document_add_posting_defined

#ifdef f_Xapian_Document_add_posting_fun_num_used
  f_Xapian_Document_add_posting_fun_num =
#endif /* f_Xapian_Document_add_posting_fun_num_used */
#line 2247 "xapian.ccmod"
    ADD_FUNCTION2("add_posting", f_Xapian_Document_add_posting, tFunc(tStr "\10\200\0\0\0\177\377\377\377" "\10\200\0\0\0\177\377\377\377",tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Document_add_posting_defined */

#ifdef f_Xapian_Document_remove_term_defined

#ifdef f_Xapian_Document_remove_term_fun_num_used
  f_Xapian_Document_remove_term_fun_num =
#endif /* f_Xapian_Document_remove_term_fun_num_used */
#line 2278 "xapian.ccmod"
    ADD_FUNCTION2("remove_term", f_Xapian_Document_remove_term, tFunc(tStr,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Document_remove_term_defined */

#ifdef f_Xapian_Document_remove_posting_defined

#ifdef f_Xapian_Document_remove_posting_fun_num_used
  f_Xapian_Document_remove_posting_fun_num =
#endif /* f_Xapian_Document_remove_posting_fun_num_used */
#line 2318 "xapian.ccmod"
    ADD_FUNCTION2("remove_posting", f_Xapian_Document_remove_posting, tFunc(tStr "\10\200\0\0\0\177\377\377\377" "\10\200\0\0\0\177\377\377\377",tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Document_remove_posting_defined */

#ifdef f_Xapian_Document_add_value_defined

#ifdef f_Xapian_Document_add_value_fun_num_used
  f_Xapian_Document_add_value_fun_num =
#endif /* f_Xapian_Document_add_value_fun_num_used */
#line 2352 "xapian.ccmod"
    ADD_FUNCTION2("add_value", f_Xapian_Document_add_value, tFunc("\10\200\0\0\0\177\377\377\377" tStr,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Document_add_value_defined */

#ifdef f_Xapian_Document_termlist_count_defined

#ifdef f_Xapian_Document_termlist_count_fun_num_used
  f_Xapian_Document_termlist_count_fun_num =
#endif /* f_Xapian_Document_termlist_count_fun_num_used */
#line 2371 "xapian.ccmod"
    ADD_FUNCTION2("termlist_count", f_Xapian_Document_termlist_count, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Document_termlist_count_defined */

#ifdef f_Xapian_Document_values_count_defined

#ifdef f_Xapian_Document_values_count_fun_num_used
  f_Xapian_Document_values_count_fun_num =
#endif /* f_Xapian_Document_values_count_fun_num_used */
#line 2392 "xapian.ccmod"
    ADD_FUNCTION2("values_count", f_Xapian_Document_values_count, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Document_values_count_defined */
#line 1971 "xapian.ccmod"
  Xapian_Document_program=end_program();
#line 1971 "xapian.ccmod"
#ifdef Xapian_Document_program_fun_num_used
Xapian_Document_program_fun_num=
#endif
 add_program_constant("Document",Xapian_Document_program,0);

#endif /* class_Xapian_Document_defined */

#ifdef class_Xapian_MSetIterator_defined

#ifdef PROG_XAPIAN_MSETITERATOR_ID
#line 2448 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_MSETITERATOR);
#else
#line 2448 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_MSETITERATOR_ID */
#line 2448 "xapian.ccmod"
  Xapian_MSetIterator_program = Pike_compiler->new_program;

#ifndef tObjImpl_XAPIAN_MSETITERATOR

#undef tObjIs_XAPIAN_MSETITERATOR
#define tObjIs_XAPIAN_MSETITERATOR "\3\1\177\0\0\22"

#undef tObjImpl_XAPIAN_MSETITERATOR
#define tObjImpl_XAPIAN_MSETITERATOR "\3\0\177\0\0\22"

#endif /* tObjImpl_XAPIAN_MSETITERATOR */

#ifdef THIS_XAPIAN_MSETITERATOR
  Xapian_MSetIterator_storage_offset = ADD_STORAGE(struct Xapian_MSetIterator_struct);
#endif /* THIS_XAPIAN_MSETITERATOR */

#ifdef Xapian_MSetIterator_event_handler_defined
  pike_set_prog_event_callback(Xapian_MSetIterator_event_handler);

#ifndef Xapian_MSetIterator_gc_live_obj
  Pike_compiler->new_program->flags &= ~PROGRAM_LIVE_OBJ;

#endif /* Xapian_MSetIterator_gc_live_obj */

#endif /* Xapian_MSetIterator_event_handler_defined */

#ifdef f_Xapian_MSetIterator_get_document_defined

#ifdef f_Xapian_MSetIterator_get_document_fun_num_used
  f_Xapian_MSetIterator_get_document_fun_num =
#endif /* f_Xapian_MSetIterator_get_document_fun_num_used */
#line 2454 "xapian.ccmod"
    ADD_FUNCTION2("get_document", f_Xapian_MSetIterator_get_document, tFunc(tNone,tObj), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_MSetIterator_get_document_defined */

#ifdef f_Xapian_MSetIterator_index_defined

#ifdef f_Xapian_MSetIterator_index_fun_num_used
  f_Xapian_MSetIterator_index_fun_num =
#endif /* f_Xapian_MSetIterator_index_fun_num_used */
#line 2478 "xapian.ccmod"
    ADD_FUNCTION2("index", f_Xapian_MSetIterator_index, tFunc(tNone,tMix), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_MSetIterator_index_defined */

#ifdef f_Xapian_MSetIterator_value_defined

#ifdef f_Xapian_MSetIterator_value_fun_num_used
  f_Xapian_MSetIterator_value_fun_num =
#endif /* f_Xapian_MSetIterator_value_fun_num_used */
#line 2483 "xapian.ccmod"
    ADD_FUNCTION2("value", f_Xapian_MSetIterator_value, tFunc(tNone,tObj), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_MSetIterator_value_defined */

#ifdef f_Xapian_MSetIterator_get_docid_defined

#ifdef f_Xapian_MSetIterator_get_docid_fun_num_used
  f_Xapian_MSetIterator_get_docid_fun_num =
#endif /* f_Xapian_MSetIterator_get_docid_fun_num_used */
#line 2488 "xapian.ccmod"
    ADD_FUNCTION2("get_docid", f_Xapian_MSetIterator_get_docid, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_MSetIterator_get_docid_defined */

#ifdef f_Xapian_MSetIterator_get_percent_defined

#ifdef f_Xapian_MSetIterator_get_percent_fun_num_used
  f_Xapian_MSetIterator_get_percent_fun_num =
#endif /* f_Xapian_MSetIterator_get_percent_fun_num_used */
    ADD_FUNCTION2("get_percent", f_Xapian_MSetIterator_get_percent, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_MSetIterator_get_percent_defined */

#ifdef f_Xapian_MSetIterator_get_weight_defined

#ifdef f_Xapian_MSetIterator_get_weight_fun_num_used
  f_Xapian_MSetIterator_get_weight_fun_num =
#endif /* f_Xapian_MSetIterator_get_weight_fun_num_used */
    ADD_FUNCTION2("get_weight", f_Xapian_MSetIterator_get_weight, tFunc(tNone,tFloat), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_MSetIterator_get_weight_defined */

#ifdef f_Xapian_MSetIterator_get_collapse_count_defined

#ifdef f_Xapian_MSetIterator_get_collapse_count_fun_num_used
  f_Xapian_MSetIterator_get_collapse_count_fun_num =
#endif /* f_Xapian_MSetIterator_get_collapse_count_fun_num_used */
    ADD_FUNCTION2("get_collapse_count", f_Xapian_MSetIterator_get_collapse_count, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_MSetIterator_get_collapse_count_defined */

#ifdef f_Xapian_MSetIterator_next_defined

#ifdef f_Xapian_MSetIterator_next_fun_num_used
  f_Xapian_MSetIterator_next_fun_num =
#endif /* f_Xapian_MSetIterator_next_fun_num_used */
    ADD_FUNCTION2("next", f_Xapian_MSetIterator_next, tFunc(tNone,tObj), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_MSetIterator_next_defined */

#ifdef f_Xapian_MSetIterator_cq__backtick_add_eq_defined

#ifdef f_Xapian_MSetIterator_cq__backtick_add_eq_fun_num_used
  f_Xapian_MSetIterator_cq__backtick_add_eq_fun_num =
#endif /* f_Xapian_MSetIterator_cq__backtick_add_eq_fun_num_used */
#line 2555 "xapian.ccmod"
    ADD_FUNCTION2("`+=", f_Xapian_MSetIterator_cq__backtick_add_eq, tFunc("\10\200\0\0\0\177\377\377\377",tMix), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_MSetIterator_cq__backtick_add_eq_defined */

#ifdef f_Xapian_MSetIterator_cq__backtick_21_defined

#ifdef f_Xapian_MSetIterator_cq__backtick_21_fun_num_used
  f_Xapian_MSetIterator_cq__backtick_21_fun_num =
#endif /* f_Xapian_MSetIterator_cq__backtick_21_fun_num_used */
#line 2571 "xapian.ccmod"
    ADD_FUNCTION2("`!", f_Xapian_MSetIterator_cq__backtick_21, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_MSetIterator_cq__backtick_21_defined */

#ifdef f_Xapian_MSetIterator_cq__backtick_eq_eq_defined

#ifdef f_Xapian_MSetIterator_cq__backtick_eq_eq_fun_num_used
  f_Xapian_MSetIterator_cq__backtick_eq_eq_fun_num =
#endif /* f_Xapian_MSetIterator_cq__backtick_eq_eq_fun_num_used */
    ADD_FUNCTION2("`==", f_Xapian_MSetIterator_cq__backtick_eq_eq, tFunc(tMix,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_MSetIterator_cq__backtick_eq_eq_defined */
#line 2448 "xapian.ccmod"
  Xapian_MSetIterator_program=end_program();
#line 2448 "xapian.ccmod"
#ifdef Xapian_MSetIterator_program_fun_num_used
Xapian_MSetIterator_program_fun_num=
#endif
 add_program_constant("MSetIterator",Xapian_MSetIterator_program,0);

#endif /* class_Xapian_MSetIterator_defined */

#ifdef class_Xapian_ESetIterator_defined

#ifdef PROG_XAPIAN_ESETITERATOR_ID
#line 2627 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_ESETITERATOR);
#else
#line 2627 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_ESETITERATOR_ID */
#line 2627 "xapian.ccmod"
  Xapian_ESetIterator_program = Pike_compiler->new_program;

#ifndef tObjImpl_XAPIAN_ESETITERATOR

#undef tObjIs_XAPIAN_ESETITERATOR
#define tObjIs_XAPIAN_ESETITERATOR "\3\1\177\0\0\23"

#undef tObjImpl_XAPIAN_ESETITERATOR
#define tObjImpl_XAPIAN_ESETITERATOR "\3\0\177\0\0\23"

#endif /* tObjImpl_XAPIAN_ESETITERATOR */

#ifdef THIS_XAPIAN_ESETITERATOR
  Xapian_ESetIterator_storage_offset = ADD_STORAGE(struct Xapian_ESetIterator_struct);
#endif /* THIS_XAPIAN_ESETITERATOR */

#ifdef Xapian_ESetIterator_event_handler_defined
  pike_set_prog_event_callback(Xapian_ESetIterator_event_handler);

#ifndef Xapian_ESetIterator_gc_live_obj
  Pike_compiler->new_program->flags &= ~PROGRAM_LIVE_OBJ;

#endif /* Xapian_ESetIterator_gc_live_obj */

#endif /* Xapian_ESetIterator_event_handler_defined */

#ifdef f_Xapian_ESetIterator_get_term_defined

#ifdef f_Xapian_ESetIterator_get_term_fun_num_used
  f_Xapian_ESetIterator_get_term_fun_num =
#endif /* f_Xapian_ESetIterator_get_term_fun_num_used */
#line 2633 "xapian.ccmod"
    ADD_FUNCTION2("get_term", f_Xapian_ESetIterator_get_term, tFunc(tNone,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ESetIterator_get_term_defined */

#ifdef f_Xapian_ESetIterator_get_weight_defined

#ifdef f_Xapian_ESetIterator_get_weight_fun_num_used
  f_Xapian_ESetIterator_get_weight_fun_num =
#endif /* f_Xapian_ESetIterator_get_weight_fun_num_used */
    ADD_FUNCTION2("get_weight", f_Xapian_ESetIterator_get_weight, tFunc(tNone,tFloat), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ESetIterator_get_weight_defined */

#ifdef f_Xapian_ESetIterator_index_defined

#ifdef f_Xapian_ESetIterator_index_fun_num_used
  f_Xapian_ESetIterator_index_fun_num =
#endif /* f_Xapian_ESetIterator_index_fun_num_used */
    ADD_FUNCTION2("index", f_Xapian_ESetIterator_index, tFunc(tNone,tMix), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ESetIterator_index_defined */

#ifdef f_Xapian_ESetIterator_value_defined

#ifdef f_Xapian_ESetIterator_value_fun_num_used
  f_Xapian_ESetIterator_value_fun_num =
#endif /* f_Xapian_ESetIterator_value_fun_num_used */
#line 2656 "xapian.ccmod"
    ADD_FUNCTION2("value", f_Xapian_ESetIterator_value, tFunc(tNone,tObj), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ESetIterator_value_defined */

#ifdef f_Xapian_ESetIterator_next_defined

#ifdef f_Xapian_ESetIterator_next_fun_num_used
  f_Xapian_ESetIterator_next_fun_num =
#endif /* f_Xapian_ESetIterator_next_fun_num_used */
#line 2661 "xapian.ccmod"
    ADD_FUNCTION2("next", f_Xapian_ESetIterator_next, tFunc(tNone,tObj), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ESetIterator_next_defined */

#ifdef f_Xapian_ESetIterator_cq__backtick_add_eq_defined

#ifdef f_Xapian_ESetIterator_cq__backtick_add_eq_fun_num_used
  f_Xapian_ESetIterator_cq__backtick_add_eq_fun_num =
#endif /* f_Xapian_ESetIterator_cq__backtick_add_eq_fun_num_used */
#line 2693 "xapian.ccmod"
    ADD_FUNCTION2("`+=", f_Xapian_ESetIterator_cq__backtick_add_eq, tFunc("\10\200\0\0\0\177\377\377\377",tMix), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ESetIterator_cq__backtick_add_eq_defined */

#ifdef f_Xapian_ESetIterator_cq__backtick_21_defined

#ifdef f_Xapian_ESetIterator_cq__backtick_21_fun_num_used
  f_Xapian_ESetIterator_cq__backtick_21_fun_num =
#endif /* f_Xapian_ESetIterator_cq__backtick_21_fun_num_used */
#line 2709 "xapian.ccmod"
    ADD_FUNCTION2("`!", f_Xapian_ESetIterator_cq__backtick_21, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ESetIterator_cq__backtick_21_defined */

#ifdef f_Xapian_ESetIterator_cq__backtick_eq_eq_defined

#ifdef f_Xapian_ESetIterator_cq__backtick_eq_eq_fun_num_used
  f_Xapian_ESetIterator_cq__backtick_eq_eq_fun_num =
#endif /* f_Xapian_ESetIterator_cq__backtick_eq_eq_fun_num_used */
    ADD_FUNCTION2("`==", f_Xapian_ESetIterator_cq__backtick_eq_eq, tFunc(tMix,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ESetIterator_cq__backtick_eq_eq_defined */
#line 2627 "xapian.ccmod"
  Xapian_ESetIterator_program=end_program();
#line 2627 "xapian.ccmod"
#ifdef Xapian_ESetIterator_program_fun_num_used
Xapian_ESetIterator_program_fun_num=
#endif
 add_program_constant("ESetIterator",Xapian_ESetIterator_program,0);

#endif /* class_Xapian_ESetIterator_defined */

#ifdef class_Xapian_MSet_defined

#ifdef PROG_XAPIAN_MSET_ID
#line 2767 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_MSET);
#else
#line 2767 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_MSET_ID */
#line 2767 "xapian.ccmod"
  Xapian_MSet_program = Pike_compiler->new_program;

#ifndef tObjImpl_XAPIAN_MSET

#undef tObjIs_XAPIAN_MSET
#define tObjIs_XAPIAN_MSET "\3\1\177\0\0\24"

#undef tObjImpl_XAPIAN_MSET
#define tObjImpl_XAPIAN_MSET "\3\0\177\0\0\24"

#endif /* tObjImpl_XAPIAN_MSET */

#ifdef THIS_XAPIAN_MSET
  Xapian_MSet_storage_offset = ADD_STORAGE(struct Xapian_MSet_struct);
#endif /* THIS_XAPIAN_MSET */

#ifdef Xapian_MSet_event_handler_defined
  pike_set_prog_event_callback(Xapian_MSet_event_handler);

#ifndef Xapian_MSet_gc_live_obj
  Pike_compiler->new_program->flags &= ~PROGRAM_LIVE_OBJ;

#endif /* Xapian_MSet_gc_live_obj */

#endif /* Xapian_MSet_event_handler_defined */

#ifdef f_Xapian_MSet_create_defined

#ifdef f_Xapian_MSet_create_fun_num_used
  f_Xapian_MSet_create_fun_num =
#endif /* f_Xapian_MSet_create_fun_num_used */
#line 2801 "xapian.ccmod"
    ADD_FUNCTION2("create", f_Xapian_MSet_create, tFunc(tNone,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_MSet_create_defined */

#ifdef f_Xapian_MSet_begin_defined

#ifdef f_Xapian_MSet_begin_fun_num_used
  f_Xapian_MSet_begin_fun_num =
#endif /* f_Xapian_MSet_begin_fun_num_used */
#line 2826 "xapian.ccmod"
    ADD_FUNCTION2("begin", f_Xapian_MSet_begin, tFunc(tNone,tObj), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_MSet_begin_defined */

#ifdef f_Xapian_MSet_cq__get_iterator_defined

#ifdef f_Xapian_MSet_cq__get_iterator_fun_num_used
  f_Xapian_MSet_cq__get_iterator_fun_num =
#endif /* f_Xapian_MSet_cq__get_iterator_fun_num_used */
#line 2846 "xapian.ccmod"
    ADD_FUNCTION2("_get_iterator", f_Xapian_MSet_cq__get_iterator, tFunc(tNone,tObj), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_MSet_cq__get_iterator_defined */

#ifdef f_Xapian_MSet_end_defined

#ifdef f_Xapian_MSet_end_fun_num_used
  f_Xapian_MSet_end_fun_num =
#endif /* f_Xapian_MSet_end_fun_num_used */
#line 2875 "xapian.ccmod"
    ADD_FUNCTION2("end", f_Xapian_MSet_end, tFunc(tNone,tObj), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_MSet_end_defined */

#ifdef f_Xapian_MSet_back_defined

#ifdef f_Xapian_MSet_back_fun_num_used
  f_Xapian_MSet_back_fun_num =
#endif /* f_Xapian_MSet_back_fun_num_used */
#line 2902 "xapian.ccmod"
    ADD_FUNCTION2("back", f_Xapian_MSet_back, tFunc(tNone,tObj), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_MSet_back_defined */

#ifdef f_Xapian_MSet_fetch_defined

#ifdef f_Xapian_MSet_fetch_fun_num_used
  f_Xapian_MSet_fetch_fun_num =
#endif /* f_Xapian_MSet_fetch_fun_num_used */
#line 2928 "xapian.ccmod"
    ADD_FUNCTION2("fetch", f_Xapian_MSet_fetch, tFunc(tNone,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_MSet_fetch_defined */

#ifdef f_Xapian_MSet_size_defined

#ifdef f_Xapian_MSet_size_fun_num_used
  f_Xapian_MSet_size_fun_num =
#endif /* f_Xapian_MSet_size_fun_num_used */
#line 2944 "xapian.ccmod"
    ADD_FUNCTION2("size", f_Xapian_MSet_size, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_MSet_size_defined */

#ifdef f_Xapian_MSet_get_matches_estimated_defined

#ifdef f_Xapian_MSet_get_matches_estimated_fun_num_used
  f_Xapian_MSet_get_matches_estimated_fun_num =
#endif /* f_Xapian_MSet_get_matches_estimated_fun_num_used */
#line 2963 "xapian.ccmod"
    ADD_FUNCTION2("get_matches_estimated", f_Xapian_MSet_get_matches_estimated, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_MSet_get_matches_estimated_defined */

#ifdef f_Xapian_MSet_get_matches_upper_bound_defined

#ifdef f_Xapian_MSet_get_matches_upper_bound_fun_num_used
  f_Xapian_MSet_get_matches_upper_bound_fun_num =
#endif /* f_Xapian_MSet_get_matches_upper_bound_fun_num_used */
#line 2982 "xapian.ccmod"
    ADD_FUNCTION2("get_matches_upper_bound", f_Xapian_MSet_get_matches_upper_bound, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_MSet_get_matches_upper_bound_defined */

#ifdef f_Xapian_MSet_get_firstitem_defined

#ifdef f_Xapian_MSet_get_firstitem_fun_num_used
  f_Xapian_MSet_get_firstitem_fun_num =
#endif /* f_Xapian_MSet_get_firstitem_fun_num_used */
#line 3001 "xapian.ccmod"
    ADD_FUNCTION2("get_firstitem", f_Xapian_MSet_get_firstitem, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_MSet_get_firstitem_defined */

#ifdef f_Xapian_MSet_get_matches_lower_bound_defined

#ifdef f_Xapian_MSet_get_matches_lower_bound_fun_num_used
  f_Xapian_MSet_get_matches_lower_bound_fun_num =
#endif /* f_Xapian_MSet_get_matches_lower_bound_fun_num_used */
#line 3020 "xapian.ccmod"
    ADD_FUNCTION2("get_matches_lower_bound", f_Xapian_MSet_get_matches_lower_bound, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_MSet_get_matches_lower_bound_defined */

#ifdef f_Xapian_MSet_get_description_defined

#ifdef f_Xapian_MSet_get_description_fun_num_used
  f_Xapian_MSet_get_description_fun_num =
#endif /* f_Xapian_MSet_get_description_fun_num_used */
#line 3039 "xapian.ccmod"
    ADD_FUNCTION2("get_description", f_Xapian_MSet_get_description, tFunc(tNone,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_MSet_get_description_defined */

#ifdef f_Xapian_MSet_cq__sprintf_defined

#ifdef f_Xapian_MSet_cq__sprintf_fun_num_used
  f_Xapian_MSet_cq__sprintf_fun_num =
#endif /* f_Xapian_MSet_cq__sprintf_fun_num_used */
#line 3049 "xapian.ccmod"
    ADD_FUNCTION2("_sprintf", f_Xapian_MSet_cq__sprintf, tFunc("\10\200\0\0\0\177\377\377\377" tMapping,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_MSet_cq__sprintf_defined */
#line 2767 "xapian.ccmod"
  Xapian_MSet_program=end_program();
#line 2767 "xapian.ccmod"
#ifdef Xapian_MSet_program_fun_num_used
Xapian_MSet_program_fun_num=
#endif
 add_program_constant("MSet",Xapian_MSet_program,0);

#endif /* class_Xapian_MSet_defined */

#ifdef class_Xapian_RSet_defined

#ifdef PROG_XAPIAN_RSET_ID
#line 3077 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_RSET);
#else
#line 3077 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_RSET_ID */
#line 3077 "xapian.ccmod"
  Xapian_RSet_program = Pike_compiler->new_program;

#ifndef tObjImpl_XAPIAN_RSET

#undef tObjIs_XAPIAN_RSET
#define tObjIs_XAPIAN_RSET "\3\1\177\0\0\25"

#undef tObjImpl_XAPIAN_RSET
#define tObjImpl_XAPIAN_RSET "\3\0\177\0\0\25"

#endif /* tObjImpl_XAPIAN_RSET */

#ifdef THIS_XAPIAN_RSET
  Xapian_RSet_storage_offset = ADD_STORAGE(struct Xapian_RSet_struct);
#endif /* THIS_XAPIAN_RSET */

#ifdef Xapian_RSet_event_handler_defined
  pike_set_prog_event_callback(Xapian_RSet_event_handler);

#ifndef Xapian_RSet_gc_live_obj
  Pike_compiler->new_program->flags &= ~PROGRAM_LIVE_OBJ;

#endif /* Xapian_RSet_gc_live_obj */

#endif /* Xapian_RSet_event_handler_defined */

#ifdef f_Xapian_RSet_create_defined

#ifdef f_Xapian_RSet_create_fun_num_used
  f_Xapian_RSet_create_fun_num =
#endif /* f_Xapian_RSet_create_fun_num_used */
#line 3110 "xapian.ccmod"
    ADD_FUNCTION2("create", f_Xapian_RSet_create, tFunc(tNone,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_RSet_create_defined */

#ifdef f_Xapian_RSet_size_defined

#ifdef f_Xapian_RSet_size_fun_num_used
  f_Xapian_RSet_size_fun_num =
#endif /* f_Xapian_RSet_size_fun_num_used */
#line 3135 "xapian.ccmod"
    ADD_FUNCTION2("size", f_Xapian_RSet_size, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_RSet_size_defined */

#ifdef f_Xapian_RSet_empty_defined

#ifdef f_Xapian_RSet_empty_fun_num_used
  f_Xapian_RSet_empty_fun_num =
#endif /* f_Xapian_RSet_empty_fun_num_used */
#line 3154 "xapian.ccmod"
    ADD_FUNCTION2("empty", f_Xapian_RSet_empty, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_RSet_empty_defined */

#ifdef f_Xapian_RSet_add_document_defined

#ifdef Xapian_RSet_f_Xapian_RSet_add_document_fun_num_used
  Xapian_RSet_f_Xapian_RSet_add_document_fun_num =
#endif /* Xapian_RSet_f_Xapian_RSet_add_document_fun_num_used */
#line 3193 "xapian.ccmod"
    ADD_FUNCTION2("add_document", f_Xapian_RSet_add_document, tOr(tFunc("\10\200\0\0\0\177\377\377\377",tVoid),tFunc(tObj,tVoid)), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_RSet_add_document_defined */

#ifdef f_Xapian_RSet_remove_document_defined

#ifdef Xapian_RSet_f_Xapian_RSet_remove_document_fun_num_used
  Xapian_RSet_f_Xapian_RSet_remove_document_fun_num =
#endif /* Xapian_RSet_f_Xapian_RSet_remove_document_fun_num_used */
#line 3235 "xapian.ccmod"
    ADD_FUNCTION2("remove_document", f_Xapian_RSet_remove_document, tOr(tFunc("\10\200\0\0\0\177\377\377\377",tVoid),tFunc(tObj,tVoid)), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_RSet_remove_document_defined */

#ifdef f_Xapian_RSet_contains_defined

#ifdef Xapian_RSet_f_Xapian_RSet_contains_fun_num_used
  Xapian_RSet_f_Xapian_RSet_contains_fun_num =
#endif /* Xapian_RSet_f_Xapian_RSet_contains_fun_num_used */
#line 3283 "xapian.ccmod"
    ADD_FUNCTION2("contains", f_Xapian_RSet_contains, tOr(tFunc("\10\200\0\0\0\177\377\377\377","\10\200\0\0\0\177\377\377\377"),tFunc(tObj,"\10\200\0\0\0\177\377\377\377")), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_RSet_contains_defined */

#ifdef f_Xapian_RSet_get_description_defined

#ifdef f_Xapian_RSet_get_description_fun_num_used
  f_Xapian_RSet_get_description_fun_num =
#endif /* f_Xapian_RSet_get_description_fun_num_used */
#line 3307 "xapian.ccmod"
    ADD_FUNCTION2("get_description", f_Xapian_RSet_get_description, tFunc(tNone,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_RSet_get_description_defined */

#ifdef f_Xapian_RSet_cq__sprintf_defined

#ifdef f_Xapian_RSet_cq__sprintf_fun_num_used
  f_Xapian_RSet_cq__sprintf_fun_num =
#endif /* f_Xapian_RSet_cq__sprintf_fun_num_used */
#line 3317 "xapian.ccmod"
    ADD_FUNCTION2("_sprintf", f_Xapian_RSet_cq__sprintf, tFunc("\10\200\0\0\0\177\377\377\377" tMapping,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_RSet_cq__sprintf_defined */
#line 3077 "xapian.ccmod"
  Xapian_RSet_program=end_program();
#line 3077 "xapian.ccmod"
#ifdef Xapian_RSet_program_fun_num_used
Xapian_RSet_program_fun_num=
#endif
 add_program_constant("RSet",Xapian_RSet_program,0);

#endif /* class_Xapian_RSet_defined */

#ifdef class_Xapian_ESet_defined

#ifdef PROG_XAPIAN_ESET_ID
#line 3344 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_ESET);
#else
#line 3344 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_ESET_ID */
#line 3344 "xapian.ccmod"
  Xapian_ESet_program = Pike_compiler->new_program;

#ifndef tObjImpl_XAPIAN_ESET

#undef tObjIs_XAPIAN_ESET
#define tObjIs_XAPIAN_ESET "\3\1\177\0\0\26"

#undef tObjImpl_XAPIAN_ESET
#define tObjImpl_XAPIAN_ESET "\3\0\177\0\0\26"

#endif /* tObjImpl_XAPIAN_ESET */

#ifdef THIS_XAPIAN_ESET
  Xapian_ESet_storage_offset = ADD_STORAGE(struct Xapian_ESet_struct);
#endif /* THIS_XAPIAN_ESET */

#ifdef Xapian_ESet_event_handler_defined
  pike_set_prog_event_callback(Xapian_ESet_event_handler);

#ifndef Xapian_ESet_gc_live_obj
  Pike_compiler->new_program->flags &= ~PROGRAM_LIVE_OBJ;

#endif /* Xapian_ESet_gc_live_obj */

#endif /* Xapian_ESet_event_handler_defined */

#ifdef f_Xapian_ESet_create_defined

#ifdef f_Xapian_ESet_create_fun_num_used
  f_Xapian_ESet_create_fun_num =
#endif /* f_Xapian_ESet_create_fun_num_used */
#line 3378 "xapian.ccmod"
    ADD_FUNCTION2("create", f_Xapian_ESet_create, tFunc(tNone,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ESet_create_defined */

#ifdef f_Xapian_ESet_begin_defined

#ifdef f_Xapian_ESet_begin_fun_num_used
  f_Xapian_ESet_begin_fun_num =
#endif /* f_Xapian_ESet_begin_fun_num_used */
#line 3403 "xapian.ccmod"
    ADD_FUNCTION2("begin", f_Xapian_ESet_begin, tFunc(tNone,tObj), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ESet_begin_defined */

#ifdef f_Xapian_ESet_end_defined

#ifdef f_Xapian_ESet_end_fun_num_used
  f_Xapian_ESet_end_fun_num =
#endif /* f_Xapian_ESet_end_fun_num_used */
#line 3431 "xapian.ccmod"
    ADD_FUNCTION2("end", f_Xapian_ESet_end, tFunc(tNone,tObj), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ESet_end_defined */

#ifdef f_Xapian_ESet_back_defined

#ifdef f_Xapian_ESet_back_fun_num_used
  f_Xapian_ESet_back_fun_num =
#endif /* f_Xapian_ESet_back_fun_num_used */
#line 3459 "xapian.ccmod"
    ADD_FUNCTION2("back", f_Xapian_ESet_back, tFunc(tNone,tObj), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ESet_back_defined */

#ifdef f_Xapian_ESet_cq__backtick_5B_5D_defined

#ifdef f_Xapian_ESet_cq__backtick_5B_5D_fun_num_used
  f_Xapian_ESet_cq__backtick_5B_5D_fun_num =
#endif /* f_Xapian_ESet_cq__backtick_5B_5D_fun_num_used */
#line 3490 "xapian.ccmod"
    ADD_FUNCTION2("`[]", f_Xapian_ESet_cq__backtick_5B_5D, tFunc("\10\200\0\0\0\177\377\377\377",tObj), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ESet_cq__backtick_5B_5D_defined */

#ifdef f_Xapian_ESet_size_defined

#ifdef f_Xapian_ESet_size_fun_num_used
  f_Xapian_ESet_size_fun_num =
#endif /* f_Xapian_ESet_size_fun_num_used */
#line 3518 "xapian.ccmod"
    ADD_FUNCTION2("size", f_Xapian_ESet_size, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ESet_size_defined */

#ifdef f_Xapian_ESet_empty_defined

#ifdef f_Xapian_ESet_empty_fun_num_used
  f_Xapian_ESet_empty_fun_num =
#endif /* f_Xapian_ESet_empty_fun_num_used */
#line 3537 "xapian.ccmod"
    ADD_FUNCTION2("empty", f_Xapian_ESet_empty, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ESet_empty_defined */

#ifdef f_Xapian_ESet_max_size_defined

#ifdef f_Xapian_ESet_max_size_fun_num_used
  f_Xapian_ESet_max_size_fun_num =
#endif /* f_Xapian_ESet_max_size_fun_num_used */
#line 3556 "xapian.ccmod"
    ADD_FUNCTION2("max_size", f_Xapian_ESet_max_size, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ESet_max_size_defined */

#ifdef f_Xapian_ESet_get_ebound_defined

#ifdef f_Xapian_ESet_get_ebound_fun_num_used
  f_Xapian_ESet_get_ebound_fun_num =
#endif /* f_Xapian_ESet_get_ebound_fun_num_used */
#line 3575 "xapian.ccmod"
    ADD_FUNCTION2("get_ebound", f_Xapian_ESet_get_ebound, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ESet_get_ebound_defined */

#ifdef f_Xapian_ESet_get_description_defined

#ifdef f_Xapian_ESet_get_description_fun_num_used
  f_Xapian_ESet_get_description_fun_num =
#endif /* f_Xapian_ESet_get_description_fun_num_used */
#line 3594 "xapian.ccmod"
    ADD_FUNCTION2("get_description", f_Xapian_ESet_get_description, tFunc(tNone,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ESet_get_description_defined */

#ifdef f_Xapian_ESet_cq__sprintf_defined

#ifdef f_Xapian_ESet_cq__sprintf_fun_num_used
  f_Xapian_ESet_cq__sprintf_fun_num =
#endif /* f_Xapian_ESet_cq__sprintf_fun_num_used */
#line 3604 "xapian.ccmod"
    ADD_FUNCTION2("_sprintf", f_Xapian_ESet_cq__sprintf, tFunc("\10\200\0\0\0\177\377\377\377" tMapping,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_ESet_cq__sprintf_defined */
#line 3344 "xapian.ccmod"
  Xapian_ESet_program=end_program();
#line 3344 "xapian.ccmod"
#ifdef Xapian_ESet_program_fun_num_used
Xapian_ESet_program_fun_num=
#endif
 add_program_constant("ESet",Xapian_ESet_program,0);

#endif /* class_Xapian_ESet_defined */

#ifdef class_Xapian_Database_defined

#ifdef PROG_XAPIAN_DATABASE_ID
#line 3631 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_DATABASE);
#else
#line 3631 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_DATABASE_ID */
#line 3631 "xapian.ccmod"
  Xapian_Database_program = Pike_compiler->new_program;

#ifndef tObjImpl_XAPIAN_DATABASE

#undef tObjIs_XAPIAN_DATABASE
#define tObjIs_XAPIAN_DATABASE "\3\1\177\0\0\27"

#undef tObjImpl_XAPIAN_DATABASE
#define tObjImpl_XAPIAN_DATABASE "\3\0\177\0\0\27"

#endif /* tObjImpl_XAPIAN_DATABASE */

#ifdef THIS_XAPIAN_DATABASE
  Xapian_Database_storage_offset = ADD_STORAGE(struct Xapian_Database_struct);
#endif /* THIS_XAPIAN_DATABASE */

#ifdef Xapian_Database_event_handler_defined
  pike_set_prog_event_callback(Xapian_Database_event_handler);

#ifndef Xapian_Database_gc_live_obj
  Pike_compiler->new_program->flags &= ~PROGRAM_LIVE_OBJ;

#endif /* Xapian_Database_gc_live_obj */

#endif /* Xapian_Database_event_handler_defined */

#ifdef f_Xapian_Database_create_defined

#ifdef Xapian_Database_f_Xapian_Database_create_fun_num_used
  Xapian_Database_f_Xapian_Database_create_fun_num =
#endif /* Xapian_Database_f_Xapian_Database_create_fun_num_used */
#line 3680 "xapian.ccmod"
    ADD_FUNCTION2("create", f_Xapian_Database_create, tOr(tFunc(tStr,tVoid),tFunc(tNone,tVoid)), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Database_create_defined */

#ifdef f_Xapian_Database_reopen_defined

#ifdef f_Xapian_Database_reopen_fun_num_used
  f_Xapian_Database_reopen_fun_num =
#endif /* f_Xapian_Database_reopen_fun_num_used */
#line 3693 "xapian.ccmod"
    ADD_FUNCTION2("reopen", f_Xapian_Database_reopen, tFunc(tNone,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Database_reopen_defined */

#ifdef f_Xapian_Database_keep_alive_defined

#ifdef f_Xapian_Database_keep_alive_fun_num_used
  f_Xapian_Database_keep_alive_fun_num =
#endif /* f_Xapian_Database_keep_alive_fun_num_used */
#line 3706 "xapian.ccmod"
    ADD_FUNCTION2("keep_alive", f_Xapian_Database_keep_alive, tFunc(tNone,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Database_keep_alive_defined */

#ifdef f_Xapian_Database_get_doclength_defined

#ifdef f_Xapian_Database_get_doclength_fun_num_used
  f_Xapian_Database_get_doclength_fun_num =
#endif /* f_Xapian_Database_get_doclength_fun_num_used */
#line 3725 "xapian.ccmod"
    ADD_FUNCTION2("get_doclength", f_Xapian_Database_get_doclength, tFunc("\10\200\0\0\0\177\377\377\377","\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Database_get_doclength_defined */

#ifdef f_Xapian_Database_get_doccount_defined

#ifdef f_Xapian_Database_get_doccount_fun_num_used
  f_Xapian_Database_get_doccount_fun_num =
#endif /* f_Xapian_Database_get_doccount_fun_num_used */
#line 3743 "xapian.ccmod"
    ADD_FUNCTION2("get_doccount", f_Xapian_Database_get_doccount, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Database_get_doccount_defined */

#ifdef f_Xapian_Database_get_avlength_defined

#ifdef f_Xapian_Database_get_avlength_fun_num_used
  f_Xapian_Database_get_avlength_fun_num =
#endif /* f_Xapian_Database_get_avlength_fun_num_used */
#line 3760 "xapian.ccmod"
    ADD_FUNCTION2("get_avlength", f_Xapian_Database_get_avlength, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Database_get_avlength_defined */

#ifdef f_Xapian_Database_get_lastdocid_defined

#ifdef f_Xapian_Database_get_lastdocid_fun_num_used
  f_Xapian_Database_get_lastdocid_fun_num =
#endif /* f_Xapian_Database_get_lastdocid_fun_num_used */
#line 3777 "xapian.ccmod"
    ADD_FUNCTION2("get_lastdocid", f_Xapian_Database_get_lastdocid, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Database_get_lastdocid_defined */

#ifdef f_Xapian_Database_has_positions_defined

#ifdef f_Xapian_Database_has_positions_fun_num_used
  f_Xapian_Database_has_positions_fun_num =
#endif /* f_Xapian_Database_has_positions_fun_num_used */
#line 3795 "xapian.ccmod"
    ADD_FUNCTION2("has_positions", f_Xapian_Database_has_positions, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Database_has_positions_defined */

#ifdef f_Xapian_Database_synonyms_iterator_defined

#ifdef f_Xapian_Database_synonyms_iterator_fun_num_used
  f_Xapian_Database_synonyms_iterator_fun_num =
#endif /* f_Xapian_Database_synonyms_iterator_fun_num_used */
#line 3810 "xapian.ccmod"
    ADD_FUNCTION2("synonyms_iterator", f_Xapian_Database_synonyms_iterator, tFunc(tStr,tObj), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Database_synonyms_iterator_defined */

#ifdef f_Xapian_Database_get_document_defined

#ifdef f_Xapian_Database_get_document_fun_num_used
  f_Xapian_Database_get_document_fun_num =
#endif /* f_Xapian_Database_get_document_fun_num_used */
#line 3847 "xapian.ccmod"
    ADD_FUNCTION2("get_document", f_Xapian_Database_get_document, tFunc("\10\200\0\0\0\177\377\377\377",tObj), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Database_get_document_defined */

#ifdef f_Xapian_Database_get_spelling_terms_defined

#ifdef Xapian_Database_f_Xapian_Database_get_spelling_terms_fun_num_used
  Xapian_Database_f_Xapian_Database_get_spelling_terms_fun_num =
#endif /* Xapian_Database_f_Xapian_Database_get_spelling_terms_fun_num_used */
#line 3910 "xapian.ccmod"
    ADD_FUNCTION2("get_spelling_terms", f_Xapian_Database_get_spelling_terms, tOr(tFunc(tNone,tObj),tFunc(tStr,tObj)), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Database_get_spelling_terms_defined */

#ifdef f_Xapian_Database_get_spelling_suggestion_defined

#ifdef f_Xapian_Database_get_spelling_suggestion_fun_num_used
  f_Xapian_Database_get_spelling_suggestion_fun_num =
#endif /* f_Xapian_Database_get_spelling_suggestion_fun_num_used */
#line 3942 "xapian.ccmod"
    ADD_FUNCTION2("get_spelling_suggestion", f_Xapian_Database_get_spelling_suggestion, tFunc(tStr "\10\200\0\0\0\177\377\377\377",tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Database_get_spelling_suggestion_defined */

#ifdef f_Xapian_Database_get_description_defined

#ifdef f_Xapian_Database_get_description_fun_num_used
  f_Xapian_Database_get_description_fun_num =
#endif /* f_Xapian_Database_get_description_fun_num_used */
#line 3963 "xapian.ccmod"
    ADD_FUNCTION2("get_description", f_Xapian_Database_get_description, tFunc(tNone,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Database_get_description_defined */

#ifdef f_Xapian_Database_cq__sprintf_defined

#ifdef f_Xapian_Database_cq__sprintf_fun_num_used
  f_Xapian_Database_cq__sprintf_fun_num =
#endif /* f_Xapian_Database_cq__sprintf_fun_num_used */
#line 3973 "xapian.ccmod"
    ADD_FUNCTION2("_sprintf", f_Xapian_Database_cq__sprintf, tFunc("\10\200\0\0\0\177\377\377\377" tMapping,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Database_cq__sprintf_defined */

#ifdef f_Xapian_Database_destroy_defined

#ifdef f_Xapian_Database_destroy_fun_num_used
  f_Xapian_Database_destroy_fun_num =
#endif /* f_Xapian_Database_destroy_fun_num_used */
#line 4009 "xapian.ccmod"
    ADD_FUNCTION2("destroy", f_Xapian_Database_destroy, tFunc(tOr("\10\200\0\0\0\177\377\377\377",tVoid),tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Database_destroy_defined */
#line 3631 "xapian.ccmod"
  Xapian_Database_program=end_program();
#line 3631 "xapian.ccmod"
#ifdef Xapian_Database_program_fun_num_used
Xapian_Database_program_fun_num=
#endif
 add_program_constant("Database",Xapian_Database_program,0);

#endif /* class_Xapian_Database_defined */

#ifdef class_Xapian_WriteableDatabase_defined

#ifdef PROG_XAPIAN_WRITEABLEDATABASE_ID
#line 4043 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_WRITEABLEDATABASE);
#else
#line 4043 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_WRITEABLEDATABASE_ID */
#line 4043 "xapian.ccmod"
  Xapian_WriteableDatabase_program = Pike_compiler->new_program;

#ifndef tObjImpl_XAPIAN_WRITEABLEDATABASE

#undef tObjIs_XAPIAN_WRITEABLEDATABASE
#define tObjIs_XAPIAN_WRITEABLEDATABASE "\3\1\177\0\0\30"

#undef tObjImpl_XAPIAN_WRITEABLEDATABASE
#define tObjImpl_XAPIAN_WRITEABLEDATABASE "\3\0\177\0\0\30"

#endif /* tObjImpl_XAPIAN_WRITEABLEDATABASE */

#ifdef inherit_Xapian_Database_Xapian_WriteableDatabase_defined
#line 4045 "xapian.ccmod"
  Xapian_WriteableDatabase_Xapian_Database_inh_num = Pike_compiler->new_program->num_inherits;
#line 4045 "xapian.ccmod"
  low_inherit(Xapian_Database_program, NULL, -1, 0, 0, NULL);
#line 4045 "xapian.ccmod"
  Xapian_WriteableDatabase_Xapian_Database_inh_offset = Pike_compiler->new_program->inherits[Xapian_WriteableDatabase_Xapian_Database_inh_num].identifier_level;

#endif /* inherit_Xapian_Database_Xapian_WriteableDatabase_defined */

#ifdef f_Xapian_WriteableDatabase_create_defined

#ifdef f_Xapian_WriteableDatabase_create_fun_num_used
  f_Xapian_WriteableDatabase_create_fun_num =
#endif /* f_Xapian_WriteableDatabase_create_fun_num_used */
#line 4059 "xapian.ccmod"
    ADD_FUNCTION2("create", f_Xapian_WriteableDatabase_create, tFunc(tStr "\10\200\0\0\0\177\377\377\377",tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_WriteableDatabase_create_defined */

#ifdef f_Xapian_WriteableDatabase_flush_defined

#ifdef f_Xapian_WriteableDatabase_flush_fun_num_used
  f_Xapian_WriteableDatabase_flush_fun_num =
#endif /* f_Xapian_WriteableDatabase_flush_fun_num_used */
#line 4106 "xapian.ccmod"
    ADD_FUNCTION2("flush", f_Xapian_WriteableDatabase_flush, tFunc(tNone,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_WriteableDatabase_flush_defined */

#ifdef f_Xapian_WriteableDatabase_add_document_defined

#ifdef f_Xapian_WriteableDatabase_add_document_fun_num_used
  f_Xapian_WriteableDatabase_add_document_fun_num =
#endif /* f_Xapian_WriteableDatabase_add_document_fun_num_used */
#line 4140 "xapian.ccmod"
    ADD_FUNCTION2("add_document", f_Xapian_WriteableDatabase_add_document, tFunc(tObj,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_WriteableDatabase_add_document_defined */

#ifdef f_Xapian_WriteableDatabase_replace_document_defined

#ifdef Xapian_WriteableDatabase_f_Xapian_WriteableDatabase_replace_document_fun_num_used
  Xapian_WriteableDatabase_f_Xapian_WriteableDatabase_replace_document_fun_num =
#endif /* Xapian_WriteableDatabase_f_Xapian_WriteableDatabase_replace_document_fun_num_used */
#line 4232 "xapian.ccmod"
    ADD_FUNCTION2("replace_document", f_Xapian_WriteableDatabase_replace_document, tOr(tFunc("\10\200\0\0\0\177\377\377\377" tObj,tVoid),tFunc(tStr tObj,tVoid)), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_WriteableDatabase_replace_document_defined */

#ifdef f_Xapian_WriteableDatabase_delete_document_defined

#ifdef Xapian_WriteableDatabase_f_Xapian_WriteableDatabase_delete_document_fun_num_used
  Xapian_WriteableDatabase_f_Xapian_WriteableDatabase_delete_document_fun_num =
#endif /* Xapian_WriteableDatabase_f_Xapian_WriteableDatabase_delete_document_fun_num_used */
#line 4305 "xapian.ccmod"
    ADD_FUNCTION2("delete_document", f_Xapian_WriteableDatabase_delete_document, tOr(tFunc(tStr,tVoid),tFunc("\10\200\0\0\0\177\377\377\377",tVoid)), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_WriteableDatabase_delete_document_defined */

#ifdef f_Xapian_WriteableDatabase_begin_transaction_defined

#ifdef f_Xapian_WriteableDatabase_begin_transaction_fun_num_used
  f_Xapian_WriteableDatabase_begin_transaction_fun_num =
#endif /* f_Xapian_WriteableDatabase_begin_transaction_fun_num_used */
#line 4337 "xapian.ccmod"
    ADD_FUNCTION2("begin_transaction", f_Xapian_WriteableDatabase_begin_transaction, tFunc("\10\200\0\0\0\177\377\377\377",tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_WriteableDatabase_begin_transaction_defined */

#ifdef f_Xapian_WriteableDatabase_commit_transaction_defined

#ifdef f_Xapian_WriteableDatabase_commit_transaction_fun_num_used
  f_Xapian_WriteableDatabase_commit_transaction_fun_num =
#endif /* f_Xapian_WriteableDatabase_commit_transaction_fun_num_used */
#line 4365 "xapian.ccmod"
    ADD_FUNCTION2("commit_transaction", f_Xapian_WriteableDatabase_commit_transaction, tFunc(tNone,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_WriteableDatabase_commit_transaction_defined */

#ifdef f_Xapian_WriteableDatabase_cancel_transaction_defined

#ifdef f_Xapian_WriteableDatabase_cancel_transaction_fun_num_used
  f_Xapian_WriteableDatabase_cancel_transaction_fun_num =
#endif /* f_Xapian_WriteableDatabase_cancel_transaction_fun_num_used */
#line 4400 "xapian.ccmod"
    ADD_FUNCTION2("cancel_transaction", f_Xapian_WriteableDatabase_cancel_transaction, tFunc(tNone,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_WriteableDatabase_cancel_transaction_defined */

#ifdef f_Xapian_WriteableDatabase_get_description_defined

#ifdef f_Xapian_WriteableDatabase_get_description_fun_num_used
  f_Xapian_WriteableDatabase_get_description_fun_num =
#endif /* f_Xapian_WriteableDatabase_get_description_fun_num_used */
#line 4436 "xapian.ccmod"
    ADD_FUNCTION2("get_description", f_Xapian_WriteableDatabase_get_description, tFunc(tNone,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_WriteableDatabase_get_description_defined */

#ifdef f_Xapian_WriteableDatabase_cq__sprintf_defined

#ifdef f_Xapian_WriteableDatabase_cq__sprintf_fun_num_used
  f_Xapian_WriteableDatabase_cq__sprintf_fun_num =
#endif /* f_Xapian_WriteableDatabase_cq__sprintf_fun_num_used */
#line 4446 "xapian.ccmod"
    ADD_FUNCTION2("_sprintf", f_Xapian_WriteableDatabase_cq__sprintf, tFunc("\10\200\0\0\0\177\377\377\377" tMapping,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_WriteableDatabase_cq__sprintf_defined */
#line 4043 "xapian.ccmod"
  Xapian_WriteableDatabase_program=end_program();
#line 4043 "xapian.ccmod"
#ifdef Xapian_WriteableDatabase_program_fun_num_used
Xapian_WriteableDatabase_program_fun_num=
#endif
 add_program_constant("WriteableDatabase",Xapian_WriteableDatabase_program,0);

#endif /* class_Xapian_WriteableDatabase_defined */

#ifdef class_Xapian_QueryParser_defined

#ifdef PROG_XAPIAN_QUERYPARSER_ID
#line 4474 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_QUERYPARSER);
#else
#line 4474 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_QUERYPARSER_ID */
#line 4474 "xapian.ccmod"
  Xapian_QueryParser_program = Pike_compiler->new_program;

#ifndef tObjImpl_XAPIAN_QUERYPARSER

#undef tObjIs_XAPIAN_QUERYPARSER
#define tObjIs_XAPIAN_QUERYPARSER "\3\1\177\0\0\31"

#undef tObjImpl_XAPIAN_QUERYPARSER
#define tObjImpl_XAPIAN_QUERYPARSER "\3\0\177\0\0\31"

#endif /* tObjImpl_XAPIAN_QUERYPARSER */

#ifdef THIS_XAPIAN_QUERYPARSER
  Xapian_QueryParser_storage_offset = ADD_STORAGE(struct Xapian_QueryParser_struct);
#endif /* THIS_XAPIAN_QUERYPARSER */

#ifdef extra_Xapian_QueryParser_defined
#line 4767 "xapian.ccmod"
{
QueryParser::feature_flag flag;
int sflag;

flag = QueryParser::FLAG_BOOLEAN;
add_integer_constant("FLAG_BOOLEAN", flag, 0);
flag = QueryParser::FLAG_PHRASE;
add_integer_constant("FLAG_PHRASE", flag, 0);
flag = QueryParser::FLAG_LOVEHATE;
add_integer_constant("FLAG_LOVEHATE", flag, 0);
flag = QueryParser::FLAG_BOOLEAN_ANY_CASE;
add_integer_constant("FLAG_BOOLEAN_ANY_CASE", flag, 0);
flag = QueryParser::FLAG_WILDCARD;
add_integer_constant("FLAG_WILDCARD", flag, 0);
flag = QueryParser::FLAG_SPELLING_CORRECTION;
add_integer_constant("FLAG_SPELLING_CORRECTION", flag, 0);

flag = QueryParser::FLAG_PURE_NOT;
add_integer_constant("FLAG_PURE_NOT", flag, 0);
flag = QueryParser::FLAG_PARTIAL;
add_integer_constant("FLAG_PARTIAL", flag, 0);
flag = QueryParser::FLAG_SYNONYM;
add_integer_constant("FLAG_SYNONYM", flag, 0);
flag = QueryParser::FLAG_AUTO_SYNONYMS;
add_integer_constant("FLAG_AUTO_SYNONYMS", flag, 0);

/*
  flag = QueryParser::FLAG_MULTIWORD_SYNONYMS;
  add_integer_constant("FLAG_MULTIWORD_SYNONYMS", flag, 0);
*/

sflag = QueryParser::STEM_NONE;
add_integer_constant("STEM_NONE", sflag, 0);
sflag = QueryParser::STEM_SOME;
add_integer_constant("STEM_SOME", sflag, 0);
sflag = QueryParser::STEM_ALL;
add_integer_constant("STEM_ALL", sflag, 0);
}


#endif /* extra_Xapian_QueryParser_defined */

#ifdef Xapian_QueryParser_event_handler_defined
  pike_set_prog_event_callback(Xapian_QueryParser_event_handler);

#ifndef Xapian_QueryParser_gc_live_obj
  Pike_compiler->new_program->flags &= ~PROGRAM_LIVE_OBJ;

#endif /* Xapian_QueryParser_gc_live_obj */

#endif /* Xapian_QueryParser_event_handler_defined */

#ifdef f_Xapian_QueryParser_create_defined

#ifdef f_Xapian_QueryParser_create_fun_num_used
  f_Xapian_QueryParser_create_fun_num =
#endif /* f_Xapian_QueryParser_create_fun_num_used */
#line 4484 "xapian.ccmod"
    ADD_FUNCTION2("create", f_Xapian_QueryParser_create, tFunc(tNone,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_QueryParser_create_defined */

#ifdef f_Xapian_QueryParser_get_corrected_query_string_defined

#ifdef f_Xapian_QueryParser_get_corrected_query_string_fun_num_used
  f_Xapian_QueryParser_get_corrected_query_string_fun_num =
#endif /* f_Xapian_QueryParser_get_corrected_query_string_fun_num_used */
#line 4494 "xapian.ccmod"
    ADD_FUNCTION2("get_corrected_query_string", f_Xapian_QueryParser_get_corrected_query_string, tFunc(tNone,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_QueryParser_get_corrected_query_string_defined */

#ifdef f_Xapian_QueryParser_set_stemmer_defined

#ifdef f_Xapian_QueryParser_set_stemmer_fun_num_used
  f_Xapian_QueryParser_set_stemmer_fun_num =
#endif /* f_Xapian_QueryParser_set_stemmer_fun_num_used */
#line 4515 "xapian.ccmod"
    ADD_FUNCTION2("set_stemmer", f_Xapian_QueryParser_set_stemmer, tFunc(tObj,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_QueryParser_set_stemmer_defined */

#ifdef f_Xapian_QueryParser_set_stopper_defined

#ifdef f_Xapian_QueryParser_set_stopper_fun_num_used
  f_Xapian_QueryParser_set_stopper_fun_num =
#endif /* f_Xapian_QueryParser_set_stopper_fun_num_used */
#line 4536 "xapian.ccmod"
    ADD_FUNCTION2("set_stopper", f_Xapian_QueryParser_set_stopper, tFunc(tObj,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_QueryParser_set_stopper_defined */

#ifdef f_Xapian_QueryParser_set_database_defined

#ifdef f_Xapian_QueryParser_set_database_fun_num_used
  f_Xapian_QueryParser_set_database_fun_num =
#endif /* f_Xapian_QueryParser_set_database_fun_num_used */
#line 4557 "xapian.ccmod"
    ADD_FUNCTION2("set_database", f_Xapian_QueryParser_set_database, tFunc(tObj,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_QueryParser_set_database_defined */

#ifdef f_Xapian_QueryParser_set_default_op_defined

#ifdef f_Xapian_QueryParser_set_default_op_fun_num_used
  f_Xapian_QueryParser_set_default_op_fun_num =
#endif /* f_Xapian_QueryParser_set_default_op_fun_num_used */
#line 4578 "xapian.ccmod"
    ADD_FUNCTION2("set_default_op", f_Xapian_QueryParser_set_default_op, tFunc("\10\200\0\0\0\177\377\377\377",tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_QueryParser_set_default_op_defined */

#ifdef f_Xapian_QueryParser_set_stemming_strategy_defined

#ifdef f_Xapian_QueryParser_set_stemming_strategy_fun_num_used
  f_Xapian_QueryParser_set_stemming_strategy_fun_num =
#endif /* f_Xapian_QueryParser_set_stemming_strategy_fun_num_used */
#line 4609 "xapian.ccmod"
    ADD_FUNCTION2("set_stemming_strategy", f_Xapian_QueryParser_set_stemming_strategy, tFunc("\10\200\0\0\0\177\377\377\377",tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_QueryParser_set_stemming_strategy_defined */

#ifdef f_Xapian_QueryParser_parse_query_defined

#ifdef f_Xapian_QueryParser_parse_query_fun_num_used
  f_Xapian_QueryParser_parse_query_fun_num =
#endif /* f_Xapian_QueryParser_parse_query_fun_num_used */
#line 4635 "xapian.ccmod"
    ADD_FUNCTION2("parse_query", f_Xapian_QueryParser_parse_query, tFunc(tStr "\10\200\0\0\0\177\377\377\377",tObj), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_QueryParser_parse_query_defined */

#ifdef f_Xapian_QueryParser_add_prefix_defined

#ifdef f_Xapian_QueryParser_add_prefix_fun_num_used
  f_Xapian_QueryParser_add_prefix_fun_num =
#endif /* f_Xapian_QueryParser_add_prefix_fun_num_used */
#line 4672 "xapian.ccmod"
    ADD_FUNCTION2("add_prefix", f_Xapian_QueryParser_add_prefix, tFunc(tStr tStr,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_QueryParser_add_prefix_defined */

#ifdef f_Xapian_QueryParser_add_boolean_prefix_defined

#ifdef f_Xapian_QueryParser_add_boolean_prefix_fun_num_used
  f_Xapian_QueryParser_add_boolean_prefix_fun_num =
#endif /* f_Xapian_QueryParser_add_boolean_prefix_fun_num_used */
#line 4696 "xapian.ccmod"
    ADD_FUNCTION2("add_boolean_prefix", f_Xapian_QueryParser_add_boolean_prefix, tFunc(tStr tStr,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_QueryParser_add_boolean_prefix_defined */

#ifdef f_Xapian_QueryParser_get_description_defined

#ifdef f_Xapian_QueryParser_get_description_fun_num_used
  f_Xapian_QueryParser_get_description_fun_num =
#endif /* f_Xapian_QueryParser_get_description_fun_num_used */
#line 4716 "xapian.ccmod"
    ADD_FUNCTION2("get_description", f_Xapian_QueryParser_get_description, tFunc(tNone,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_QueryParser_get_description_defined */

#ifdef f_Xapian_QueryParser_cq__sprintf_defined

#ifdef f_Xapian_QueryParser_cq__sprintf_fun_num_used
  f_Xapian_QueryParser_cq__sprintf_fun_num =
#endif /* f_Xapian_QueryParser_cq__sprintf_fun_num_used */
#line 4726 "xapian.ccmod"
    ADD_FUNCTION2("_sprintf", f_Xapian_QueryParser_cq__sprintf, tFunc("\10\200\0\0\0\177\377\377\377" tMapping,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_QueryParser_cq__sprintf_defined */
#line 4474 "xapian.ccmod"
  Xapian_QueryParser_program=end_program();
#line 4474 "xapian.ccmod"
#ifdef Xapian_QueryParser_program_fun_num_used
Xapian_QueryParser_program_fun_num=
#endif
 add_program_constant("QueryParser",Xapian_QueryParser_program,0);

#endif /* class_Xapian_QueryParser_defined */

#ifdef class_Xapian_Enquire_defined

#ifdef PROG_XAPIAN_ENQUIRE_ID
#line 4815 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_ENQUIRE);
#else
#line 4815 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_ENQUIRE_ID */
#line 4815 "xapian.ccmod"
  Xapian_Enquire_program = Pike_compiler->new_program;

#ifndef tObjImpl_XAPIAN_ENQUIRE

#undef tObjIs_XAPIAN_ENQUIRE
#define tObjIs_XAPIAN_ENQUIRE "\3\1\177\0\0\32"

#undef tObjImpl_XAPIAN_ENQUIRE
#define tObjImpl_XAPIAN_ENQUIRE "\3\0\177\0\0\32"

#endif /* tObjImpl_XAPIAN_ENQUIRE */

#ifdef THIS_XAPIAN_ENQUIRE
  Xapian_Enquire_storage_offset = ADD_STORAGE(struct Xapian_Enquire_struct);
#endif /* THIS_XAPIAN_ENQUIRE */

#ifdef extra_Xapian_Enquire_defined
#line 5445 "xapian.ccmod"
{
add_integer_constant("ASCENDING", Enquire::ASCENDING, 0);
add_integer_constant("DESCENDING", Enquire::DESCENDING, 0);
add_integer_constant("DONT_CARE", Enquire::DONT_CARE, 0);
}


#endif /* extra_Xapian_Enquire_defined */

#ifdef Xapian_Enquire_event_handler_defined
  pike_set_prog_event_callback(Xapian_Enquire_event_handler);

#ifndef Xapian_Enquire_gc_live_obj
  Pike_compiler->new_program->flags &= ~PROGRAM_LIVE_OBJ;

#endif /* Xapian_Enquire_gc_live_obj */

#endif /* Xapian_Enquire_event_handler_defined */

#ifdef f_Xapian_Enquire_create_defined

#ifdef f_Xapian_Enquire_create_fun_num_used
  f_Xapian_Enquire_create_fun_num =
#endif /* f_Xapian_Enquire_create_fun_num_used */
#line 4830 "xapian.ccmod"
    ADD_FUNCTION2("create", f_Xapian_Enquire_create, tFunc(tObj,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Enquire_create_defined */

#ifdef f_Xapian_Enquire_set_weighting_scheme_defined

#ifdef f_Xapian_Enquire_set_weighting_scheme_fun_num_used
  f_Xapian_Enquire_set_weighting_scheme_fun_num =
#endif /* f_Xapian_Enquire_set_weighting_scheme_fun_num_used */
#line 4859 "xapian.ccmod"
    ADD_FUNCTION2("set_weighting_scheme", f_Xapian_Enquire_set_weighting_scheme, tFunc(tObj,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Enquire_set_weighting_scheme_defined */

#ifdef f_Xapian_Enquire_set_query_defined

#ifdef f_Xapian_Enquire_set_query_fun_num_used
  f_Xapian_Enquire_set_query_fun_num =
#endif /* f_Xapian_Enquire_set_query_fun_num_used */
#line 4880 "xapian.ccmod"
    ADD_FUNCTION2("set_query", f_Xapian_Enquire_set_query, tFunc(tObj "\10\200\0\0\0\177\377\377\377",tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Enquire_set_query_defined */

#ifdef f_Xapian_Enquire_set_cutoff_defined

#ifdef f_Xapian_Enquire_set_cutoff_fun_num_used
  f_Xapian_Enquire_set_cutoff_fun_num =
#endif /* f_Xapian_Enquire_set_cutoff_fun_num_used */
#line 4904 "xapian.ccmod"
    ADD_FUNCTION2("set_cutoff", f_Xapian_Enquire_set_cutoff, tFunc("\10\200\0\0\0\177\377\377\377" tFloat,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Enquire_set_cutoff_defined */

#ifdef f_Xapian_Enquire_set_docid_order_defined

#ifdef f_Xapian_Enquire_set_docid_order_fun_num_used
  f_Xapian_Enquire_set_docid_order_fun_num =
#endif /* f_Xapian_Enquire_set_docid_order_fun_num_used */
#line 4922 "xapian.ccmod"
    ADD_FUNCTION2("set_docid_order", f_Xapian_Enquire_set_docid_order, tFunc("\10\200\0\0\0\177\377\377\377",tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Enquire_set_docid_order_defined */

#ifdef f_Xapian_Enquire_set_collapse_key_defined

#ifdef f_Xapian_Enquire_set_collapse_key_fun_num_used
  f_Xapian_Enquire_set_collapse_key_fun_num =
#endif /* f_Xapian_Enquire_set_collapse_key_fun_num_used */
#line 4940 "xapian.ccmod"
    ADD_FUNCTION2("set_collapse_key", f_Xapian_Enquire_set_collapse_key, tFunc("\10\200\0\0\0\177\377\377\377",tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Enquire_set_collapse_key_defined */

#ifdef f_Xapian_Enquire_set_sort_by_relevance_then_value_defined

#ifdef f_Xapian_Enquire_set_sort_by_relevance_then_value_fun_num_used
  f_Xapian_Enquire_set_sort_by_relevance_then_value_fun_num =
#endif /* f_Xapian_Enquire_set_sort_by_relevance_then_value_fun_num_used */
#line 4961 "xapian.ccmod"
    ADD_FUNCTION2("set_sort_by_relevance_then_value", f_Xapian_Enquire_set_sort_by_relevance_then_value, tFunc("\10\200\0\0\0\177\377\377\377" "\10\200\0\0\0\177\377\377\377",tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Enquire_set_sort_by_relevance_then_value_defined */

#ifdef f_Xapian_Enquire_set_sort_by_value_then_relevance_defined

#ifdef f_Xapian_Enquire_set_sort_by_value_then_relevance_fun_num_used
  f_Xapian_Enquire_set_sort_by_value_then_relevance_fun_num =
#endif /* f_Xapian_Enquire_set_sort_by_value_then_relevance_fun_num_used */
#line 4982 "xapian.ccmod"
    ADD_FUNCTION2("set_sort_by_value_then_relevance", f_Xapian_Enquire_set_sort_by_value_then_relevance, tFunc("\10\200\0\0\0\177\377\377\377" "\10\200\0\0\0\177\377\377\377",tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Enquire_set_sort_by_value_then_relevance_defined */

#ifdef f_Xapian_Enquire_set_sort_value_defined

#ifdef f_Xapian_Enquire_set_sort_value_fun_num_used
  f_Xapian_Enquire_set_sort_value_fun_num =
#endif /* f_Xapian_Enquire_set_sort_value_fun_num_used */
#line 5003 "xapian.ccmod"
    ADD_FUNCTION2("set_sort_value", f_Xapian_Enquire_set_sort_value, tFunc("\10\200\0\0\0\177\377\377\377" "\10\200\0\0\0\177\377\377\377",tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Enquire_set_sort_value_defined */

#ifdef f_Xapian_Enquire_set_sort_by_relevence_defined

#ifdef f_Xapian_Enquire_set_sort_by_relevence_fun_num_used
  f_Xapian_Enquire_set_sort_by_relevence_fun_num =
#endif /* f_Xapian_Enquire_set_sort_by_relevence_fun_num_used */
#line 5018 "xapian.ccmod"
    ADD_FUNCTION2("set_sort_by_relevence", f_Xapian_Enquire_set_sort_by_relevence, tFunc(tNone,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Enquire_set_sort_by_relevence_defined */

#ifdef f_Xapian_Enquire_get_query_defined

#ifdef f_Xapian_Enquire_get_query_fun_num_used
  f_Xapian_Enquire_get_query_fun_num =
#endif /* f_Xapian_Enquire_get_query_fun_num_used */
#line 5035 "xapian.ccmod"
    ADD_FUNCTION2("get_query", f_Xapian_Enquire_get_query, tFunc(tNone,tObj), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Enquire_get_query_defined */

#ifdef f_Xapian_Enquire_get_mset_defined

#ifdef Xapian_Enquire_f_Xapian_Enquire_get_mset_fun_num_used
  Xapian_Enquire_f_Xapian_Enquire_get_mset_fun_num =
#endif /* Xapian_Enquire_f_Xapian_Enquire_get_mset_fun_num_used */
#line 5158 "xapian.ccmod"
    ADD_FUNCTION2("get_mset", f_Xapian_Enquire_get_mset, tOr3(tFunc("\10\200\0\0\0\177\377\377\377" "\10\200\0\0\0\177\377\377\377" tObj,tObj),tFunc("\10\200\0\0\0\177\377\377\377" "\10\200\0\0\0\177\377\377\377" tObj tFuncV(tNone,tMix,tAny),tObj),tFunc("\10\200\0\0\0\177\377\377\377" "\10\200\0\0\0\177\377\377\377" "\10\200\0\0\0\177\377\377\377",tObj)), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Enquire_get_mset_defined */

#ifdef f_Xapian_Enquire_get_eset_defined

#ifdef Xapian_Enquire_f_Xapian_Enquire_get_eset_fun_num_used
  Xapian_Enquire_f_Xapian_Enquire_get_eset_fun_num =
#endif /* Xapian_Enquire_f_Xapian_Enquire_get_eset_fun_num_used */
#line 5327 "xapian.ccmod"
    ADD_FUNCTION2("get_eset", f_Xapian_Enquire_get_eset, tOr4(tFunc("\10\200\0\0\0\177\377\377\377" tObj,tObj),tFunc("\10\200\0\0\0\177\377\377\377" tObj tFuncV(tNone,tMix,tAny),tObj),tFunc("\10\200\0\0\0\177\377\377\377" tObj "\10\200\0\0\0\177\377\377\377" tFloat tFuncV(tNone,tMix,tAny),tObj),tFunc("\10\200\0\0\0\177\377\377\377" tObj "\10\200\0\0\0\177\377\377\377" tFloat,tObj)), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Enquire_get_eset_defined */

#ifdef f_Xapian_Enquire_get_matching_terms_defined

#ifdef f_Xapian_Enquire_get_matching_terms_fun_num_used
  f_Xapian_Enquire_get_matching_terms_fun_num =
#endif /* f_Xapian_Enquire_get_matching_terms_fun_num_used */
#line 5363 "xapian.ccmod"
    ADD_FUNCTION2("get_matching_terms", f_Xapian_Enquire_get_matching_terms, tFunc("\10\200\0\0\0\177\377\377\377",tObj), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Enquire_get_matching_terms_defined */

#ifdef f_Xapian_Enquire_get_description_defined

#ifdef f_Xapian_Enquire_get_description_fun_num_used
  f_Xapian_Enquire_get_description_fun_num =
#endif /* f_Xapian_Enquire_get_description_fun_num_used */
#line 5393 "xapian.ccmod"
    ADD_FUNCTION2("get_description", f_Xapian_Enquire_get_description, tFunc(tNone,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Enquire_get_description_defined */

#ifdef f_Xapian_Enquire_cq__sprintf_defined

#ifdef f_Xapian_Enquire_cq__sprintf_fun_num_used
  f_Xapian_Enquire_cq__sprintf_fun_num =
#endif /* f_Xapian_Enquire_cq__sprintf_fun_num_used */
#line 5403 "xapian.ccmod"
    ADD_FUNCTION2("_sprintf", f_Xapian_Enquire_cq__sprintf, tFunc("\10\200\0\0\0\177\377\377\377" tMapping,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_Enquire_cq__sprintf_defined */
#line 4815 "xapian.ccmod"
  Xapian_Enquire_program=end_program();
#line 4815 "xapian.ccmod"
#ifdef Xapian_Enquire_program_fun_num_used
Xapian_Enquire_program_fun_num=
#endif
 add_program_constant("Enquire",Xapian_Enquire_program,0);

#endif /* class_Xapian_Enquire_defined */

#ifdef extra_Xapian_defined
#line 5461 "xapian.ccmod"
{
/*! @decl constant DB_CREATE_OR_OPEN 
 *! @decl constant DB_CREATE
 *! @decl constant DB_CREATE_OR_OVERWRITE
 *! @decl constant DB_OPEN
 *! @decl constant BAD_VALUENO
 */
add_integer_constant("DB_CREATE_OR_OPEN", DB_CREATE_OR_OPEN, 0);
add_integer_constant("DB_CREATE", DB_CREATE, 0);
add_integer_constant("DB_CREATE_OR_OVERWRITE", DB_CREATE_OR_OVERWRITE, 0);
add_integer_constant("DB_OPEN", DB_OPEN, 0);
add_integer_constant("BAD_VALUENO", BAD_VALUENO, 0);
}


#endif /* extra_Xapian_defined */

#ifdef class_Xapian_TermGenerator_defined

#ifdef PROG_XAPIAN_TERMGENERATOR_ID
  START_NEW_PROGRAM_ID(XAPIAN_TERMGENERATOR);
#else
#line 5481 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_TERMGENERATOR_ID */
#line 5481 "xapian.ccmod"
  Xapian_TermGenerator_program = Pike_compiler->new_program;

#ifndef tObjImpl_XAPIAN_TERMGENERATOR

#undef tObjIs_XAPIAN_TERMGENERATOR
#define tObjIs_XAPIAN_TERMGENERATOR "\3\1\177\0\0\33"

#undef tObjImpl_XAPIAN_TERMGENERATOR
#define tObjImpl_XAPIAN_TERMGENERATOR "\3\0\177\0\0\33"

#endif /* tObjImpl_XAPIAN_TERMGENERATOR */

#ifdef THIS_XAPIAN_TERMGENERATOR
  Xapian_TermGenerator_storage_offset = ADD_STORAGE(struct Xapian_TermGenerator_struct);
#endif /* THIS_XAPIAN_TERMGENERATOR */

#ifdef extra_Xapian_TermGenerator_defined
#line 5796 "xapian.ccmod"
{
/*! @decl constant OP_AND
 *! Return iff both subqueries are satisfied.
 */
add_integer_constant("FLAG_SPELLING", TermGenerator::FLAG_SPELLING, 0);

}


#endif /* extra_Xapian_TermGenerator_defined */

#ifdef Xapian_TermGenerator_event_handler_defined
  pike_set_prog_event_callback(Xapian_TermGenerator_event_handler);

#ifndef Xapian_TermGenerator_gc_live_obj
  Pike_compiler->new_program->flags &= ~PROGRAM_LIVE_OBJ;

#endif /* Xapian_TermGenerator_gc_live_obj */

#endif /* Xapian_TermGenerator_event_handler_defined */

#ifdef f_Xapian_TermGenerator_create_defined

#ifdef f_Xapian_TermGenerator_create_fun_num_used
  f_Xapian_TermGenerator_create_fun_num =
#endif /* f_Xapian_TermGenerator_create_fun_num_used */
#line 5485 "xapian.ccmod"
    ADD_FUNCTION2("create", f_Xapian_TermGenerator_create, tFunc(tNone,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_TermGenerator_create_defined */

#ifdef f_Xapian_TermGenerator_set_flags_defined

#ifdef f_Xapian_TermGenerator_set_flags_fun_num_used
  f_Xapian_TermGenerator_set_flags_fun_num =
#endif /* f_Xapian_TermGenerator_set_flags_fun_num_used */
    ADD_FUNCTION2("set_flags", f_Xapian_TermGenerator_set_flags, tFunc("\10\200\0\0\0\177\377\377\377" "\10\200\0\0\0\177\377\377\377","\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_TermGenerator_set_flags_defined */

#ifdef f_Xapian_TermGenerator_set_document_defined

#ifdef f_Xapian_TermGenerator_set_document_fun_num_used
  f_Xapian_TermGenerator_set_document_fun_num =
#endif /* f_Xapian_TermGenerator_set_document_fun_num_used */
#line 5521 "xapian.ccmod"
    ADD_FUNCTION2("set_document", f_Xapian_TermGenerator_set_document, tFunc(tObj,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_TermGenerator_set_document_defined */

#ifdef f_Xapian_TermGenerator_get_document_defined

#ifdef f_Xapian_TermGenerator_get_document_fun_num_used
  f_Xapian_TermGenerator_get_document_fun_num =
#endif /* f_Xapian_TermGenerator_get_document_fun_num_used */
#line 5558 "xapian.ccmod"
    ADD_FUNCTION2("get_document", f_Xapian_TermGenerator_get_document, tFunc(tNone,tObj), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_TermGenerator_get_document_defined */

#ifdef f_Xapian_TermGenerator_set_stemmer_defined

#ifdef f_Xapian_TermGenerator_set_stemmer_fun_num_used
  f_Xapian_TermGenerator_set_stemmer_fun_num =
#endif /* f_Xapian_TermGenerator_set_stemmer_fun_num_used */
#line 5591 "xapian.ccmod"
    ADD_FUNCTION2("set_stemmer", f_Xapian_TermGenerator_set_stemmer, tFunc(tObj,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_TermGenerator_set_stemmer_defined */

#ifdef f_Xapian_TermGenerator_set_stopper_defined

#ifdef f_Xapian_TermGenerator_set_stopper_fun_num_used
  f_Xapian_TermGenerator_set_stopper_fun_num =
#endif /* f_Xapian_TermGenerator_set_stopper_fun_num_used */
#line 5612 "xapian.ccmod"
    ADD_FUNCTION2("set_stopper", f_Xapian_TermGenerator_set_stopper, tFunc(tObj,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_TermGenerator_set_stopper_defined */

#ifdef f_Xapian_TermGenerator_set_database_defined

#ifdef f_Xapian_TermGenerator_set_database_fun_num_used
  f_Xapian_TermGenerator_set_database_fun_num =
#endif /* f_Xapian_TermGenerator_set_database_fun_num_used */
#line 5633 "xapian.ccmod"
    ADD_FUNCTION2("set_database", f_Xapian_TermGenerator_set_database, tFunc(tObj,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_TermGenerator_set_database_defined */

#ifdef f_Xapian_TermGenerator_set_termpos_defined

#ifdef f_Xapian_TermGenerator_set_termpos_fun_num_used
  f_Xapian_TermGenerator_set_termpos_fun_num =
#endif /* f_Xapian_TermGenerator_set_termpos_fun_num_used */
#line 5651 "xapian.ccmod"
    ADD_FUNCTION2("set_termpos", f_Xapian_TermGenerator_set_termpos, tFunc("\10\200\0\0\0\177\377\377\377",tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_TermGenerator_set_termpos_defined */

#ifdef f_Xapian_TermGenerator_get_termpos_defined

#ifdef f_Xapian_TermGenerator_get_termpos_fun_num_used
  f_Xapian_TermGenerator_get_termpos_fun_num =
#endif /* f_Xapian_TermGenerator_get_termpos_fun_num_used */
#line 5666 "xapian.ccmod"
    ADD_FUNCTION2("get_termpos", f_Xapian_TermGenerator_get_termpos, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_TermGenerator_get_termpos_defined */

#ifdef f_Xapian_TermGenerator_index_text_defined

#ifdef f_Xapian_TermGenerator_index_text_fun_num_used
  f_Xapian_TermGenerator_index_text_fun_num =
#endif /* f_Xapian_TermGenerator_index_text_fun_num_used */
#line 5685 "xapian.ccmod"
    ADD_FUNCTION2("index_text", f_Xapian_TermGenerator_index_text, tFunc(tStr "\10\200\0\0\0\177\377\377\377" tStr,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_TermGenerator_index_text_defined */

#ifdef f_Xapian_TermGenerator_index_text_without_positions_defined

#ifdef f_Xapian_TermGenerator_index_text_without_positions_fun_num_used
  f_Xapian_TermGenerator_index_text_without_positions_fun_num =
#endif /* f_Xapian_TermGenerator_index_text_without_positions_fun_num_used */
#line 5708 "xapian.ccmod"
    ADD_FUNCTION2("index_text_without_positions", f_Xapian_TermGenerator_index_text_without_positions, tFunc(tStr "\10\200\0\0\0\177\377\377\377" tStr,tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_TermGenerator_index_text_without_positions_defined */

#ifdef f_Xapian_TermGenerator_get_description_defined

#ifdef f_Xapian_TermGenerator_get_description_fun_num_used
  f_Xapian_TermGenerator_get_description_fun_num =
#endif /* f_Xapian_TermGenerator_get_description_fun_num_used */
#line 5734 "xapian.ccmod"
    ADD_FUNCTION2("get_description", f_Xapian_TermGenerator_get_description, tFunc(tNone,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_TermGenerator_get_description_defined */

#ifdef f_Xapian_TermGenerator_cq__sprintf_defined

#ifdef f_Xapian_TermGenerator_cq__sprintf_fun_num_used
  f_Xapian_TermGenerator_cq__sprintf_fun_num =
#endif /* f_Xapian_TermGenerator_cq__sprintf_fun_num_used */
#line 5744 "xapian.ccmod"
    ADD_FUNCTION2("_sprintf", f_Xapian_TermGenerator_cq__sprintf, tFunc("\10\200\0\0\0\177\377\377\377" tMapping,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_TermGenerator_cq__sprintf_defined */

#ifdef f_Xapian_TermGenerator_destroy_defined

#ifdef f_Xapian_TermGenerator_destroy_fun_num_used
  f_Xapian_TermGenerator_destroy_fun_num =
#endif /* f_Xapian_TermGenerator_destroy_fun_num_used */
#line 5781 "xapian.ccmod"
    ADD_FUNCTION2("destroy", f_Xapian_TermGenerator_destroy, tFunc(tOr("\10\200\0\0\0\177\377\377\377",tVoid),tVoid), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_TermGenerator_destroy_defined */
#line 5481 "xapian.ccmod"
  Xapian_TermGenerator_program=end_program();
#line 5481 "xapian.ccmod"
#ifdef Xapian_TermGenerator_program_fun_num_used
Xapian_TermGenerator_program_fun_num=
#endif
 add_program_constant("TermGenerator",Xapian_TermGenerator_program,0);

#endif /* class_Xapian_TermGenerator_defined */

#ifdef Xapian_event_handler_defined_2
  pike_set_prog_event_callback(Xapian_event_handler);

#ifndef Xapian_gc_live_obj
  Pike_compiler->new_program->flags &= ~PROGRAM_LIVE_OBJ;

#endif /* Xapian_gc_live_obj */

#endif /* Xapian_event_handler_defined_2 */

#ifdef f_Xapian_sortable_serialise_defined

#ifdef f_Xapian_sortable_serialise_fun_num_used
  f_Xapian_sortable_serialise_fun_num =
#endif /* f_Xapian_sortable_serialise_fun_num_used */
#line 153 "xapian.ccmod"
    ADD_FUNCTION2("sortable_serialise", f_Xapian_sortable_serialise, tFunc(tFloat,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_sortable_serialise_defined */

#ifdef f_Xapian_sortable_unserialise_defined

#ifdef f_Xapian_sortable_unserialise_fun_num_used
  f_Xapian_sortable_unserialise_fun_num =
#endif /* f_Xapian_sortable_unserialise_fun_num_used */
#line 165 "xapian.ccmod"
    ADD_FUNCTION2("sortable_unserialise", f_Xapian_sortable_unserialise, tFunc(tStr,tFloat), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_sortable_unserialise_defined */

#ifdef f_Xapian_minor_version_defined

#ifdef f_Xapian_minor_version_fun_num_used
  f_Xapian_minor_version_fun_num =
#endif /* f_Xapian_minor_version_fun_num_used */
#line 175 "xapian.ccmod"
    ADD_FUNCTION2("minor_version", f_Xapian_minor_version, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_minor_version_defined */

#ifdef f_Xapian_major_version_defined

#ifdef f_Xapian_major_version_fun_num_used
  f_Xapian_major_version_fun_num =
#endif /* f_Xapian_major_version_fun_num_used */
#line 182 "xapian.ccmod"
    ADD_FUNCTION2("major_version", f_Xapian_major_version, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_major_version_defined */

#ifdef f_Xapian_revision_defined

#ifdef f_Xapian_revision_fun_num_used
  f_Xapian_revision_fun_num =
#endif /* f_Xapian_revision_fun_num_used */
#line 189 "xapian.ccmod"
    ADD_FUNCTION2("revision", f_Xapian_revision, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_revision_defined */

#ifdef f_Xapian_version_string_defined

#ifdef f_Xapian_version_string_fun_num_used
  f_Xapian_version_string_fun_num =
#endif /* f_Xapian_version_string_fun_num_used */
#line 199 "xapian.ccmod"
    ADD_FUNCTION2("version_string", f_Xapian_version_string, tFunc(tNone,tStr), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);

#endif /* f_Xapian_version_string_defined */

#ifdef CMOD_MAP_PROGRAM_IDS_DEFINED
set_program_id_to_id( 0 );
#endif /* CMOD_MAP_PROGRAM_IDS_DEFINED */
}
PIKE_MODULE_EXIT {

#ifdef class_Xapian_Weight_defined
  if(Xapian_Weight_program) {
#line 206 "xapian.ccmod"
    free_program(Xapian_Weight_program);
    Xapian_Weight_program=0;
  }

#endif /* class_Xapian_Weight_defined */

#ifdef class_Xapian_BM25Weight_defined
  if(Xapian_BM25Weight_program) {
#line 422 "xapian.ccmod"
    free_program(Xapian_BM25Weight_program);
    Xapian_BM25Weight_program=0;
  }

#endif /* class_Xapian_BM25Weight_defined */

#ifdef class_Xapian_BoolWeight_defined
  if(Xapian_BoolWeight_program) {
#line 445 "xapian.ccmod"
    free_program(Xapian_BoolWeight_program);
    Xapian_BoolWeight_program=0;
  }

#endif /* class_Xapian_BoolWeight_defined */

#ifdef class_Xapian_TradWeight_defined
  if(Xapian_TradWeight_program) {
#line 471 "xapian.ccmod"
    free_program(Xapian_TradWeight_program);
    Xapian_TradWeight_program=0;
  }

#endif /* class_Xapian_TradWeight_defined */

#ifdef class_Xapian_ValueRangeProcessor_defined
  if(Xapian_ValueRangeProcessor_program) {
#line 492 "xapian.ccmod"
    free_program(Xapian_ValueRangeProcessor_program);
    Xapian_ValueRangeProcessor_program=0;
  }

#endif /* class_Xapian_ValueRangeProcessor_defined */

#ifdef class_Xapian_StringValueRangeProcessor_defined
  if(Xapian_StringValueRangeProcessor_program) {
#line 570 "xapian.ccmod"
    free_program(Xapian_StringValueRangeProcessor_program);
    Xapian_StringValueRangeProcessor_program=0;
  }

#endif /* class_Xapian_StringValueRangeProcessor_defined */

#ifdef class_Xapian_NumberValueRangeProcessor_defined
  if(Xapian_NumberValueRangeProcessor_program) {
#line 599 "xapian.ccmod"
    free_program(Xapian_NumberValueRangeProcessor_program);
    Xapian_NumberValueRangeProcessor_program=0;
  }

#endif /* class_Xapian_NumberValueRangeProcessor_defined */

#ifdef class_Xapian_DateValueRangeProcessor_defined
  if(Xapian_DateValueRangeProcessor_program) {
#line 656 "xapian.ccmod"
    free_program(Xapian_DateValueRangeProcessor_program);
    Xapian_DateValueRangeProcessor_program=0;
  }

#endif /* class_Xapian_DateValueRangeProcessor_defined */

#ifdef class_Xapian_Stopper_defined
  if(Xapian_Stopper_program) {
#line 686 "xapian.ccmod"
    free_program(Xapian_Stopper_program);
    Xapian_Stopper_program=0;
  }

#endif /* class_Xapian_Stopper_defined */

#ifdef class_Xapian_SimpleStopper_defined
  if(Xapian_SimpleStopper_program) {
#line 799 "xapian.ccmod"
    free_program(Xapian_SimpleStopper_program);
    Xapian_SimpleStopper_program=0;
  }

#endif /* class_Xapian_SimpleStopper_defined */

#ifdef class_Xapian_Stem_defined
  if(Xapian_Stem_program) {
#line 852 "xapian.ccmod"
    free_program(Xapian_Stem_program);
    Xapian_Stem_program=0;
  }

#endif /* class_Xapian_Stem_defined */

#ifdef class_Xapian_Query_defined
  if(Xapian_Query_program) {
#line 1043 "xapian.ccmod"
    free_program(Xapian_Query_program);
    Xapian_Query_program=0;
  }

#endif /* class_Xapian_Query_defined */

#ifdef class_Xapian_PositionIterator_defined
  if(Xapian_PositionIterator_program) {
#line 1392 "xapian.ccmod"
    free_program(Xapian_PositionIterator_program);
    Xapian_PositionIterator_program=0;
  }

#endif /* class_Xapian_PositionIterator_defined */

#ifdef class_Xapian_ValueIterator_defined
  if(Xapian_ValueIterator_program) {
#line 1560 "xapian.ccmod"
    free_program(Xapian_ValueIterator_program);
    Xapian_ValueIterator_program=0;
  }

#endif /* class_Xapian_ValueIterator_defined */

#ifdef class_Xapian_TermIterator_defined
  if(Xapian_TermIterator_program) {
#line 1746 "xapian.ccmod"
    free_program(Xapian_TermIterator_program);
    Xapian_TermIterator_program=0;
  }

#endif /* class_Xapian_TermIterator_defined */

#ifdef class_Xapian_Document_defined
  if(Xapian_Document_program) {
#line 1971 "xapian.ccmod"
    free_program(Xapian_Document_program);
    Xapian_Document_program=0;
  }

#endif /* class_Xapian_Document_defined */

#ifdef class_Xapian_MSetIterator_defined
  if(Xapian_MSetIterator_program) {
#line 2448 "xapian.ccmod"
    free_program(Xapian_MSetIterator_program);
    Xapian_MSetIterator_program=0;
  }

#endif /* class_Xapian_MSetIterator_defined */

#ifdef class_Xapian_ESetIterator_defined
  if(Xapian_ESetIterator_program) {
#line 2627 "xapian.ccmod"
    free_program(Xapian_ESetIterator_program);
    Xapian_ESetIterator_program=0;
  }

#endif /* class_Xapian_ESetIterator_defined */

#ifdef class_Xapian_MSet_defined
  if(Xapian_MSet_program) {
#line 2767 "xapian.ccmod"
    free_program(Xapian_MSet_program);
    Xapian_MSet_program=0;
  }

#endif /* class_Xapian_MSet_defined */

#ifdef class_Xapian_RSet_defined
  if(Xapian_RSet_program) {
#line 3077 "xapian.ccmod"
    free_program(Xapian_RSet_program);
    Xapian_RSet_program=0;
  }

#endif /* class_Xapian_RSet_defined */

#ifdef class_Xapian_ESet_defined
  if(Xapian_ESet_program) {
#line 3344 "xapian.ccmod"
    free_program(Xapian_ESet_program);
    Xapian_ESet_program=0;
  }

#endif /* class_Xapian_ESet_defined */

#ifdef class_Xapian_Database_defined
  if(Xapian_Database_program) {
#line 3631 "xapian.ccmod"
    free_program(Xapian_Database_program);
    Xapian_Database_program=0;
  }

#endif /* class_Xapian_Database_defined */

#ifdef class_Xapian_WriteableDatabase_defined
  if(Xapian_WriteableDatabase_program) {
#line 4043 "xapian.ccmod"
    free_program(Xapian_WriteableDatabase_program);
    Xapian_WriteableDatabase_program=0;
  }

#endif /* class_Xapian_WriteableDatabase_defined */

#ifdef class_Xapian_QueryParser_defined
  if(Xapian_QueryParser_program) {
#line 4474 "xapian.ccmod"
    free_program(Xapian_QueryParser_program);
    Xapian_QueryParser_program=0;
  }

#endif /* class_Xapian_QueryParser_defined */

#ifdef class_Xapian_Enquire_defined
  if(Xapian_Enquire_program) {
#line 4815 "xapian.ccmod"
    free_program(Xapian_Enquire_program);
    Xapian_Enquire_program=0;
  }

#endif /* class_Xapian_Enquire_defined */

#ifdef class_Xapian_TermGenerator_defined
  if(Xapian_TermGenerator_program) {
#line 5481 "xapian.ccmod"
    free_program(Xapian_TermGenerator_program);
    Xapian_TermGenerator_program=0;
  }

#endif /* class_Xapian_TermGenerator_defined */
}


gotpike.org | Copyright © 2004 - 2019 | Pike is a trademark of Department of Computer and Information Science, Linköping University