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.10/xapian.cc

/* Generated from "xapian.ccmod" by precompile.pike running Pike v8.0 release 182
 *
 * 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.182/lib/modules/Tools.pmod/Standalone.pmod/precompile.pike"







#line 3005 "/usr/local/pike/8.0.182/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 namespace std;

#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 152 "xapian.ccmod"
FLOAT_TYPE value;
#line 152 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("sortable_serialise",args,1);
#line 152 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_FLOAT) SIMPLE_ARG_TYPE_ERROR("sortable_serialise",1,"float");
#line 152 "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 164 "xapian.ccmod"
struct pike_string * value;
#line 164 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("sortable_unserialise",args,1);
#line 164 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("sortable_unserialise",1,"string");
#line 164 "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 174 "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 181 "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 188 "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 198 "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 207 "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 209 "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 217 "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 231 "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 243 "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 253 "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 263 "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 273 "xapian.ccmod"
/*  Weight.float get_sumextra(int len) */
/*! @decl float get_sumextra(int len)
 *!
 *!  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.
 *!
 *! @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 288 "xapian.ccmod"
INT_TYPE len;
#line 288 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("get_sumextra",args,1);
#line 288 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_sumextra",1,"int");
#line 288 "xapian.ccmod"
len=Pike_sp[0-1].u.integer;
{
Weight *weight;
weight = THIS->object_data->weight;

Xapian::weight i = weight->get_sumextra((doclength)len);

push_float((FLOAT_TYPE)i);
}

}
#line 298 "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.
* !
 *! @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 315 "xapian.ccmod"
INT_TYPE wdf;
#line 315 "xapian.ccmod"
INT_TYPE len;
#line 315 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("get_sumpart",args,2);
#line 315 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_sumpart",1,"int");
#line 315 "xapian.ccmod"
wdf=Pike_sp[0-2].u.integer;
#line 315 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_sumpart",2,"int");
#line 315 "xapian.ccmod"
len=Pike_sp[1-2].u.integer;
{
Weight *weight;
weight = THIS->object_data->weight;

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

push_float((FLOAT_TYPE)i);
}


}
#line 326 "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 334 "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 344 "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 354 "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 365 "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 381 "xapian.ccmod"
struct svalue * reason;
#line 381 "xapian.ccmod"
if(args > 1) wrong_number_of_args_error("destroy",args,1);
#line 381 "xapian.ccmod"
if ((args > 0) &&
    ((TYPEOF(Pike_sp[0-args]) != PIKE_T_INT) ||
     (SUBTYPEOF(Pike_sp[0-args]) != NUMBER_UNDEFINED))) {
#line 381 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-args]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("destroy",1,"int|void");
#line 381 "xapian.ccmod"
reason=Pike_sp+0-args; dmalloc_touch_svalue(Pike_sp+0-args);
#line 381 "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 396 "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 419 "xapian.ccmod"
static int Xapian_BM25Weight_Xapian_Weight_inh_num = -1;
#line 419 "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 421 "xapian.ccmod"
FLOAT_TYPE k1;
#line 421 "xapian.ccmod"
FLOAT_TYPE k2;
#line 421 "xapian.ccmod"
FLOAT_TYPE k3;
#line 421 "xapian.ccmod"
FLOAT_TYPE b;
#line 421 "xapian.ccmod"
FLOAT_TYPE min_normlen;
#line 421 "xapian.ccmod"
if(args != 5) wrong_number_of_args_error("create",args,5);
#line 421 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-5]) != PIKE_T_FLOAT) SIMPLE_ARG_TYPE_ERROR("create",1,"float");
#line 421 "xapian.ccmod"
k1=Pike_sp[0-5].u.float_number;
#line 421 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-5]) != PIKE_T_FLOAT) SIMPLE_ARG_TYPE_ERROR("create",2,"float");
#line 421 "xapian.ccmod"
k2=Pike_sp[1-5].u.float_number;
#line 421 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-5]) != PIKE_T_FLOAT) SIMPLE_ARG_TYPE_ERROR("create",3,"float");
#line 421 "xapian.ccmod"
k3=Pike_sp[2-5].u.float_number;
#line 421 "xapian.ccmod"
if(TYPEOF(Pike_sp[3-5]) != PIKE_T_FLOAT) SIMPLE_ARG_TYPE_ERROR("create",4,"float");
#line 421 "xapian.ccmod"
b=Pike_sp[3-5].u.float_number;
#line 421 "xapian.ccmod"
if(TYPEOF(Pike_sp[4-5]) != PIKE_T_FLOAT) SIMPLE_ARG_TYPE_ERROR("create",5,"float");
#line 421 "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 442 "xapian.ccmod"
static int Xapian_BoolWeight_Xapian_Weight_inh_num = -1;
#line 442 "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 444 "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 468 "xapian.ccmod"
static int Xapian_TradWeight_Xapian_Weight_inh_num = -1;
#line 468 "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 470 "xapian.ccmod"
FLOAT_TYPE k;
#line 470 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("create",args,1);
#line 470 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_FLOAT) SIMPLE_ARG_TYPE_ERROR("create",1,"float");
#line 470 "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 489 "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 498 "xapian.ccmod"
struct pike_string * begin;
#line 498 "xapian.ccmod"
struct pike_string * end;
#line 498 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("`()",args,2);
#line 498 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("`()",1,"string");
#line 498 "xapian.ccmod"
debug_malloc_pass(begin=Pike_sp[0-2].u.string);
#line 498 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("`()",2,"string");
#line 498 "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 512 "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 527 "xapian.ccmod"
struct svalue * reason;
#line 527 "xapian.ccmod"
if(args > 1) wrong_number_of_args_error("destroy",args,1);
#line 527 "xapian.ccmod"
if ((args > 0) &&
    ((TYPEOF(Pike_sp[0-args]) != PIKE_T_INT) ||
     (SUBTYPEOF(Pike_sp[0-args]) != NUMBER_UNDEFINED))) {
#line 527 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-args]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("destroy",1,"int|void");
#line 527 "xapian.ccmod"
reason=Pike_sp+0-args; dmalloc_touch_svalue(Pike_sp+0-args);
#line 527 "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 541 "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 567 "xapian.ccmod"
static int Xapian_StringValueRangeProcessor_Xapian_ValueRangeProcessor_inh_num = -1;
#line 567 "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 569 "xapian.ccmod"
INT_TYPE valueno;
#line 569 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("create",args,1);
#line 569 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("create",1,"int");
#line 569 "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 596 "xapian.ccmod"
static int Xapian_NumberValueRangeProcessor_Xapian_ValueRangeProcessor_inh_num = -1;
#line 596 "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 598 "xapian.ccmod"
INT_TYPE valueno;
#line 598 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("create",args,1);
#line 598 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("create",1,"int");
#line 598 "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 629 "xapian.ccmod"
INT_TYPE valueno;
#line 629 "xapian.ccmod"
struct pike_string * _str;
#line 629 "xapian.ccmod"
INT_TYPE is_prefix;
#line 629 "xapian.ccmod"
if(args != 3) wrong_number_of_args_error("create",args,3);
#line 629 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("create",1,"int");
#line 629 "xapian.ccmod"
valueno=Pike_sp[0-3].u.integer;
#line 629 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-3]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("create",2,"string");
#line 629 "xapian.ccmod"
debug_malloc_pass(_str=Pike_sp[1-3].u.string);
#line 629 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("create",3,"int");
#line 629 "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 653 "xapian.ccmod"
static int Xapian_DateValueRangeProcessor_Xapian_ValueRangeProcessor_inh_num = -1;
#line 653 "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 665 "xapian.ccmod"
INT_TYPE valueno;
#line 665 "xapian.ccmod"
INT_TYPE prefer_mdy;
#line 665 "xapian.ccmod"
INT_TYPE epoch_year;
#line 665 "xapian.ccmod"
if(args != 3) wrong_number_of_args_error("create",args,3);
#line 665 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("create",1,"int");
#line 665 "xapian.ccmod"
valueno=Pike_sp[0-3].u.integer;
#line 665 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("create",2,"int");
#line 665 "xapian.ccmod"
prefer_mdy=Pike_sp[1-3].u.integer;
#line 665 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("create",3,"int");
#line 665 "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 683 "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 692 "xapian.ccmod"
struct pike_string * word;
#line 692 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("`()",args,1);
#line 692 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("`()",1,"string");
#line 692 "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 704 "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 712 "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 722 "xapian.ccmod"
INT_TYPE conversion_type;
#line 722 "xapian.ccmod"
struct mapping * params;
#line 722 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 722 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 722 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 722 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 722 "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 742 "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 758 "xapian.ccmod"
struct svalue * reason;
#line 758 "xapian.ccmod"
if(args > 1) wrong_number_of_args_error("destroy",args,1);
#line 758 "xapian.ccmod"
if ((args > 0) &&
    ((TYPEOF(Pike_sp[0-args]) != PIKE_T_INT) ||
     (SUBTYPEOF(Pike_sp[0-args]) != NUMBER_UNDEFINED))) {
#line 758 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-args]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("destroy",1,"int|void");
#line 758 "xapian.ccmod"
reason=Pike_sp+0-args; dmalloc_touch_svalue(Pike_sp+0-args);
#line 758 "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 773 "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 796 "xapian.ccmod"
static int Xapian_SimpleStopper_Xapian_Stopper_inh_num = -1;
#line 796 "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 798 "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 806 "xapian.ccmod"
struct array * words;
#line 806 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("create",args,1);
#line 806 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_ARRAY) SIMPLE_ARG_TYPE_ERROR("create",1,"array");
#line 806 "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 827 "xapian.ccmod"
struct pike_string * word;
#line 827 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("add",args,1);
#line 827 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("add",1,"string");
#line 827 "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 849 "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 852 "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 880 "xapian.ccmod"
struct pike_string * language;
#line 880 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("create",args,1);
#line 880 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("create",1,"string");
#line 880 "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 901 "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 907 "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 916 "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 930 "xapian.ccmod"
struct pike_string * word;
#line 930 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("`()",args,1);
#line 930 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("`()",1,"string");
#line 930 "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 947 "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 955 "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 965 "xapian.ccmod"
INT_TYPE conversion_type;
#line 965 "xapian.ccmod"
struct mapping * params;
#line 965 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 965 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 965 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 965 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 965 "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 985 "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 1001 "xapian.ccmod"
struct svalue * reason;
#line 1001 "xapian.ccmod"
if(args > 1) wrong_number_of_args_error("destroy",args,1);
#line 1001 "xapian.ccmod"
if ((args > 0) &&
    ((TYPEOF(Pike_sp[0-args]) != PIKE_T_INT) ||
     (SUBTYPEOF(Pike_sp[0-args]) != NUMBER_UNDEFINED))) {
#line 1001 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-args]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("destroy",1,"int|void");
#line 1001 "xapian.ccmod"
reason=Pike_sp+0-args; dmalloc_touch_svalue(Pike_sp+0-args);
#line 1001 "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 1016 "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 1041 "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 1044 "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 1056 "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 1073 "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 1088 "xapian.ccmod"
struct pike_string * term;
#line 1088 "xapian.ccmod"
INT_TYPE wqf;
#line 1088 "xapian.ccmod"
INT_TYPE pos;
#line 1088 "xapian.ccmod"
if(args != 3) wrong_number_of_args_error("create",args,3);
#line 1088 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-3]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("create",1,"string");
#line 1088 "xapian.ccmod"
debug_malloc_pass(term=Pike_sp[0-3].u.string);
#line 1088 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("create",2,"int");
#line 1088 "xapian.ccmod"
wqf=Pike_sp[1-3].u.integer;
#line 1088 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("create",3,"int");
#line 1088 "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 1106 "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 1121 "xapian.ccmod"
INT_TYPE op;
#line 1121 "xapian.ccmod"
struct pike_string * left;
#line 1121 "xapian.ccmod"
struct pike_string * right;
#line 1121 "xapian.ccmod"
if(args != 3) wrong_number_of_args_error("create",args,3);
#line 1121 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("create",1,"int");
#line 1121 "xapian.ccmod"
op=Pike_sp[0-3].u.integer;
#line 1121 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-3]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("create",2,"string");
#line 1121 "xapian.ccmod"
debug_malloc_pass(left=Pike_sp[1-3].u.string);
#line 1121 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-3]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("create",3,"string");
#line 1121 "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 1141 "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 1156 "xapian.ccmod"
INT_TYPE op;
#line 1156 "xapian.ccmod"
struct object * left;
#line 1156 "xapian.ccmod"
struct object * right;
#line 1156 "xapian.ccmod"
if(args != 3) wrong_number_of_args_error("create",args,3);
#line 1156 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("create",1,"int");
#line 1156 "xapian.ccmod"
op=Pike_sp[0-3].u.integer;
#line 1156 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-3]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("create",2,"object");
#line 1156 "xapian.ccmod"
debug_malloc_pass(left=Pike_sp[1-3].u.object);
#line 1156 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-3]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("create",3,"object");
#line 1156 "xapian.ccmod"
debug_malloc_pass(right=Pike_sp[2-3].u.object);
{
Query * l;
Query * r;

l = OBJ2_QUERY(left)->object_data->query;
r = OBJ2_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 1179 "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 1192 "xapian.ccmod"
INT_TYPE op;
#line 1192 "xapian.ccmod"
struct object * query;
#line 1192 "xapian.ccmod"
FLOAT_TYPE param;
#line 1192 "xapian.ccmod"
if(args != 3) wrong_number_of_args_error("create",args,3);
#line 1192 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("create",1,"int");
#line 1192 "xapian.ccmod"
op=Pike_sp[0-3].u.integer;
#line 1192 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-3]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("create",2,"object");
#line 1192 "xapian.ccmod"
debug_malloc_pass(query=Pike_sp[1-3].u.object);
#line 1192 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-3]) != PIKE_T_FLOAT) SIMPLE_ARG_TYPE_ERROR("create",3,"float");
#line 1192 "xapian.ccmod"
param=Pike_sp[2-3].u.float_number;
{
Query * q;

q = OBJ2_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_FLOAT:

#ifdef f_Xapian_Query_create_5_defined
      f_Xapian_Query_create_5(args);
      return;

#endif /* f_Xapian_Query_create_5_defined */
      break;
     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;
     default:
      SIMPLE_BAD_ARG_ERROR("create",3,"float|object|int|string");
    }
   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 1213 "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 1224 "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 1233 "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 1242 "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 1252 "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 1260 "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 1270 "xapian.ccmod"
INT_TYPE conversion_type;
#line 1270 "xapian.ccmod"
struct mapping * params;
#line 1270 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 1270 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 1270 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 1270 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 1270 "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 1289 "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 1300 "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 1389 "xapian.ccmod"
PositionIterator * pie;
#endif /* var_pie_Xapian_PositionIterator_defined */

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

#ifdef var_object_data_Xapian_PositionIterator_defined
#line 1391 "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 1393 "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 1401 "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 1406 "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 1411 "xapian.ccmod"
struct svalue * arg;
#line 1411 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("`==",args,1);
#line 1411 "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 1419 "xapian.ccmod"
o = arg->u.object;
posi = (PositionIterator*)THIS->object_data->positioni;
pis = OBJ2_POSITIONITERATOR(o);
if(!pis) do { INT_TYPE ret_=((0)); pop_stack(); push_int(ret_); return; }while(0);
#line 1424 "xapian.ccmod"
posb = pis->object_data->positioni;
if(*posi == *posb) do { INT_TYPE ret_=((1)); pop_stack(); push_int(ret_); return; }while(0);
#line 1426 "xapian.ccmod"
else do { INT_TYPE ret_=((0)); pop_stack(); push_int(ret_); return; }while(0);
#line 1427 "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 1436 "xapian.ccmod"
INT_TYPE pos;
#line 1436 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("skip_to",args,1);
#line 1436 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("skip_to",1,"int");
#line 1436 "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 1463 "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 1480 "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 1496 "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 1506 "xapian.ccmod"
INT_TYPE conversion_type;
#line 1506 "xapian.ccmod"
struct mapping * params;
#line 1506 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 1506 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 1506 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 1506 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 1506 "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 1526 "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 1537 "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 1557 "xapian.ccmod"
ValueIterator * vie;
#endif /* var_vie_Xapian_ValueIterator_defined */

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

#ifdef var_object_data_Xapian_ValueIterator_defined
#line 1559 "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 1561 "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 1569 "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 1586 "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 1602 "xapian.ccmod"
struct svalue * arg;
#line 1602 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("`==",args,1);
#line 1602 "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 1610 "xapian.ccmod"
o = arg->u.object;
valuei = (ValueIterator*)THIS->object_data->valuei;
vis = OBJ2_VALUEITERATOR(o);
if(!vis) do { INT_TYPE ret_=((0)); pop_stack(); push_int(ret_); return; }while(0);
#line 1615 "xapian.ccmod"
valueb = vis->object_data->valuei;
if(*valuei == *valueb) do { INT_TYPE ret_=((1)); pop_stack(); push_int(ret_); return; }while(0);
#line 1617 "xapian.ccmod"
else do { INT_TYPE ret_=((0)); pop_stack(); push_int(ret_); return; }while(0);
#line 1618 "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 1627 "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 1652 "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 1669 "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 1679 "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 1687 "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 1694 "xapian.ccmod"
INT_TYPE conversion_type;
#line 1694 "xapian.ccmod"
struct mapping * params;
#line 1694 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 1694 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 1694 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 1694 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 1694 "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 1712 "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 1723 "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 1743 "xapian.ccmod"
TermIterator * tie;
#endif /* var_tie_Xapian_TermIterator_defined */

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

#ifdef var_object_data_Xapian_TermIterator_defined
#line 1745 "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 1747 "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 1753 "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 1758 "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 1763 "xapian.ccmod"
struct svalue * arg;
#line 1763 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("`==",args,1);
#line 1763 "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 1771 "xapian.ccmod"
o = arg->u.object;
termi = (TermIterator*)THIS->object_data->termi;
tis = OBJ2_TERMITERATOR(o);
if(!tis) do { INT_TYPE ret_=((0)); pop_stack(); push_int(ret_); return; }while(0);
#line 1776 "xapian.ccmod"
termb = tis->object_data->termi;
if(*termi == *termb) do { INT_TYPE ret_=((1)); pop_stack(); push_int(ret_); return; }while(0);
#line 1778 "xapian.ccmod"
else do { INT_TYPE ret_=((0)); pop_stack(); push_int(ret_); return; }while(0);
#line 1779 "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 1788 "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_POSITIONITERATOR(o)->object_data->positioni = pi2;
OBJ2_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 1815 "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 1831 "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 1847 "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 1864 "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 1873 "xapian.ccmod"
INT_TYPE i;
#line 1873 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("`+=",args,1);
#line 1873 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("`+=",1,"int");
#line 1873 "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 1889 "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 1898 "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 1906 "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 1916 "xapian.ccmod"
INT_TYPE conversion_type;
#line 1916 "xapian.ccmod"
struct mapping * params;
#line 1916 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 1916 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 1916 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 1916 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 1916 "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 1936 "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 1947 "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 1969 "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 1972 "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 1978 "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 1995 "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 2005 "xapian.ccmod"
struct pike_string * data;
#line 2005 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("set_data",args,1);
#line 2005 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("set_data",1,"string");
#line 2005 "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 2023 "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_VALUEITERATOR(o)->object_data->valuei) = new ValueIterator(doc->values_begin());
(OBJ2_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 2043 "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_TERMITERATOR(o)->object_data->termi = ti2;
OBJ2_TERMITERATOR(o)->tie = new TermIterator(doc->termlist_end());

push_object(o); 
}

}
#line 2063 "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 2069 "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 2077 "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 2083 "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 2091 "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 2102 "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 2112 "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 2120 "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 2130 "xapian.ccmod"
INT_TYPE conversion_type;
#line 2130 "xapian.ccmod"
struct mapping * params;
#line 2130 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 2130 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 2130 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 2130 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 2130 "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 2149 "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 2162 "xapian.ccmod"
INT_TYPE val;
#line 2162 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("get_value",args,1);
#line 2162 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_value",1,"int");
#line 2162 "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 2177 "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 2186 "xapian.ccmod"
INT_TYPE val;
#line 2186 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("remove_value",args,1);
#line 2186 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("remove_value",1,"int");
#line 2186 "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 2196 "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 2210 "xapian.ccmod"
struct pike_string * tname;
#line 2210 "xapian.ccmod"
INT_TYPE termcount;
#line 2210 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("add_term",args,2);
#line 2210 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("add_term",1,"string");
#line 2210 "xapian.ccmod"
debug_malloc_pass(tname=Pike_sp[0-2].u.string);
#line 2210 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("add_term",2,"int");
#line 2210 "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 2222 "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 2242 "xapian.ccmod"
struct pike_string * tname;
#line 2242 "xapian.ccmod"
INT_TYPE termpos;
#line 2242 "xapian.ccmod"
INT_TYPE termcount;
#line 2242 "xapian.ccmod"
if(args != 3) wrong_number_of_args_error("add_posting",args,3);
#line 2242 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-3]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("add_posting",1,"string");
#line 2242 "xapian.ccmod"
debug_malloc_pass(tname=Pike_sp[0-3].u.string);
#line 2242 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("add_posting",2,"int");
#line 2242 "xapian.ccmod"
termpos=Pike_sp[1-3].u.integer;
#line 2242 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("add_posting",3,"int");
#line 2242 "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 2264 "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 2273 "xapian.ccmod"
struct pike_string * tname;
#line 2273 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("remove_term",args,1);
#line 2273 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("remove_term",1,"string");
#line 2273 "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 2313 "xapian.ccmod"
struct pike_string * tname;
#line 2313 "xapian.ccmod"
INT_TYPE tpos;
#line 2313 "xapian.ccmod"
INT_TYPE wdfdec;
#line 2313 "xapian.ccmod"
if(args != 3) wrong_number_of_args_error("remove_posting",args,3);
#line 2313 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-3]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("remove_posting",1,"string");
#line 2313 "xapian.ccmod"
debug_malloc_pass(tname=Pike_sp[0-3].u.string);
#line 2313 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("remove_posting",2,"int");
#line 2313 "xapian.ccmod"
tpos=Pike_sp[1-3].u.integer;
#line 2313 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("remove_posting",3,"int");
#line 2313 "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 2333 "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 2347 "xapian.ccmod"
INT_TYPE valueno;
#line 2347 "xapian.ccmod"
struct pike_string * value;
#line 2347 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("add_value",args,2);
#line 2347 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("add_value",1,"int");
#line 2347 "xapian.ccmod"
valueno=Pike_sp[0-2].u.integer;
#line 2347 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("add_value",2,"string");
#line 2347 "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 2358 "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 2366 "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 2379 "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 2387 "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 2402 "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 2413 "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 2431 "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 2445 "xapian.ccmod"
int current_index;
#endif /* var_current_index_Xapian_MSetIterator_defined */

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

#ifdef var_object_data_Xapian_MSetIterator_defined
#line 2447 "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 2449 "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_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 2473 "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 2478 "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 2483 "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 2492 "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 2501 "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 2510 "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 2519 "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 2532 "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_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 2550 "xapian.ccmod"
INT_TYPE i;
#line 2550 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("`+=",args,1);
#line 2550 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("`+=",1,"int");
#line 2550 "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 2566 "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 2575 "xapian.ccmod"
struct svalue * arg;
#line 2575 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("`==",args,1);
#line 2575 "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_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 2593 "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 2604 "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 2624 "xapian.ccmod"
int current_index;
#endif /* var_current_index_Xapian_ESetIterator_defined */

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

#ifdef var_object_data_Xapian_ESetIterator_defined
#line 2626 "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 2628 "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 2637 "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 2646 "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 2651 "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 2656 "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 2669 "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_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 2688 "xapian.ccmod"
INT_TYPE i;
#line 2688 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("`+=",args,1);
#line 2688 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("`+=",1,"int");
#line 2688 "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 2704 "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 2713 "xapian.ccmod"
struct svalue * arg;
#line 2713 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("`==",args,1);
#line 2713 "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 2721 "xapian.ccmod"
o = arg->u.object;
eseti = (ESetIterator*)THIS->object_data->eseti;

esis = OBJ2_ESETITERATOR(o);
if(!esis) do { INT_TYPE ret_=((0)); pop_stack(); push_int(ret_); return; }while(0);
#line 2727 "xapian.ccmod"
esetb = esis->object_data->eseti;
if(eseti == esetb) do { INT_TYPE ret_=((1)); pop_stack(); push_int(ret_); return; }while(0);
#line 2729 "xapian.ccmod"
else do { INT_TYPE ret_=((0)); pop_stack(); push_int(ret_); return; }while(0);
#line 2730 "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 2733 "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 2744 "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 2764 "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 2767 "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 2779 "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 2796 "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 2813 "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 2821 "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_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 2841 "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_MSETITERATOR(o)->object_data->mseti = mseti2;
OBJ2_MSETITERATOR(o)->msete = new MSetIterator(mset->end());

push_object(o); 
}

}
#line 2862 "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 2870 "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_MSETITERATOR(o)->object_data->mseti = mseti2;

push_object(o); 
}

}
#line 2889 "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 2897 "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_MSETITERATOR(o)->object_data->mseti = mseti2;

push_object(o); 
}

}
#line 2917 "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 2923 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("fetch",args,0);
{
MSet *mset;
mset = THIS->object_data->mset;

mset->fetch();
}

}
#line 2931 "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 2939 "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 2950 "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 2958 "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 2969 "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 2977 "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 2988 "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 2996 "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 3007 "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 3015 "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 3026 "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 3034 "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 3044 "xapian.ccmod"
INT_TYPE conversion_type;
#line 3044 "xapian.ccmod"
struct mapping * params;
#line 3044 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 3044 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 3044 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 3044 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 3044 "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 3074 "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 3077 "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 3089 "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 3105 "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 3122 "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 3130 "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 3141 "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 3149 "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 3160 "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 3169 "xapian.ccmod"
INT_TYPE docid;
#line 3169 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("add_document",args,1);
#line 3169 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("add_document",1,"int");
#line 3169 "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 3179 "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 3188 "xapian.ccmod"
struct object * iterator;
#line 3188 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("add_document",args,1);
#line 3188 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("add_document",1,"object");
#line 3188 "xapian.ccmod"
debug_malloc_pass(iterator=Pike_sp[0-1].u.object);
{
RSet *rset;
rset = THIS->object_data->rset;

MSetIterator * i;

i = OBJ2_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 3202 "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 3211 "xapian.ccmod"
INT_TYPE docid;
#line 3211 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("remove_document",args,1);
#line 3211 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("remove_document",1,"int");
#line 3211 "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 3221 "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 3230 "xapian.ccmod"
struct object * iterator;
#line 3230 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("remove_document",args,1);
#line 3230 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("remove_document",1,"object");
#line 3230 "xapian.ccmod"
debug_malloc_pass(iterator=Pike_sp[0-1].u.object);
{
RSet *rset;
rset = THIS->object_data->rset;

MSetIterator * i;

i = OBJ2_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 3244 "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 3255 "xapian.ccmod"
INT_TYPE docid;
#line 3255 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("contains",args,1);
#line 3255 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("contains",1,"int");
#line 3255 "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 3267 "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 3278 "xapian.ccmod"
struct object * iterator;
#line 3278 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("contains",args,1);
#line 3278 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("contains",1,"object");
#line 3278 "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_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 3294 "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 3302 "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 3312 "xapian.ccmod"
INT_TYPE conversion_type;
#line 3312 "xapian.ccmod"
struct mapping * params;
#line 3312 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 3312 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 3312 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 3312 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 3312 "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 3341 "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 3344 "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 3356 "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 3373 "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 3390 "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 3398 "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_ESETITERATOR(o)->object_data->eseti = eseti2;

push_object(o); 
}

}
#line 3418 "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 3426 "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_ESETITERATOR(o)->object_data->eseti = eseti2;

push_object(o); 
}

}
#line 3446 "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 3454 "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_ESETITERATOR(o)->object_data->eseti = eseti2;

push_object(o); 
}

}
#line 3474 "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 3485 "xapian.ccmod"
INT_TYPE i;
#line 3485 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("`[]",args,1);
#line 3485 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("`[]",1,"int");
#line 3485 "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_ESETITERATOR(o)->object_data->eseti = eseti2;

push_object(o); 
}

}
#line 3505 "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 3513 "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 3524 "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 3532 "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 3543 "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 3551 "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 3562 "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 3570 "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 3581 "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 3589 "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 3599 "xapian.ccmod"
INT_TYPE conversion_type;
#line 3599 "xapian.ccmod"
struct mapping * params;
#line 3599 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 3599 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 3599 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 3599 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 3599 "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 3628 "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 3630 "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 3639 "xapian.ccmod"
struct pike_string * path;
#line 3639 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("create",args,1);
#line 3639 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("create",1,"string");
#line 3639 "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 3669 "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 3675 "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 3682 "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 3688 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("reopen",args,0);
{
Database * db = THIS->object_data->database;

db->reopen();
}

}
#line 3695 "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 3701 "xapian.ccmod"
if(args != 0) wrong_number_of_args_error("keep_alive",args,0);
{
Database * db = THIS->object_data->database;

db->keep_alive();
}


}
#line 3709 "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 3720 "xapian.ccmod"
INT_TYPE did;
#line 3720 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("get_doclength",args,1);
#line 3720 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_doclength",1,"int");
#line 3720 "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 3730 "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 3738 "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 3747 "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 3755 "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 3764 "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 3772 "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 3782 "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 3790 "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 3805 "xapian.ccmod"
struct pike_string * term;
#line 3805 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("synonyms_iterator",args,1);
#line 3805 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("synonyms_iterator",1,"string");
#line 3805 "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_TERMITERATOR(o)->object_data->termi = ti2;
OBJ2_TERMITERATOR(o)->tie = new TermIterator(db->synonyms_end(str));

push_object(o); 
}



}
#line 3831 "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 3842 "xapian.ccmod"
INT_TYPE id;
#line 3842 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("get_document",args,1);
#line 3842 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_document",1,"int");
#line 3842 "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_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 3879 "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_TERMITERATOR(o)->object_data->termi = ti2;
OBJ2_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 3905 "xapian.ccmod"
struct pike_string * term;
#line 3905 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("get_spelling_terms",args,1);
#line 3905 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("get_spelling_terms",1,"string");
#line 3905 "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_TERMITERATOR(o)->object_data->termi = ti2;
OBJ2_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 3937 "xapian.ccmod"
struct pike_string * word;
#line 3937 "xapian.ccmod"
INT_TYPE max_edit_distance;
#line 3937 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("get_spelling_suggestion",args,2);
#line 3937 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("get_spelling_suggestion",1,"string");
#line 3937 "xapian.ccmod"
debug_malloc_pass(word=Pike_sp[0-2].u.string);
#line 3937 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_spelling_suggestion",2,"int");
#line 3937 "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 3950 "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 3958 "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 3968 "xapian.ccmod"
INT_TYPE conversion_type;
#line 3968 "xapian.ccmod"
struct mapping * params;
#line 3968 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 3968 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 3968 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 3968 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 3968 "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 3988 "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 4004 "xapian.ccmod"
struct svalue * reason;
#line 4004 "xapian.ccmod"
if(args > 1) wrong_number_of_args_error("destroy",args,1);
#line 4004 "xapian.ccmod"
if ((args > 0) &&
    ((TYPEOF(Pike_sp[0-args]) != PIKE_T_INT) ||
     (SUBTYPEOF(Pike_sp[0-args]) != NUMBER_UNDEFINED))) {
#line 4004 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-args]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("destroy",1,"int|void");
#line 4004 "xapian.ccmod"
reason=Pike_sp+0-args; dmalloc_touch_svalue(Pike_sp+0-args);
#line 4004 "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 4020 "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 4040 "xapian.ccmod"
static int Xapian_WriteableDatabase_Xapian_Database_inh_num = -1;
#line 4040 "xapian.ccmod"
static int Xapian_WriteableDatabase_Xapian_Database_inh_offset = -1;
#line 4042 "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 4054 "xapian.ccmod"
struct pike_string * path;
#line 4054 "xapian.ccmod"
INT_TYPE mode;
#line 4054 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("create",args,2);
#line 4054 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("create",1,"string");
#line 4054 "xapian.ccmod"
debug_malloc_pass(path=Pike_sp[0-2].u.string);
#line 4054 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("create",2,"int");
#line 4054 "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 4095 "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 4101 "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 4124 "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 4135 "xapian.ccmod"
struct object * document;
#line 4135 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("add_document",args,1);
#line 4135 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("add_document",1,"object");
#line 4135 "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_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 4172 "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 4184 "xapian.ccmod"
INT_TYPE did;
#line 4184 "xapian.ccmod"
struct object * document;
#line 4184 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("replace_document",args,2);
#line 4184 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("replace_document",1,"int");
#line 4184 "xapian.ccmod"
did=Pike_sp[0-2].u.integer;
#line 4184 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("replace_document",2,"object");
#line 4184 "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_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 4215 "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 4227 "xapian.ccmod"
struct pike_string * term;
#line 4227 "xapian.ccmod"
struct object * document;
#line 4227 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("replace_document",args,2);
#line 4227 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("replace_document",1,"string");
#line 4227 "xapian.ccmod"
debug_malloc_pass(term=Pike_sp[0-2].u.string);
#line 4227 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("replace_document",2,"object");
#line 4227 "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_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 4260 "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 4269 "xapian.ccmod"
struct pike_string * unique_term;
#line 4269 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("delete_document",args,1);
#line 4269 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("delete_document",1,"string");
#line 4269 "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 4291 "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 4300 "xapian.ccmod"
INT_TYPE did;
#line 4300 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("delete_document",args,1);
#line 4300 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("delete_document",1,"int");
#line 4300 "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 4323 "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 4332 "xapian.ccmod"
INT_TYPE flushed;
#line 4332 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("begin_transaction",args,1);
#line 4332 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("begin_transaction",1,"int");
#line 4332 "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 4354 "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 4360 "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 4389 "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 4395 "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 4423 "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 4431 "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 4441 "xapian.ccmod"
INT_TYPE conversion_type;
#line 4441 "xapian.ccmod"
struct mapping * params;
#line 4441 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 4441 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 4441 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 4441 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 4441 "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 4471 "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 4473 "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 4479 "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 4489 "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 4501 "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 4510 "xapian.ccmod"
struct object * stemmer;
#line 4510 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("set_stemmer",args,1);
#line 4510 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("set_stemmer",1,"object");
#line 4510 "xapian.ccmod"
debug_malloc_pass(stemmer=Pike_sp[0-1].u.object);
{
QueryParser * parser;
Stem * s;

parser = THIS->object_data->parser;
s = OBJ2_STEM(stemmer)->object_data->stem; 
parser->set_stemmer((const Stem)*s);

pop_n_elems(args);
}

}
#line 4522 "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 4531 "xapian.ccmod"
struct object * stopper;
#line 4531 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("set_stopper",args,1);
#line 4531 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("set_stopper",1,"object");
#line 4531 "xapian.ccmod"
debug_malloc_pass(stopper=Pike_sp[0-1].u.object);
{
QueryParser * parser;
Stopper * s;

parser = THIS->object_data->parser;
s = OBJ2_STOPPER(stopper)->object_data->stopper; 
parser->set_stopper((const Stopper*)s);

pop_n_elems(args);
}

}
#line 4543 "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 4552 "xapian.ccmod"
struct object * database;
#line 4552 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("set_database",args,1);
#line 4552 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("set_database",1,"object");
#line 4552 "xapian.ccmod"
debug_malloc_pass(database=Pike_sp[0-1].u.object);
{
QueryParser * parser;
Database * d;

parser = THIS->object_data->parser;
d = OBJ2_DATABASE(database)->object_data->database; 
parser->set_database((const Database)*d);

pop_n_elems(args);
}

}
#line 4564 "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 4573 "xapian.ccmod"
INT_TYPE op;
#line 4573 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("set_default_op",args,1);
#line 4573 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_default_op",1,"int");
#line 4573 "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 4604 "xapian.ccmod"
INT_TYPE strat;
#line 4604 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("set_stemming_strategy",args,1);
#line 4604 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_stemming_strategy",1,"int");
#line 4604 "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 4614 "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 4630 "xapian.ccmod"
struct pike_string * query;
#line 4630 "xapian.ccmod"
INT_TYPE flags;
#line 4630 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("parse_query",args,2);
#line 4630 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("parse_query",1,"string");
#line 4630 "xapian.ccmod"
debug_malloc_pass(query=Pike_sp[0-2].u.string);
#line 4630 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("parse_query",2,"int");
#line 4630 "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_QUERY(o)->object_data->query = q1;
pop_n_elems(args+1);
push_object(o);
}

}
#line 4655 "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 4667 "xapian.ccmod"
struct pike_string * field;
#line 4667 "xapian.ccmod"
struct pike_string * prefix;
#line 4667 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("add_prefix",args,2);
#line 4667 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("add_prefix",1,"string");
#line 4667 "xapian.ccmod"
debug_malloc_pass(field=Pike_sp[0-2].u.string);
#line 4667 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("add_prefix",2,"string");
#line 4667 "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 4679 "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 4691 "xapian.ccmod"
struct pike_string * field;
#line 4691 "xapian.ccmod"
struct pike_string * prefix;
#line 4691 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("add_boolean_prefix",args,2);
#line 4691 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("add_boolean_prefix",1,"string");
#line 4691 "xapian.ccmod"
debug_malloc_pass(field=Pike_sp[0-2].u.string);
#line 4691 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("add_boolean_prefix",2,"string");
#line 4691 "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 4703 "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 4711 "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 4721 "xapian.ccmod"
INT_TYPE conversion_type;
#line 4721 "xapian.ccmod"
struct mapping * params;
#line 4721 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 4721 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 4721 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 4721 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 4721 "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 4740 "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 4751 "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 4813 "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 4816 "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 4825 "xapian.ccmod"
struct object * database;
#line 4825 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("create",args,1);
#line 4825 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("create",1,"object");
#line 4825 "xapian.ccmod"
debug_malloc_pass(database=Pike_sp[0-1].u.object);
{
try
{
Database * db;
db = OBJ2_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 4845 "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 4854 "xapian.ccmod"
struct object * weight;
#line 4854 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("set_weighting_scheme",args,1);
#line 4854 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("set_weighting_scheme",1,"object");
#line 4854 "xapian.ccmod"
debug_malloc_pass(weight=Pike_sp[0-1].u.object);
{
Enquire * e = THIS->object_data->enquire;
Weight * w = (OBJ2_WEIGHT(weight)->object_data->weight);

e->set_weighting_scheme(*w);
pop_n_elems(args); 
}

}
#line 4863 "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 4875 "xapian.ccmod"
struct object * query;
#line 4875 "xapian.ccmod"
INT_TYPE termcount;
#line 4875 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("set_query",args,2);
#line 4875 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("set_query",1,"object");
#line 4875 "xapian.ccmod"
debug_malloc_pass(query=Pike_sp[0-2].u.object);
#line 4875 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_query",2,"int");
#line 4875 "xapian.ccmod"
termcount=Pike_sp[1-2].u.integer;
{
Query * q;
Enquire *enquire;
enquire = THIS->object_data->enquire;

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

enquire->set_query(*q, (Xapian::termcount)termcount);
pop_n_elems(args); 
}

}
#line 4887 "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 4899 "xapian.ccmod"
INT_TYPE percent_cutoff;
#line 4899 "xapian.ccmod"
FLOAT_TYPE weight_cutoff;
#line 4899 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("set_cutoff",args,2);
#line 4899 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_cutoff",1,"int");
#line 4899 "xapian.ccmod"
percent_cutoff=Pike_sp[0-2].u.integer;
#line 4899 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_FLOAT) SIMPLE_ARG_TYPE_ERROR("set_cutoff",2,"float");
#line 4899 "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 4908 "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 4917 "xapian.ccmod"
INT_TYPE docid_order;
#line 4917 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("set_docid_order",args,1);
#line 4917 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_docid_order",1,"int");
#line 4917 "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 4926 "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 4935 "xapian.ccmod"
INT_TYPE collapse_key;
#line 4935 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("set_collapse_key",args,1);
#line 4935 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_collapse_key",1,"int");
#line 4935 "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 4944 "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 4956 "xapian.ccmod"
INT_TYPE sort_key;
#line 4956 "xapian.ccmod"
INT_TYPE ascending;
#line 4956 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("set_sort_by_relevance_then_value",args,2);
#line 4956 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_sort_by_relevance_then_value",1,"int");
#line 4956 "xapian.ccmod"
sort_key=Pike_sp[0-2].u.integer;
#line 4956 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_sort_by_relevance_then_value",2,"int");
#line 4956 "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 4965 "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 4977 "xapian.ccmod"
INT_TYPE sort_key;
#line 4977 "xapian.ccmod"
INT_TYPE ascending;
#line 4977 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("set_sort_by_value_then_relevance",args,2);
#line 4977 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_sort_by_value_then_relevance",1,"int");
#line 4977 "xapian.ccmod"
sort_key=Pike_sp[0-2].u.integer;
#line 4977 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_sort_by_value_then_relevance",2,"int");
#line 4977 "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 4986 "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 4998 "xapian.ccmod"
INT_TYPE sort_key;
#line 4998 "xapian.ccmod"
INT_TYPE ascending;
#line 4998 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("set_sort_value",args,2);
#line 4998 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_sort_value",1,"int");
#line 4998 "xapian.ccmod"
sort_key=Pike_sp[0-2].u.integer;
#line 4998 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_sort_value",2,"int");
#line 4998 "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 5007 "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 5013 "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 5022 "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 5030 "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_QUERY(r)->object_data->query = q2;

push_object(r);
}

}
#line 5049 "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 5066 "xapian.ccmod"
INT_TYPE first;
#line 5066 "xapian.ccmod"
INT_TYPE maxitems;
#line 5066 "xapian.ccmod"
struct object * rset;
#line 5066 "xapian.ccmod"
if(args != 3) wrong_number_of_args_error("get_mset",args,3);
#line 5066 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_mset",1,"int");
#line 5066 "xapian.ccmod"
first=Pike_sp[0-3].u.integer;
#line 5066 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_mset",2,"int");
#line 5066 "xapian.ccmod"
maxitems=Pike_sp[1-3].u.integer;
#line 5066 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-3]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("get_mset",3,"object");
#line 5066 "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_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_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 5100 "xapian.ccmod"
INT_TYPE first;
#line 5100 "xapian.ccmod"
INT_TYPE maxitems;
#line 5100 "xapian.ccmod"
struct object * rset;
#line 5100 "xapian.ccmod"
struct svalue * mdecider;
#line 5100 "xapian.ccmod"
if(args != 4) wrong_number_of_args_error("get_mset",args,4);
#line 5100 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-4]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_mset",1,"int");
#line 5100 "xapian.ccmod"
first=Pike_sp[0-4].u.integer;
#line 5100 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-4]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_mset",2,"int");
#line 5100 "xapian.ccmod"
maxitems=Pike_sp[1-4].u.integer;
#line 5100 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-4]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("get_mset",3,"object");
#line 5100 "xapian.ccmod"
debug_malloc_pass(rset=Pike_sp[2-4].u.object);
#line 5100 "xapian.ccmod"
if(TYPEOF(Pike_sp[3-4]) != PIKE_T_FUNCTION) SIMPLE_ARG_TYPE_ERROR("get_mset",4,"function");
#line 5100 "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_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_MSET(o)->object_data->mset = mset1;

push_object(o);

}

}
#line 5136 "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 5153 "xapian.ccmod"
INT_TYPE first;
#line 5153 "xapian.ccmod"
INT_TYPE maxitems;
#line 5153 "xapian.ccmod"
INT_TYPE checkatleast;
#line 5153 "xapian.ccmod"
if(args != 3) wrong_number_of_args_error("get_mset",args,3);
#line 5153 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_mset",1,"int");
#line 5153 "xapian.ccmod"
first=Pike_sp[0-3].u.integer;
#line 5153 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_mset",2,"int");
#line 5153 "xapian.ccmod"
maxitems=Pike_sp[1-3].u.integer;
#line 5153 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_mset",3,"int");
#line 5153 "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_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 5183 "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 5200 "xapian.ccmod"
INT_TYPE maxitems;
#line 5200 "xapian.ccmod"
struct object * rset;
#line 5200 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("get_eset",args,2);
#line 5200 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_eset",1,"int");
#line 5200 "xapian.ccmod"
maxitems=Pike_sp[0-2].u.integer;
#line 5200 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("get_eset",2,"object");
#line 5200 "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_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_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 5231 "xapian.ccmod"
INT_TYPE maxitems;
#line 5231 "xapian.ccmod"
struct object * rset;
#line 5231 "xapian.ccmod"
struct svalue * edecider;
#line 5231 "xapian.ccmod"
if(args != 3) wrong_number_of_args_error("get_eset",args,3);
#line 5231 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_eset",1,"int");
#line 5231 "xapian.ccmod"
maxitems=Pike_sp[0-3].u.integer;
#line 5231 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-3]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("get_eset",2,"object");
#line 5231 "xapian.ccmod"
debug_malloc_pass(rset=Pike_sp[1-3].u.object);
#line 5231 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-3]) != PIKE_T_FUNCTION) SIMPLE_ARG_TYPE_ERROR("get_eset",3,"function");
#line 5231 "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_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_ESET(o)->object_data->eset = eset1;

push_object(o);
}

}
#line 5265 "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 5288 "xapian.ccmod"
INT_TYPE maxitems;
#line 5288 "xapian.ccmod"
struct object * rset;
#line 5288 "xapian.ccmod"
INT_TYPE flags;
#line 5288 "xapian.ccmod"
FLOAT_TYPE k;
#line 5288 "xapian.ccmod"
struct svalue * edecider;
#line 5288 "xapian.ccmod"
if(args != 5) wrong_number_of_args_error("get_eset",args,5);
#line 5288 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-5]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_eset",1,"int");
#line 5288 "xapian.ccmod"
maxitems=Pike_sp[0-5].u.integer;
#line 5288 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-5]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("get_eset",2,"object");
#line 5288 "xapian.ccmod"
debug_malloc_pass(rset=Pike_sp[1-5].u.object);
#line 5288 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-5]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_eset",3,"int");
#line 5288 "xapian.ccmod"
flags=Pike_sp[2-5].u.integer;
#line 5288 "xapian.ccmod"
if(TYPEOF(Pike_sp[3-5]) != PIKE_T_FLOAT) SIMPLE_ARG_TYPE_ERROR("get_eset",4,"float");
#line 5288 "xapian.ccmod"
k=Pike_sp[3-5].u.float_number;
#line 5288 "xapian.ccmod"
if(TYPEOF(Pike_sp[4-5]) != PIKE_T_FUNCTION) SIMPLE_ARG_TYPE_ERROR("get_eset",5,"function");
#line 5288 "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_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_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 5322 "xapian.ccmod"
INT_TYPE maxitems;
#line 5322 "xapian.ccmod"
struct object * rset;
#line 5322 "xapian.ccmod"
INT_TYPE flags;
#line 5322 "xapian.ccmod"
FLOAT_TYPE k;
#line 5322 "xapian.ccmod"
if(args != 4) wrong_number_of_args_error("get_eset",args,4);
#line 5322 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-4]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_eset",1,"int");
#line 5322 "xapian.ccmod"
maxitems=Pike_sp[0-4].u.integer;
#line 5322 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-4]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("get_eset",2,"object");
#line 5322 "xapian.ccmod"
debug_malloc_pass(rset=Pike_sp[1-4].u.object);
#line 5322 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-4]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_eset",3,"int");
#line 5322 "xapian.ccmod"
flags=Pike_sp[2-4].u.integer;
#line 5322 "xapian.ccmod"
if(TYPEOF(Pike_sp[3-4]) != PIKE_T_FLOAT) SIMPLE_ARG_TYPE_ERROR("get_eset",4,"float");
#line 5322 "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_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_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 5358 "xapian.ccmod"
INT_TYPE docid;
#line 5358 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("get_matching_terms",args,1);
#line 5358 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_matching_terms",1,"int");
#line 5358 "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_TERMITERATOR(o)->object_data->termi = ti2;
OBJ2_TERMITERATOR(o)->tie = new TermIterator(enquire->get_matching_terms_end(docid));

push_object(o); 

}

}
#line 5380 "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 5388 "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 5398 "xapian.ccmod"
INT_TYPE conversion_type;
#line 5398 "xapian.ccmod"
struct mapping * params;
#line 5398 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 5398 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 5398 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 5398 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 5398 "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 5418 "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 5429 "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 5450 "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 5453 "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 5478 "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 5480 "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 5489 "xapian.ccmod"
INT_TYPE flags;
#line 5489 "xapian.ccmod"
INT_TYPE mask;
#line 5489 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("set_flags",args,2);
#line 5489 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_flags",1,"int");
#line 5489 "xapian.ccmod"
flags=Pike_sp[0-2].u.integer;
#line 5489 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_flags",2,"int");
#line 5489 "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 5505 "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 5516 "xapian.ccmod"
struct object * document;
#line 5516 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("set_document",args,1);
#line 5516 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("set_document",1,"object");
#line 5516 "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_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 5553 "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_DOCUMENT(o)->object_data->document = doc2;

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

}

}
#line 5577 "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 5586 "xapian.ccmod"
struct object * stemmer;
#line 5586 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("set_stemmer",args,1);
#line 5586 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("set_stemmer",1,"object");
#line 5586 "xapian.ccmod"
debug_malloc_pass(stemmer=Pike_sp[0-1].u.object);
{
TermGenerator * termgenerator;
Stem * s;

termgenerator = THIS->object_data->termgenerator;
s = OBJ2_STEM(stemmer)->object_data->stem; 
termgenerator->set_stemmer((const Stem)*s);

pop_n_elems(args);
}

}
#line 5598 "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 5607 "xapian.ccmod"
struct object * stopper;
#line 5607 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("set_stopper",args,1);
#line 5607 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("set_stopper",1,"object");
#line 5607 "xapian.ccmod"
debug_malloc_pass(stopper=Pike_sp[0-1].u.object);
{
TermGenerator * termgenerator;
Stopper * s;

termgenerator = THIS->object_data->termgenerator;
s = OBJ2_STOPPER(stopper)->object_data->stopper; 
termgenerator->set_stopper((const Stopper*)s);

pop_n_elems(args);
}

}
#line 5619 "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 5628 "xapian.ccmod"
struct object * database;
#line 5628 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("set_database",args,1);
#line 5628 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_OBJECT) SIMPLE_ARG_TYPE_ERROR("set_database",1,"object");
#line 5628 "xapian.ccmod"
debug_malloc_pass(database=Pike_sp[0-1].u.object);
{
TermGenerator * termgenerator;
Database * d;

termgenerator = THIS->object_data->termgenerator;
d = OBJ2_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 5646 "xapian.ccmod"
INT_TYPE termpos;
#line 5646 "xapian.ccmod"
if(args != 1) wrong_number_of_args_error("set_termpos",args,1);
#line 5646 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-1]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("set_termpos",1,"int");
#line 5646 "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 5661 "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 5680 "xapian.ccmod"
struct pike_string * text;
#line 5680 "xapian.ccmod"
INT_TYPE weight;
#line 5680 "xapian.ccmod"
struct pike_string * prefix;
#line 5680 "xapian.ccmod"
if(args != 3) wrong_number_of_args_error("index_text",args,3);
#line 5680 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-3]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("index_text",1,"string");
#line 5680 "xapian.ccmod"
debug_malloc_pass(text=Pike_sp[0-3].u.string);
#line 5680 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("index_text",2,"int");
#line 5680 "xapian.ccmod"
weight=Pike_sp[1-3].u.integer;
#line 5680 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-3]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("index_text",3,"string");
#line 5680 "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 5703 "xapian.ccmod"
struct pike_string * text;
#line 5703 "xapian.ccmod"
INT_TYPE weight;
#line 5703 "xapian.ccmod"
struct pike_string * prefix;
#line 5703 "xapian.ccmod"
if(args != 3) wrong_number_of_args_error("index_text_without_positions",args,3);
#line 5703 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-3]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("index_text_without_positions",1,"string");
#line 5703 "xapian.ccmod"
debug_malloc_pass(text=Pike_sp[0-3].u.string);
#line 5703 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-3]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("index_text_without_positions",2,"int");
#line 5703 "xapian.ccmod"
weight=Pike_sp[1-3].u.integer;
#line 5703 "xapian.ccmod"
if(TYPEOF(Pike_sp[2-3]) != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("index_text_without_positions",3,"string");
#line 5703 "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 5721 "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 5729 "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 5739 "xapian.ccmod"
INT_TYPE conversion_type;
#line 5739 "xapian.ccmod"
struct mapping * params;
#line 5739 "xapian.ccmod"
if(args != 2) wrong_number_of_args_error("_sprintf",args,2);
#line 5739 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-2]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("_sprintf",1,"int");
#line 5739 "xapian.ccmod"
conversion_type=Pike_sp[0-2].u.integer;
#line 5739 "xapian.ccmod"
if(TYPEOF(Pike_sp[1-2]) != PIKE_T_MAPPING) SIMPLE_ARG_TYPE_ERROR("_sprintf",2,"mapping(mixed:mixed)");
#line 5739 "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 5760 "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 5776 "xapian.ccmod"
struct svalue * reason;
#line 5776 "xapian.ccmod"
if(args > 1) wrong_number_of_args_error("destroy",args,1);
#line 5776 "xapian.ccmod"
if ((args > 0) &&
    ((TYPEOF(Pike_sp[0-args]) != PIKE_T_INT) ||
     (SUBTYPEOF(Pike_sp[0-args]) != NUMBER_UNDEFINED))) {
#line 5776 "xapian.ccmod"
if(TYPEOF(Pike_sp[0-args]) != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("destroy",1,"int|void");
#line 5776 "xapian.ccmod"
reason=Pike_sp+0-args; dmalloc_touch_svalue(Pike_sp+0-args);
#line 5776 "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 5800 "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 205 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_WEIGHT);
#else
#line 205 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_WEIGHT_ID */
#line 205 "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 217 "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 243 "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 263 "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 288 "xapian.ccmod"
    ADD_FUNCTION2("get_sumextra", f_Xapian_Weight_get_sumextra, tFunc("\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 315 "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",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 334 "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 354 "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 381 "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 205 "xapian.ccmod"
  Xapian_Weight_program=end_program();
#line 205 "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 417 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_BM25WEIGHT);
#else
#line 417 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_BM25WEIGHT_ID */
#line 417 "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 419 "xapian.ccmod"
  Xapian_BM25Weight_Xapian_Weight_inh_num = Pike_compiler->new_program->num_inherits;
#line 419 "xapian.ccmod"
  low_inherit(Xapian_Weight_program, NULL, -1, 0, 0, NULL);
#line 419 "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 421 "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 417 "xapian.ccmod"
  Xapian_BM25Weight_program=end_program();
#line 417 "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 440 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_BOOLWEIGHT);
#else
#line 440 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_BOOLWEIGHT_ID */
#line 440 "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 442 "xapian.ccmod"
  Xapian_BoolWeight_Xapian_Weight_inh_num = Pike_compiler->new_program->num_inherits;
#line 442 "xapian.ccmod"
  low_inherit(Xapian_Weight_program, NULL, -1, 0, 0, NULL);
#line 442 "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 444 "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 440 "xapian.ccmod"
  Xapian_BoolWeight_program=end_program();
#line 440 "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 466 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_TRADWEIGHT);
#else
#line 466 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_TRADWEIGHT_ID */
#line 466 "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 468 "xapian.ccmod"
  Xapian_TradWeight_Xapian_Weight_inh_num = Pike_compiler->new_program->num_inherits;
#line 468 "xapian.ccmod"
  low_inherit(Xapian_Weight_program, NULL, -1, 0, 0, NULL);
#line 468 "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 470 "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 466 "xapian.ccmod"
  Xapian_TradWeight_program=end_program();
#line 466 "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 487 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_VALUERANGEPROCESSOR);
#else
#line 487 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_VALUERANGEPROCESSOR_ID */
#line 487 "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 498 "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 527 "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 487 "xapian.ccmod"
  Xapian_ValueRangeProcessor_program=end_program();
#line 487 "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 565 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_STRINGVALUERANGEPROCESSOR);
#else
#line 565 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_STRINGVALUERANGEPROCESSOR_ID */
#line 565 "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 567 "xapian.ccmod"
  Xapian_StringValueRangeProcessor_Xapian_ValueRangeProcessor_inh_num = Pike_compiler->new_program->num_inherits;
#line 567 "xapian.ccmod"
  low_inherit(Xapian_ValueRangeProcessor_program, NULL, -1, 0, 0, NULL);
#line 567 "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 569 "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 565 "xapian.ccmod"
  Xapian_StringValueRangeProcessor_program=end_program();
#line 565 "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 594 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_NUMBERVALUERANGEPROCESSOR);
#else
#line 594 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_NUMBERVALUERANGEPROCESSOR_ID */
#line 594 "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 596 "xapian.ccmod"
  Xapian_NumberValueRangeProcessor_Xapian_ValueRangeProcessor_inh_num = Pike_compiler->new_program->num_inherits;
#line 596 "xapian.ccmod"
  low_inherit(Xapian_ValueRangeProcessor_program, NULL, -1, 0, 0, NULL);
#line 596 "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 629 "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 594 "xapian.ccmod"
  Xapian_NumberValueRangeProcessor_program=end_program();
#line 594 "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 651 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_DATEVALUERANGEPROCESSOR);
#else
#line 651 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_DATEVALUERANGEPROCESSOR_ID */
#line 651 "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 653 "xapian.ccmod"
  Xapian_DateValueRangeProcessor_Xapian_ValueRangeProcessor_inh_num = Pike_compiler->new_program->num_inherits;
#line 653 "xapian.ccmod"
  low_inherit(Xapian_ValueRangeProcessor_program, NULL, -1, 0, 0, NULL);
#line 653 "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 665 "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 651 "xapian.ccmod"
  Xapian_DateValueRangeProcessor_program=end_program();
#line 651 "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 681 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_STOPPER);
#else
#line 681 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_STOPPER_ID */
#line 681 "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 692 "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 712 "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 722 "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 758 "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 681 "xapian.ccmod"
  Xapian_Stopper_program=end_program();
#line 681 "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 794 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_SIMPLESTOPPER);
#else
#line 794 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_SIMPLESTOPPER_ID */
#line 794 "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 796 "xapian.ccmod"
  Xapian_SimpleStopper_Xapian_Stopper_inh_num = Pike_compiler->new_program->num_inherits;
#line 796 "xapian.ccmod"
  low_inherit(Xapian_Stopper_program, NULL, -1, 0, 0, NULL);
#line 796 "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 806 "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 827 "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 794 "xapian.ccmod"
  Xapian_SimpleStopper_program=end_program();
#line 794 "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 847 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_STEM);
#else
#line 847 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_STEM_ID */
#line 847 "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 907 "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 930 "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 955 "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 965 "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 1001 "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 847 "xapian.ccmod"
  Xapian_Stem_program=end_program();
#line 847 "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 1038 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_QUERY);
#else
#line 1038 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_QUERY_ID */
#line 1038 "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 1311 "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 1192 "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 1224 "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 1242 "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 1260 "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 1270 "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 1038 "xapian.ccmod"
  Xapian_Query_program=end_program();
#line 1038 "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 1387 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_POSITIONITERATOR);
#else
#line 1387 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_POSITIONITERATOR_ID */
#line 1387 "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 1393 "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 1401 "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 1406 "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 1411 "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 1436 "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 1463 "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 1480 "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 1496 "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 1506 "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 1387 "xapian.ccmod"
  Xapian_PositionIterator_program=end_program();
#line 1387 "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 1555 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_VALUEITERATOR);
#else
#line 1555 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_VALUEITERATOR_ID */
#line 1555 "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 1561 "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 1569 "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 1586 "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 1602 "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 1627 "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 1652 "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 1669 "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 1687 "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 1694 "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 1555 "xapian.ccmod"
  Xapian_ValueIterator_program=end_program();
#line 1555 "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 1741 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_TERMITERATOR);
#else
#line 1741 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_TERMITERATOR_ID */
#line 1741 "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 1747 "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 1753 "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 1758 "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 1763 "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 1788 "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 1815 "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 1831 "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 1847 "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 1864 "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 1889 "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 1906 "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 1916 "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 1741 "xapian.ccmod"
  Xapian_TermIterator_program=end_program();
#line 1741 "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 1966 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_DOCUMENT);
#else
#line 1966 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_DOCUMENT_ID */
#line 1966 "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 1978 "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 2005 "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 2023 "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 2043 "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 2069 "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 2083 "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 2102 "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 2120 "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 2130 "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 2162 "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 2186 "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 2210 "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 2242 "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 2273 "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 2313 "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 2347 "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 2366 "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 2387 "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 1966 "xapian.ccmod"
  Xapian_Document_program=end_program();
#line 1966 "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 2443 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_MSETITERATOR);
#else
#line 2443 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_MSETITERATOR_ID */
#line 2443 "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 2449 "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 2473 "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 2478 "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 2483 "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 2550 "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 2566 "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 2443 "xapian.ccmod"
  Xapian_MSetIterator_program=end_program();
#line 2443 "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 2622 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_ESETITERATOR);
#else
#line 2622 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_ESETITERATOR_ID */
#line 2622 "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 2628 "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 2651 "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 2656 "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 2688 "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 2704 "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 2622 "xapian.ccmod"
  Xapian_ESetIterator_program=end_program();
#line 2622 "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 2762 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_MSET);
#else
#line 2762 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_MSET_ID */
#line 2762 "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 2796 "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 2821 "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 2841 "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 2870 "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 2897 "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 2923 "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 2939 "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 2958 "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 2977 "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 2996 "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 3015 "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 3034 "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 3044 "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 2762 "xapian.ccmod"
  Xapian_MSet_program=end_program();
#line 2762 "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 3072 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_RSET);
#else
#line 3072 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_RSET_ID */
#line 3072 "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 3105 "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 3130 "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 3149 "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 3188 "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 3230 "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 3278 "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 3302 "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 3312 "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 3072 "xapian.ccmod"
  Xapian_RSet_program=end_program();
#line 3072 "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 3339 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_ESET);
#else
#line 3339 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_ESET_ID */
#line 3339 "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 3373 "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 3398 "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 3426 "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 3454 "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 3485 "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 3513 "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 3532 "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 3551 "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 3570 "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 3589 "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 3599 "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 3339 "xapian.ccmod"
  Xapian_ESet_program=end_program();
#line 3339 "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 3626 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_DATABASE);
#else
#line 3626 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_DATABASE_ID */
#line 3626 "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 3675 "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 3688 "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 3701 "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 3720 "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 3738 "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 3755 "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 3772 "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 3790 "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 3805 "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 3842 "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 3905 "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 3937 "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 3958 "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 3968 "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 4004 "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 3626 "xapian.ccmod"
  Xapian_Database_program=end_program();
#line 3626 "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 4038 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_WRITEABLEDATABASE);
#else
#line 4038 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_WRITEABLEDATABASE_ID */
#line 4038 "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 4040 "xapian.ccmod"
  Xapian_WriteableDatabase_Xapian_Database_inh_num = Pike_compiler->new_program->num_inherits;
#line 4040 "xapian.ccmod"
  low_inherit(Xapian_Database_program, NULL, -1, 0, 0, NULL);
#line 4040 "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 4054 "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 4101 "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 4135 "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 4227 "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 4300 "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 4332 "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 4360 "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 4395 "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 4431 "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 4441 "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 4038 "xapian.ccmod"
  Xapian_WriteableDatabase_program=end_program();
#line 4038 "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 4469 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_QUERYPARSER);
#else
#line 4469 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_QUERYPARSER_ID */
#line 4469 "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 4762 "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 4479 "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 4489 "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 4510 "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 4531 "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 4552 "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 4573 "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 4604 "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 4630 "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 4667 "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 4691 "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 4711 "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 4721 "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 4469 "xapian.ccmod"
  Xapian_QueryParser_program=end_program();
#line 4469 "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 4810 "xapian.ccmod"
  START_NEW_PROGRAM_ID(XAPIAN_ENQUIRE);
#else
#line 4810 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_ENQUIRE_ID */
#line 4810 "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 5440 "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 4825 "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 4854 "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 4875 "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 4899 "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 4917 "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 4935 "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 4956 "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 4977 "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 4998 "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 5013 "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 5030 "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 5153 "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 5322 "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 5358 "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 5388 "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 5398 "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 4810 "xapian.ccmod"
  Xapian_Enquire_program=end_program();
#line 4810 "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 5456 "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 5476 "xapian.ccmod"
  start_new_program();

#endif /* PROG_XAPIAN_TERMGENERATOR_ID */
#line 5476 "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 5791 "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 5480 "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 5516 "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 5553 "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 5586 "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 5607 "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 5628 "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 5646 "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 5661 "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 5680 "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 5703 "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 5729 "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 5739 "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 5776 "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 5476 "xapian.ccmod"
  Xapian_TermGenerator_program=end_program();
#line 5476 "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 152 "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 164 "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 174 "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 181 "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 188 "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 198 "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 205 "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 417 "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 440 "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 466 "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 487 "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 565 "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 594 "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 651 "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 681 "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 794 "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 847 "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 1038 "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 1387 "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 1555 "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 1741 "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 1966 "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 2443 "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 2622 "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 2762 "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 3072 "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 3339 "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 3626 "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 4038 "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 4469 "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 4810 "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 5476 "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