base.h   base.h 
/* base.h: Reference-counted pointers /** @file base.h
* * @brief Reference-counted pointers
* Copyright 1999,2000,2001 BrightStation PLC */
/* Copyright 1999,2000,2001 BrightStation PLC
* Copyright 2002 Ananova Ltd * Copyright 2002 Ananova Ltd
* Copyright 2002,2003,2004,2007 Olly Betts * Copyright 2002,2003,2004,2007 Olly Betts
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as * modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the * published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version. * License, or (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
 End of changes. 1 change blocks. 
3 lines changed or deleted 4 lines changed or added


 database.h   database.h 
skipping to change at line 40 skipping to change at line 40
#include <xapian/base.h> #include <xapian/base.h>
#include <xapian/document.h> #include <xapian/document.h>
#include <xapian/types.h> #include <xapian/types.h>
#include <xapian/positioniterator.h> #include <xapian/positioniterator.h>
#include <xapian/postingiterator.h> #include <xapian/postingiterator.h>
#include <xapian/termiterator.h> #include <xapian/termiterator.h>
#include <xapian/valueiterator.h> #include <xapian/valueiterator.h>
#include <xapian/visibility.h> #include <xapian/visibility.h>
/// The Xapian library lives in the Xapian namespace.
namespace Xapian { namespace Xapian {
/** This class is used to access a database, or a group of databases. /** This class is used to access a database, or a group of databases.
* *
* For searching, this class is used in conjunction with an Enquire object . * For searching, this class is used in conjunction with an Enquire object .
* *
* @exception InvalidArgumentError will be thrown if an invalid * @exception InvalidArgumentError will be thrown if an invalid
* argument is supplied, for example, an unknown database type. * argument is supplied, for example, an unknown database type.
* *
* @exception DatabaseOpeningError may be thrown if the database cannot * @exception DatabaseOpeningError may be thrown if the database cannot
skipping to change at line 576 skipping to change at line 575
* as the filesystem isn't corrupted, etc). * as the filesystem isn't corrupted, etc).
* *
* A transaction is started with begin_transaction() and can * A transaction is started with begin_transaction() and can
* either be committed by calling commit_transaction() or aborted * either be committed by calling commit_transaction() or aborted
* by calling cancel_transaction(). * by calling cancel_transaction().
* *
* By default, a transaction implicitly calls commit() before and * By default, a transaction implicitly calls commit() before and
* after so that the modifications stand and fall without affecting * after so that the modifications stand and fall without affecting
* modifications before or after. * modifications before or after.
* *
* The downside of these calls to commit() is that small transactio * The downside of these implicit calls to commit() is that small
ns * transactions can harm indexing performance in the same way that
* can harm indexing performance in the same way that explicitly * explicitly calling commit() frequently can.
* calling commit() frequently can.
* *
* If you're applying atomic groups of changes and only wish to * If you're applying atomic groups of changes and only wish to
* ensure that each group is either applied or not applied, then * ensure that each group is either applied or not applied, then
* you can prevent the automatic commit() before and after the * you can prevent the automatic commit() before and after the
* transaction by starting the transaction with * transaction by starting the transaction with
* begin_transaction(false). However, if cancel_transaction is * begin_transaction(false). However, if cancel_transaction is
* called (or if commit_transaction isn't called before the * called (or if commit_transaction isn't called before the
* WritableDatabase object is destroyed) then any changes which * WritableDatabase object is destroyed) then any changes which
* were pending before the transaction began will also be discarded . * were pending before the transaction began will also be discarded .
* *
skipping to change at line 762 skipping to change at line 761
void replace_document(Xapian::docid did, void replace_document(Xapian::docid did,
const Xapian::Document & document); const Xapian::Document & document);
/** Replace any documents matching a term. /** Replace any documents matching a term.
* *
* This method replaces any documents indexed by the specified term * This method replaces any documents indexed by the specified term
* with the specified document. If any documents are indexed by th e * with the specified document. If any documents are indexed by th e
* term, the lowest document ID will be used for the document, * term, the lowest document ID will be used for the document,
* otherwise a new document ID will be generated as for add_documen t. * otherwise a new document ID will be generated as for add_documen t.
* *
* The intended use is to allow UIDs from another system to easily * One common use is to allow UIDs from another system to easily be
* be mapped to terms in Xapian, although this method probably has * mapped to terms in Xapian. Note that this method doesn't
* other uses. * automatically add unique_term as a term, so you'll need to call
* document.add_term(unique_term) first when using replace_document
()
* in this way.
*
* Another possible use is to allow groups of documents to be marke
d for
* later deletion - for example, you could add a "deletion date" te
rm
* to documents at index time and use this method to easily and eff
iciently
* delete all documents due for deletion on a particular date.
* *
* Note that changes to the database won't be immediately committed to * Note that changes to the database won't be immediately committed to
* disk; see commit() for more details. * disk; see commit() for more details.
* *
* As with all database modification operations, the effect is * As with all database modification operations, the effect is
* atomic: the document(s) will either be fully replaced, or the * atomic: the document(s) will either be fully replaced, or the
* document(s) fail to be replaced and an exception is thrown * document(s) fail to be replaced and an exception is thrown
* (possibly at a * (possibly at a
* later time when commit() is called or the database is closed). * later time when commit() is called or the database is closed).
* *
 End of changes. 3 change blocks. 
8 lines changed or deleted 17 lines changed or added


 dbfactory.h   dbfactory.h 
/** \file dbfactory.h /** \file dbfactory.h
* \brief Factory functions for constructing Database and WritableDatabase objects * \brief Factory functions for constructing Database and WritableDatabase objects
*/ */
/* Copyright (C) 2005,2006,2007,2008 Olly Betts /* Copyright (C) 2005,2006,2007,2008,2009 Olly Betts
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as * modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the * published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version. * License, or (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. * GNU General Public License for more details.
skipping to change at line 36 skipping to change at line 36
#include <xapian/types.h> #include <xapian/types.h>
#include <xapian/version.h> #include <xapian/version.h>
#include <xapian/visibility.h> #include <xapian/visibility.h>
namespace Xapian { namespace Xapian {
class Database; class Database;
class WritableDatabase; class WritableDatabase;
/// Database factory functions which determine the database type automatica lly.
namespace Auto { namespace Auto {
/** Construct a Database object for a stub database file. /** Construct a Database object for a stub database file.
* *
* The stub database file contains serialised parameters for one * The stub database file contains serialised parameters for one
* or more databases. * or more databases.
* *
* @param file pathname of the stub database file. * @param file pathname of the stub database file.
*/ */
XAPIAN_VISIBILITY_DEFAULT XAPIAN_VISIBILITY_DEFAULT
skipping to change at line 61 skipping to change at line 62
* database. * database.
* *
* @param file pathname of the stub database file. * @param file pathname of the stub database file.
*/ */
XAPIAN_VISIBILITY_DEFAULT XAPIAN_VISIBILITY_DEFAULT
WritableDatabase open_stub(const std::string &file, int action); WritableDatabase open_stub(const std::string &file, int action);
} }
#ifdef XAPIAN_HAS_INMEMORY_BACKEND #ifdef XAPIAN_HAS_INMEMORY_BACKEND
/// Database factory functions for the inmemory backend.
namespace InMemory { namespace InMemory {
/** Construct a WritableDatabase object for a new, empty InMemory database. /** Construct a WritableDatabase object for a new, empty InMemory database.
* *
* Only a writable InMemory database can be created, since a read-only one * Only a writable InMemory database can be created, since a read-only one
* would always remain empty. * would always remain empty.
*/ */
XAPIAN_VISIBILITY_DEFAULT XAPIAN_VISIBILITY_DEFAULT
WritableDatabase open(); WritableDatabase open();
} }
#endif #endif
#ifdef XAPIAN_HAS_CHERT_BACKEND #ifdef XAPIAN_HAS_CHERT_BACKEND
/// Database factory functions for the chert backend.
namespace Chert { namespace Chert {
/** Construct a Database object for read-only access to a Chert database. /** Construct a Database object for read-only access to a Chert database.
* *
* @param dir pathname of the directory containing the database. * @param dir pathname of the directory containing the database.
*/ */
XAPIAN_VISIBILITY_DEFAULT XAPIAN_VISIBILITY_DEFAULT
Database open(const std::string &dir); Database open(const std::string &dir);
/** Construct a Database object for update access to a Chert database. /** Construct a Database object for update access to a Chert database.
skipping to change at line 110 skipping to change at line 113
* existing database. * existing database.
*/ */
XAPIAN_VISIBILITY_DEFAULT XAPIAN_VISIBILITY_DEFAULT
WritableDatabase WritableDatabase
open(const std::string &dir, int action, int block_size = 8192); open(const std::string &dir, int action, int block_size = 8192);
} }
#endif #endif
#ifdef XAPIAN_HAS_FLINT_BACKEND #ifdef XAPIAN_HAS_FLINT_BACKEND
/// Database factory functions for the flint backend.
namespace Flint { namespace Flint {
/** Construct a Database object for read-only access to a Flint database. /** Construct a Database object for read-only access to a Flint database.
* *
* @param dir pathname of the directory containing the database. * @param dir pathname of the directory containing the database.
*/ */
XAPIAN_VISIBILITY_DEFAULT XAPIAN_VISIBILITY_DEFAULT
Database open(const std::string &dir); Database open(const std::string &dir);
/** Construct a Database object for update access to a Flint database. /** Construct a Database object for update access to a Flint database.
skipping to change at line 145 skipping to change at line 149
* existing database. * existing database.
*/ */
XAPIAN_VISIBILITY_DEFAULT XAPIAN_VISIBILITY_DEFAULT
WritableDatabase WritableDatabase
open(const std::string &dir, int action, int block_size = 8192); open(const std::string &dir, int action, int block_size = 8192);
} }
#endif #endif
#ifdef XAPIAN_HAS_REMOTE_BACKEND #ifdef XAPIAN_HAS_REMOTE_BACKEND
/// Database factory functions for the remote backend.
namespace Remote { namespace Remote {
/** Construct a Database object for read-only access to a remote database /** Construct a Database object for read-only access to a remote database
* accessed via a TCP connection. * accessed via a TCP connection.
* *
* Access to the remote database is via a TCP connection to the specified * Access to the remote database is via a TCP connection to the specified
* host and port. * host and port.
* *
* @param host hostname to connect to. * @param host hostname to connect to.
* @param port port number to connect to. * @param port port number to connect to.
 End of changes. 6 change blocks. 
1 lines changed or deleted 6 lines changed or added


 deprecated.h   deprecated.h 
// deprecated.h: Define XAPIAN_DEPRECATED() macro. /** @file deprecated.h
// * @brief Define XAPIAN_DEPRECATED() macro.
*/
// Copyright (C) 2006,2007,2009 Olly Betts // Copyright (C) 2006,2007,2009 Olly Betts
// //
// This program is free software; you can redistribute it and/or modify // This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or // the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version. // (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 End of changes. 1 change blocks. 
2 lines changed or deleted 3 lines changed or added


 error.h   error.h 
/** @file error.h /** @file error.h
* @brief Hierarchy of classes which Xapian can throw as exceptions. * @brief Hierarchy of classes which Xapian can throw as exceptions.
*/ */
/* Warning: This file is generated by ./generate-exceptions - do not modify /* Warning: This file is generated by /data/home/olly/tmp/xapian-svn-snapsh
directly! */ ot/tags/1.1.3/xapian/xapian-core/generate-exceptions - do not modify direct
/* Copyright (C) 2003,2004,2006,2007 Olly Betts ly! */
/* Copyright (C) 2003,2004,2006,2007,2009 Olly Betts
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as * modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the * published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version. * License, or (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. * GNU General Public License for more details.
skipping to change at line 706 skipping to change at line 706
QueryParserError(const std::string &msg_, const std::string &context_, const char * type_, const char * error_string_) QueryParserError(const std::string &msg_, const std::string &context_, const char * type_, const char * error_string_)
: RuntimeError(msg_, context_, type_, error_string_) {} : RuntimeError(msg_, context_, type_, error_string_) {}
/** @private @internal /** @private @internal
* @brief Constructor for use by constructors of derived classes. * @brief Constructor for use by constructors of derived classes.
*/ */
QueryParserError(const std::string &msg_, const std::string &context_, const char * type_, int errno_) QueryParserError(const std::string &msg_, const std::string &context_, const char * type_, int errno_)
: RuntimeError(msg_, context_, type_, errno_) {} : RuntimeError(msg_, context_, type_, errno_) {}
}; };
/** Indicates an error in the std::string serialisation of an object. */
class XAPIAN_VISIBILITY_DEFAULT SerialisationError : public RuntimeError {
public:
/** @private @internal
* @brief Private constructor for use by remote backend.
*
* @param error_string_ Optional string describing error. May be NU
LL.
*/
SerialisationError(const std::string &msg_, const std::string &context_
, const char * error_string_)
: RuntimeError(msg_, context_, "SerialisationError", error_string_)
{}
/** General purpose constructor which allows setting errno. */
explicit SerialisationError(const std::string &msg_, const std::string
&context_ = std::string(), int errno_ = 0)
: RuntimeError(msg_, context_, "SerialisationError", errno_) {}
/** Construct from message and errno value. */
SerialisationError(const std::string &msg_, int errno_)
: RuntimeError(msg_, std::string(), "SerialisationError", errno_) {}
protected:
/** @private @internal
* @brief Constructor for use by constructors of derived classes.
*/
SerialisationError(const std::string &msg_, const std::string &context_
, const char * type_, const char * error_string_)
: RuntimeError(msg_, context_, type_, error_string_) {}
/** @private @internal
* @brief Constructor for use by constructors of derived classes.
*/
SerialisationError(const std::string &msg_, const std::string &context_
, const char * type_, int errno_)
: RuntimeError(msg_, context_, type_, errno_) {}
};
/** RangeError indicates an attempt to access outside the bounds of a conta iner. /** RangeError indicates an attempt to access outside the bounds of a conta iner.
*/ */
class XAPIAN_VISIBILITY_DEFAULT RangeError : public RuntimeError { class XAPIAN_VISIBILITY_DEFAULT RangeError : public RuntimeError {
public: public:
/** @private @internal /** @private @internal
* @brief Private constructor for use by remote backend. * @brief Private constructor for use by remote backend.
* *
* @param error_string_ Optional string describing error. May be NU LL. * @param error_string_ Optional string describing error. May be NU LL.
*/ */
RangeError(const std::string &msg_, const std::string &context_, const char * error_string_) RangeError(const std::string &msg_, const std::string &context_, const char * error_string_)
 End of changes. 2 change blocks. 
3 lines changed or deleted 40 lines changed or added


 postingsource.h   postingsource.h 
skipping to change at line 270 skipping to change at line 270
* If this returns an empty string, Xapian will assume that serialise( ) * If this returns an empty string, Xapian will assume that serialise( )
* and unserialise() are not implemented. * and unserialise() are not implemented.
*/ */
virtual std::string name() const; virtual std::string name() const;
/** Serialise object parameters into a string. /** Serialise object parameters into a string.
* *
* The serialised parameters should represent the configuration of the * The serialised parameters should represent the configuration of the
* posting source, but need not (indeed, should not) represent the cur rent * posting source, but need not (indeed, should not) represent the cur rent
* iteration state. * iteration state.
*
* If you don't want to support the remote backend, you can use the
* default implementation which simply throws Xapian::UnimplementedErr
or.
*/ */
virtual std::string serialise() const; virtual std::string serialise() const;
/** Create object given string serialisation returned by serialise(). /** Create object given string serialisation returned by serialise().
* *
* Note that the returned object will be deallocated by Xapian after u se * Note that the returned object will be deallocated by Xapian after u se
* with "delete". It must therefore have been allocated with "new". * with "delete". It must therefore have been allocated with "new".
* *
* If you don't want to support the remote backend, you can use the
* default implementation which simply throws Xapian::UnimplementedErr
or.
*
* @param s A serialised instance of this PostingSource subclass. * @param s A serialised instance of this PostingSource subclass.
*/ */
virtual PostingSource * unserialise(const std::string &s) const; virtual PostingSource * unserialise(const std::string &s) const;
/** Set this PostingSource to the start of the list of postings. /** Set this PostingSource to the start of the list of postings.
* *
* This is called automatically by the matcher prior to each query bei ng * This is called automatically by the matcher prior to each query bei ng
* processed. * processed.
* *
* If a PostingSource is used for multiple searches, @a init() will * If a PostingSource is used for multiple searches, @a init() will
skipping to change at line 420 skipping to change at line 426
Xapian::weight get_weight() const; Xapian::weight get_weight() const;
ValueWeightPostingSource * clone() const; ValueWeightPostingSource * clone() const;
std::string name() const; std::string name() const;
std::string serialise() const; std::string serialise() const;
ValueWeightPostingSource * unserialise(const std::string &s) const; ValueWeightPostingSource * unserialise(const std::string &s) const;
void init(const Database & db_); void init(const Database & db_);
std::string get_description() const; std::string get_description() const;
}; };
/** Read weights from a value which is known to decrease as docid increases
.
*
* This posting source can be used, like ValueWeightPostingSource, to add
a
* weight contribution to a query based on the values stored in a slot. T
he
* values in the slot must be serialised as by @a sortable_serialise().
*
* However, this posting source is additionally given a range of document
IDs,
* within which the weight is known to be decreasing. ie, for all documen
ts
* with ids A and B within this range (including the endpoints), where A i
s
* less than B, the weight of A is less than or equal to the weight of B.
* This can allow the posting source to skip to the end of the range quick
ly
* if insufficient weight is left in the posting source for a particular
* source.
*
* By default, the range is assumed to cover all document IDs.
*
* The ordering property can be arranged at index time, or by sorting an
* indexed database to produce a new, sorted, database.
*/
class XAPIAN_VISIBILITY_DEFAULT DecreasingValueWeightPostingSource
: public Xapian::ValueWeightPostingSource {
protected:
Xapian::docid range_start;
Xapian::docid range_end;
double curr_weight;
/// Flag, set to true if there are docs after the end of the range.
bool items_at_end;
/// Skip the iterator forward if in the decreasing range, and weight is
low.
void skip_if_in_range(Xapian::weight min_wt);
public:
DecreasingValueWeightPostingSource(Xapian::valueno slot_,
Xapian::docid range_start_ = 0,
Xapian::docid range_end_ = 0);
Xapian::weight get_weight() const;
DecreasingValueWeightPostingSource * clone() const;
std::string name() const;
std::string serialise() const;
DecreasingValueWeightPostingSource * unserialise(const std::string &s)
const;
void init(const Xapian::Database & db_);
void next(Xapian::weight min_wt);
void skip_to(Xapian::docid min_docid, Xapian::weight min_wt);
bool check(Xapian::docid min_docid, Xapian::weight min_wt);
std::string get_description() const;
};
/** A posting source which looks up weights in a map using values as the ke y. /** A posting source which looks up weights in a map using values as the ke y.
* *
* This allows will return entries for all documents in the given database * This allows will return entries for all documents in the given database
* which have a value in the slot specified. The values will be mapped to the * which have a value in the slot specified. The values will be mapped to the
* corresponding weight in the weight map. If there is no mapping for a * corresponding weight in the weight map. If there is no mapping for a
* particular value, the default weight will be returned (which itself * particular value, the default weight will be returned (which itself
* defaults to 0.0). * defaults to 0.0).
*/ */
class XAPIAN_VISIBILITY_DEFAULT ValueMapPostingSource class XAPIAN_VISIBILITY_DEFAULT ValueMapPostingSource
: public ValuePostingSource { : public ValuePostingSource {
 End of changes. 3 change blocks. 
0 lines changed or deleted 68 lines changed or added


 query.h   query.h 
skipping to change at line 47 skipping to change at line 47
// - we need to at present so that the Xapian::Query's template ctors // - we need to at present so that the Xapian::Query's template ctors
// compile. // compile.
class LocalSubMatch; class LocalSubMatch;
class MultiMatch; class MultiMatch;
class QueryOptimiser; class QueryOptimiser;
struct SortPosName; struct SortPosName;
namespace Xapian { namespace Xapian {
class PostingSource; class PostingSource;
class SerialisationContext; class Registry;
/** Class representing a query. /** Class representing a query.
* *
* Queries are represented as a tree of objects. * Queries are represented as a tree of objects.
*/ */
class XAPIAN_VISIBILITY_DEFAULT Query { class XAPIAN_VISIBILITY_DEFAULT Query {
public: public:
/// Class holding details of the query /// Class holding details of the query
class Internal; class Internal;
/// @private @internal Reference counted internals. /// @private @internal Reference counted internals.
skipping to change at line 82 skipping to change at line 82
OP_XOR, OP_XOR,
/// Return iff left satisfied, but use weights from both /// Return iff left satisfied, but use weights from both
OP_AND_MAYBE, OP_AND_MAYBE,
/// As AND, but use only weights from left subquery /// As AND, but use only weights from left subquery
OP_FILTER, OP_FILTER,
/** Find occurrences of a list of terms with all the terms /** Find occurrences of a list of terms with all the terms
* occurring within a specified window of positions. * occurring within a specified window of positions.
*
* Each occurrence of a term must be at a different position, * Each occurrence of a term must be at a different position,
* but the order they appear in is irrelevant. * but the order they appear in is irrelevant.
* *
* The window parameter should be specified for this operation, * The window parameter should be specified for this operation,
* but will default to the number of terms in the list. * but will default to the number of terms in the list.
*/ */
OP_NEAR, OP_NEAR,
/** Find occurrences of a list of terms with all the terms /** Find occurrences of a list of terms with all the terms
* occurring within a specified window of positions, and all * occurring within a specified window of positions, and all
* the terms appearing in the order specified. Each occurrence * the terms appearing in the order specified.
* of a term must be at a different position. *
* Each occurrence of a term must be at a different position.
* *
* The window parameter should be specified for this operation, * The window parameter should be specified for this operation,
* but will default to the number of terms in the list. * but will default to the number of terms in the list.
*/ */
OP_PHRASE, OP_PHRASE,
/** Filter by a range test on a document value. */ /** Filter by a range test on a document value. */
OP_VALUE_RANGE, OP_VALUE_RANGE,
/** Scale the weight of a subquery by the specified factor. /** Scale the weight of a subquery by the specified factor.
skipping to change at line 288 skipping to change at line 290
* *
* This method will fail if the query contains any external * This method will fail if the query contains any external
* PostingSource leaf nodes. * PostingSource leaf nodes.
* *
* @param s The string representing the serialised query. * @param s The string representing the serialised query.
*/ */
static Query unserialise(const std::string &s); static Query unserialise(const std::string &s);
/** Unserialise a query from a string produced by serialise(). /** Unserialise a query from a string produced by serialise().
* *
* The supplied context will be used to attempt to unserialise any * The supplied registry will be used to attempt to unserialise any
* external PostingSource leaf nodes. This method will fail if the * external PostingSource leaf nodes. This method will fail if the
* query contains any external PostingSource leaf nodes which are n ot * query contains any external PostingSource leaf nodes which are n ot
* registered in the context. * registered in the registry.
* *
* @param s The string representing the serialised query. * @param s The string representing the serialised query.
* @param context A context to use when unserialising the query. * @param registry Xapian::Registry to use.
*/ */
static Query unserialise(const std::string & s, static Query unserialise(const std::string & s,
const SerialisationContext & context); const Registry & registry);
/// Return a string describing this object. /// Return a string describing this object.
std::string get_description() const; std::string get_description() const;
private: private:
void add_subquery(const Query & subq); void add_subquery(const Query & subq);
void add_subquery(const Query * subq); void add_subquery(const Query * subq);
void add_subquery(const std::string & tname); void add_subquery(const std::string & tname);
void start_construction(Query::op op_, Xapian::termcount parameter); void start_construction(Query::op op_, Xapian::termcount parameter);
void end_construction(); void end_construction();
skipping to change at line 460 skipping to change at line 462
*/ */
Internal(op_t op_, Xapian::valueno valno, const std::string &value); Internal(op_t op_, Xapian::valueno valno, const std::string &value);
/// Construct an external source query. /// Construct an external source query.
explicit Internal(Xapian::PostingSource * external_source_, bool own ed); explicit Internal(Xapian::PostingSource * external_source_, bool own ed);
/** Destructor. */ /** Destructor. */
~Internal(); ~Internal();
static Xapian::Query::Internal * unserialise(const std::string &s, static Xapian::Query::Internal * unserialise(const std::string &s,
const SerialisationCont ext & context); const Registry & regist ry);
/** Add a subquery. */ /** Add a subquery. */
void add_subquery(const Query::Internal * subq); void add_subquery(const Query::Internal * subq);
/** Add a subquery without copying it. /** Add a subquery without copying it.
* *
* subq is owned by the object this is called on after the call. * subq is owned by the object this is called on after the call.
*/ */
void add_subquery_nocopy(Query::Internal * subq); void add_subquery_nocopy(Query::Internal * subq);
 End of changes. 8 change blocks. 
8 lines changed or deleted 10 lines changed or added


 queryparser.h   queryparser.h 
skipping to change at line 87 skipping to change at line 87
/// Return a string describing this object. /// Return a string describing this object.
virtual std::string get_description() const; virtual std::string get_description() const;
}; };
/// Base class for value range processors. /// Base class for value range processors.
struct XAPIAN_VISIBILITY_DEFAULT ValueRangeProcessor { struct XAPIAN_VISIBILITY_DEFAULT ValueRangeProcessor {
/// Destructor. /// Destructor.
virtual ~ValueRangeProcessor(); virtual ~ValueRangeProcessor();
/** See if <begin>..<end> is a valid value range. /** Check for a valid range of this type.
* *
* If this ValueRangeProcessor recognises <begin>..<end> it returns th e * If this ValueRangeProcessor recognises BEGIN..END it returns the
* value number of range filter on. Otherwise it returns * value number of range filter on. Otherwise it returns
* Xapian::BAD_VALUENO. * Xapian::BAD_VALUENO.
*/ */
virtual Xapian::valueno operator()(std::string &begin, std::string &end ) = 0; virtual Xapian::valueno operator()(std::string &begin, std::string &end ) = 0;
}; };
/** Handle a string range. /** Handle a string range.
* *
* The end points can be any strings. * The end points can be any strings.
*/ */
skipping to change at line 128 skipping to change at line 128
* @param valno_ The value number to return from operator(). * @param valno_ The value number to return from operator().
* @param str_ A string to look for to recognise values as belongi ng * @param str_ A string to look for to recognise values as belongi ng
* to this range. * to this range.
* @param prefix_ Flag specifying whether to check for str_ as a prefi x * @param prefix_ Flag specifying whether to check for str_ as a prefi x
* or a suffix. * or a suffix.
*/ */
StringValueRangeProcessor(Xapian::valueno valno_, const std::string &st r_, StringValueRangeProcessor(Xapian::valueno valno_, const std::string &st r_,
bool prefix_ = true) bool prefix_ = true)
: valno(valno_), prefix(prefix_), str(str_) { } : valno(valno_), prefix(prefix_), str(str_) { }
/** See if <begin>..<end> is a valid string value range. /** Check for a valid range of this type.
* *
* If no prefix or suffix is specified, then this always returns the * If no prefix or suffix is specified, then this always returns the
* value slot specified at construction time. * value slot specified at construction time.
* *
* If a prefix or suffix is specified, this is checked for first, and * If a prefix or suffix is specified, this is checked for first, and
* it it doesn't match, this method returns Xapian::BAD_VALUENO. * it it doesn't match, this method returns Xapian::BAD_VALUENO.
*/ */
Xapian::valueno operator()(std::string &, std::string &); Xapian::valueno operator()(std::string &, std::string &);
}; };
skipping to change at line 206 skipping to change at line 206
* For example, if str_ is "created:" and prefix_ is true, and the ran ge * For example, if str_ is "created:" and prefix_ is true, and the ran ge
* processor has been added to the queryparser, the queryparser will * processor has been added to the queryparser, the queryparser will
* accept "created:1/1/2000..31/12/2001". * accept "created:1/1/2000..31/12/2001".
*/ */
DateValueRangeProcessor(Xapian::valueno valno_, const std::string &str_ , DateValueRangeProcessor(Xapian::valueno valno_, const std::string &str_ ,
bool prefix_ = true, bool prefix_ = true,
bool prefer_mdy_ = false, int epoch_year_ = 1970 ) bool prefer_mdy_ = false, int epoch_year_ = 1970 )
: StringValueRangeProcessor(valno_, str_, prefix_), : StringValueRangeProcessor(valno_, str_, prefix_),
prefer_mdy(prefer_mdy_), epoch_year(epoch_year_) { } prefer_mdy(prefer_mdy_), epoch_year(epoch_year_) { }
/** See if <begin>..<end> is a valid date value range. /** Check for a valid range of this type.
* *
* If <begin>..<end> is a sensible date range, this method returns the * If BEGIN..END is a sensible date range, this method returns the
* value number of range filter on. Otherwise it returns * value number of range filter on. Otherwise it returns
* Xapian::BAD_VALUENO. * Xapian::BAD_VALUENO.
*/ */
Xapian::valueno operator()(std::string &begin, std::string &end); Xapian::valueno operator()(std::string &begin, std::string &end);
}; };
/** Handle a number range. /** Handle a number range.
* *
* This class must be used on values which have been encoded using * This class must be used on values which have been encoded using
* Xapian::sortable_serialise() which turns numbers into strings which * Xapian::sortable_serialise() which turns numbers into strings which
skipping to change at line 267 skipping to change at line 267
* processor has been added to the queryparser, the queryparser will * processor has been added to the queryparser, the queryparser will
* accept "$10..50" or "$10..$50", but not "10..50" or "10..$50" as va lid * accept "$10..50" or "$10..$50", but not "10..50" or "10..$50" as va lid
* ranges. If str_ is "kg" and prefix_ is false, the queryparser will * 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" a s * accept "10..50kg" or "10kg..50kg", but not "10..50" or "10kg..50" a s
* valid ranges. * valid ranges.
*/ */
NumberValueRangeProcessor(Xapian::valueno valno_, const std::string &st r_, NumberValueRangeProcessor(Xapian::valueno valno_, const std::string &st r_,
bool prefix_ = true) bool prefix_ = true)
: StringValueRangeProcessor(valno_, str_, prefix_) { } : StringValueRangeProcessor(valno_, str_, prefix_) { }
/** See if <begin>..<end> is a valid numeric value range. /** Check for a valid range of this type.
* *
* If <begin>..<end> is a valid numeric value range, and has the * If BEGIN..END is a valid numeric value range, and has the
* appropriate prefix or suffix (if specified) required for this * appropriate prefix or suffix (if specified) required for this
* NumberValueRangeProcessor, this method returns the value number of * NumberValueRangeProcessor, this method returns the value number of
* range filter on, and sets begin and end to the appropriate serialis ed * range filter on, and sets begin and end to the appropriate serialis ed
* values needed to delimit the range. Otherwise it returns * values needed to delimit the range. Otherwise it returns
* Xapian::BAD_VALUENO. * Xapian::BAD_VALUENO.
*/ */
Xapian::valueno operator()(std::string &begin, std::string &end); Xapian::valueno operator()(std::string &begin, std::string &end);
}; };
/// Build a Xapian::Query object from a user query string. /// Build a Xapian::Query object from a user query string.
skipping to change at line 412 skipping to change at line 412
* prefix is added). * prefix is added).
* *
* Note that the stemming algorithm is only applied to words in * Note that the stemming algorithm is only applied to words in
* probabilistic fields - boolean filter terms are never stemmed. * probabilistic fields - boolean filter terms are never stemmed.
*/ */
void set_stemming_strategy(stem_strategy strategy); void set_stemming_strategy(stem_strategy strategy);
/// Set the stopper. /// Set the stopper.
void set_stopper(const Stopper *stop = NULL); void set_stopper(const Stopper *stop = NULL);
/** Set the default boolean operator. */ /** Set the default operator.
*
* This operator is used to combine non-filter query items when no
* explicit operator is used.
*
* The most useful values for this are OP_OR (the default) and OP_AND.
* OP_NEAR and OP_PHRASE can also be useful.
*
* So for example, 'weather forecast' is parsed as if it were 'weather
OR
* forecast' by default.
*/
void set_default_op(Query::op default_op); void set_default_op(Query::op default_op);
/** Get the default boolean operator. */ /** Get the current default operator. */
Query::op get_default_op() const; Query::op get_default_op() const;
/// Specify the database being searched. /// Specify the database being searched.
void set_database(const Database &db); void set_database(const Database &db);
/** Parse a query. /** Parse a query.
* *
* @param query_string A free-text query as entered by a user * @param query_string A free-text query as entered by a user
* @param flags Zero or more Query::feature_flag specifying * @param flags Zero or more Query::feature_flag specifying
* what features the QueryParser should support. Combine * what features the QueryParser should support. Combine
skipping to change at line 455 skipping to change at line 465
* Multiple fields can be mapped to the same prefix. For example, you * Multiple fields can be mapped to the same prefix. For example, you
* can make title: and subject: aliases for each other. * can make title: and subject: aliases for each other.
* *
* As of 1.0.4, you can call this method multiple times with the same * As of 1.0.4, you can call this method multiple times with the same
* value of field to allow a single field to be mapped to multiple * value of field to allow a single field to be mapped to multiple
* prefixes. Multiple terms being generated for such a field, and * prefixes. Multiple terms being generated for such a field, and
* combined with @c Xapian::Query::OP_OR. * combined with @c Xapian::Query::OP_OR.
* *
* If any prefixes are specified for the empty field name (i.e. you * If any prefixes are specified for the empty field name (i.e. you
* call this method with an empty string as the first parameter) * call this method with an empty string as the first parameter)
* these prefixes will be used as the default prefix. If you do * these prefixes will be used for terms without a field specifier.
* this and also specify the @c default_prefix parameter to * If you do this and also specify the @c default_prefix parameter to
* @c parse_query(), then the @c default_prefix parameter will overrid @c
e. * parse_query(), then the @c default_prefix parameter will override.
*
* If the prefix parameter is empty, then "field:word" will produce th
e
* term "word" (and this can be one of several prefixes for a particul
ar
* field, or for terms without a field specifier).
* *
* If you call @c add_prefix() and @c add_boolean_prefix() for the * If you call @c add_prefix() and @c add_boolean_prefix() for the
* same value of @a field, a @c Xapian::InvalidOperationError exceptio n * same value of @a field, a @c Xapian::InvalidOperationError exceptio n
* will be thrown. * will be thrown.
* *
* In 1.0.3 and earlier, subsequent calls to this method with the same * In 1.0.3 and earlier, subsequent calls to this method with the same
* value of @a field had no effect. * value of @a field had no effect.
* *
* @param field The user visible field name * @param field The user visible field name
* @param prefix The term prefix to map this to * @param prefix The term prefix to map this to
 End of changes. 10 change blocks. 
13 lines changed or deleted 30 lines changed or added


 termiterator.h   termiterator.h 
skipping to change at line 125 skipping to change at line 125
/// Allow use as an STL iterator /// Allow use as an STL iterator
//@{ //@{
typedef std::input_iterator_tag iterator_category; typedef std::input_iterator_tag iterator_category;
typedef std::string value_type; typedef std::string value_type;
typedef Xapian::termcount_diff difference_type; typedef Xapian::termcount_diff difference_type;
typedef std::string * pointer; typedef std::string * pointer;
typedef std::string & reference; typedef std::string & reference;
//@} //@}
}; };
/// Equality test for TermIterator objects.
inline bool inline bool
operator==(const TermIterator &a, const TermIterator &b) operator==(const TermIterator &a, const TermIterator &b)
{ {
return (a.internal.get() == b.internal.get()); return (a.internal.get() == b.internal.get());
} }
/// Inequality test for TermIterator objects.
inline bool inline bool
operator!=(const TermIterator &a, const TermIterator &b) operator!=(const TermIterator &a, const TermIterator &b)
{ {
return !(a == b); return !(a == b);
} }
} }
#endif /* XAPIAN_INCLUDED_TERMITERATOR_H */ #endif /* XAPIAN_INCLUDED_TERMITERATOR_H */
 End of changes. 2 change blocks. 
0 lines changed or deleted 2 lines changed or added


 unicode.h   unicode.h 
skipping to change at line 61 skipping to change at line 61
/** Return the number of bytes left in the iterator's buffer. */ /** Return the number of bytes left in the iterator's buffer. */
size_t left() const { return p ? end - p : 0; } size_t left() const { return p ? end - p : 0; }
/** Assign a new string to the iterator. /** Assign a new string to the iterator.
* *
* The iterator will forget the string it was iterating through, and * The iterator will forget the string it was iterating through, and
* return characters from the start of the new string when next called . * return characters from the start of the new string when next called .
* The string is not copied into the iterator, so it must remain valid * The string is not copied into the iterator, so it must remain valid
* while the iteration is in progress. * while the iteration is in progress.
* *
* @param p A pointer to the start of the string to read. * @param p_ A pointer to the start of the string to read.
* *
* @param len The length of the string to read. * @param len The length of the string to read.
*/ */
void assign(const char *p_, size_t len) { void assign(const char *p_, size_t len) {
if (len) { if (len) {
p = reinterpret_cast<const unsigned char*>(p_); p = reinterpret_cast<const unsigned char*>(p_);
end = p + len; end = p + len;
seqlen = 0; seqlen = 0;
} else { } else {
p = NULL; p = NULL;
skipping to change at line 93 skipping to change at line 93
* is in progress. * is in progress.
*/ */
void assign(const std::string &s) { assign(s.data(), s.size()); } void assign(const std::string &s) { assign(s.data(), s.size()); }
/** Create an iterator given a pointer to a null terminated string. /** Create an iterator given a pointer to a null terminated string.
* *
* The iterator will return characters from the start of the string wh en * The iterator will return characters from the start of the string wh en
* next called. The string is not copied into the iterator, so it mus t * next called. The string is not copied into the iterator, so it mus t
* remain valid while the iteration is in progress. * remain valid while the iteration is in progress.
* *
* @param p A pointer to the start of the null terminated string to re ad. * @param p_ A pointer to the start of the null terminated string to r ead.
*/ */
explicit Utf8Iterator(const char *p_); explicit Utf8Iterator(const char *p_);
/** Create an iterator given a pointer and a length. /** Create an iterator given a pointer and a length.
* *
* The iterator will return characters from the start of the string wh en * The iterator will return characters from the start of the string wh en
* next called. The string is not copied into the iterator, so it mus t * next called. The string is not copied into the iterator, so it mus t
* remain valid while the iteration is in progress. * remain valid while the iteration is in progress.
* *
* @param p A pointer to the start of the string to read. * @param p_ A pointer to the start of the string to read.
* *
* @param len The length of the string to read. * @param len The length of the string to read.
*/ */
Utf8Iterator(const char *p_, size_t len) { assign(p_, len); } Utf8Iterator(const char *p_, size_t len) { assign(p_, len); }
/** Create an iterator given a string. /** Create an iterator given a string.
* *
* The iterator will return characters from the start of the string wh en * The iterator will return characters from the start of the string wh en
* next called. The string is not copied into the iterator, so it mus t * next called. The string is not copied into the iterator, so it mus t
* remain valid while the iteration is in progress. * remain valid while the iteration is in progress.
skipping to change at line 182 skipping to change at line 182
/// We implement the semantics of an STL input_iterator. /// We implement the semantics of an STL input_iterator.
//@{ //@{
typedef std::input_iterator_tag iterator_category; typedef std::input_iterator_tag iterator_category;
typedef unsigned value_type; typedef unsigned value_type;
typedef size_t difference_type; typedef size_t difference_type;
typedef const unsigned * pointer; typedef const unsigned * pointer;
typedef const unsigned & reference; typedef const unsigned & reference;
//@} //@}
}; };
/// Functions associated with handling Unicode characters.
namespace Unicode { namespace Unicode {
/** Each Unicode character is in exactly one of these categories. */ /** Each Unicode character is in exactly one of these categories. */
typedef enum { typedef enum {
UNASSIGNED, UNASSIGNED,
UPPERCASE_LETTER, UPPERCASE_LETTER,
LOWERCASE_LETTER, LOWERCASE_LETTER,
TITLECASE_LETTER, TITLECASE_LETTER,
MODIFIER_LETTER, MODIFIER_LETTER,
OTHER_LETTER, OTHER_LETTER,
 End of changes. 4 change blocks. 
3 lines changed or deleted 4 lines changed or added


 valueiterator.h   valueiterator.h 
skipping to change at line 168 skipping to change at line 168
typedef std::string value_type; typedef std::string value_type;
/// @private /// @private
typedef Xapian::doccount_diff difference_type; typedef Xapian::doccount_diff difference_type;
/// @private /// @private
typedef std::string * pointer; typedef std::string * pointer;
/// @private /// @private
typedef std::string & reference; typedef std::string & reference;
// @} // @}
}; };
/// Equality test for ValueIterator objects.
inline bool inline bool
operator==(const ValueIterator &a, const ValueIterator &b) operator==(const ValueIterator &a, const ValueIterator &b)
{ {
// Use a pointer comparison - this ensures both that (a == a) and corre ct // Use a pointer comparison - this ensures both that (a == a) and corre ct
// handling of end iterators (which we ensure have NULL internals). // handling of end iterators (which we ensure have NULL internals).
return a.internal.get() == b.internal.get(); return a.internal.get() == b.internal.get();
} }
/// @internal Equality test for ValueIterator object and end iterator.
inline bool inline bool
operator==(const ValueIterator &a, const ValueIteratorEnd_ &) operator==(const ValueIterator &a, const ValueIteratorEnd_ &)
{ {
return a.internal.get() == NULL; return a.internal.get() == NULL;
} }
/// @internal Equality test for ValueIterator object and end iterator.
inline bool inline bool
operator==(const ValueIteratorEnd_ &a, const ValueIterator &b) operator==(const ValueIteratorEnd_ &a, const ValueIterator &b)
{ {
return b == a; return b == a;
} }
/// @internal Equality test for end iterators.
inline bool inline bool
operator==(const ValueIteratorEnd_ &, const ValueIteratorEnd_ &) operator==(const ValueIteratorEnd_ &, const ValueIteratorEnd_ &)
{ {
return true; return true;
} }
/// Inequality test for ValueIterator objects.
inline bool inline bool
operator!=(const ValueIterator &a, const ValueIterator &b) operator!=(const ValueIterator &a, const ValueIterator &b)
{ {
return !(a == b); return !(a == b);
} }
/// @internal Inequality test for ValueIterator object and end iterator.
inline bool inline bool
operator!=(const ValueIterator &a, const ValueIteratorEnd_ &b) operator!=(const ValueIterator &a, const ValueIteratorEnd_ &b)
{ {
return !(a == b); return !(a == b);
} }
/// @internal Inequality test for ValueIterator object and end iterator.
inline bool inline bool
operator!=(const ValueIteratorEnd_ &a, const ValueIterator &b) operator!=(const ValueIteratorEnd_ &a, const ValueIterator &b)
{ {
return !(a == b); return !(a == b);
} }
/// @internal Inequality test for end iterators.
inline bool inline bool
operator!=(const ValueIteratorEnd_ &a, const ValueIteratorEnd_ &b) operator!=(const ValueIteratorEnd_ &a, const ValueIteratorEnd_ &b)
{ {
return !(a == b); return !(a == b);
} }
} }
#endif // XAPIAN_INCLUDED_VALUEITERATOR_H #endif // XAPIAN_INCLUDED_VALUEITERATOR_H
 End of changes. 8 change blocks. 
0 lines changed or deleted 8 lines changed or added


 valuesetmatchdecider.h   valuesetmatchdecider.h 
/** \file valuesetmatchdecider.h /** \file valuesetmatchdecider.h
* \brief MatchDecider subclass for filtering results by value. * \brief MatchDecider subclass for filtering results by value.
*/ */
/* Copyright 2008 Lemur Consulting Limited /* Copyright 2008 Lemur Consulting Limited
* Copyright 2008 Olly Betts * Copyright 2008,2009 Olly Betts
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as * modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the * published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version. * License, or (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. * GNU General Public License for more details.
skipping to change at line 56 skipping to change at line 56
/** Whether to include or exclude documents with the specified values. /** Whether to include or exclude documents with the specified values.
* *
* If true, documents with a value in the set are returned. * If true, documents with a value in the set are returned.
* If false, documents with a value not in the set are returned. * If false, documents with a value not in the set are returned.
*/ */
bool inclusive; bool inclusive;
public: public:
/** Construct a ValueSetMatchDecider. /** Construct a ValueSetMatchDecider.
* *
* @param valuenum The value slot number to look in. * @param slot The value slot number to look in.
* *
* @param inclusive If true, match decider accepts documents which hav e a * @param inclusive_ If true, match decider accepts documents which ha ve a
* value in the specified slot which is a member of the test set; if * value in the specified slot which is a member of the test set; if
* false, match decider accepts documents which do not have a value in the * false, match decider accepts documents which do not have a value in the
* specified slot. * specified slot.
*/ */
ValueSetMatchDecider(Xapian::valueno valuenum, bool inclusive); ValueSetMatchDecider(Xapian::valueno slot, bool inclusive_)
: valuenum(slot), inclusive(inclusive_) { }
/** Add a value to the test set. /** Add a value to the test set.
* *
* @param value The value to add to the test set. * @param value The value to add to the test set.
*/ */
void add_value(const std::string& value) void add_value(const std::string& value)
{ {
testset.insert(value); testset.insert(value);
} }
 End of changes. 4 change blocks. 
4 lines changed or deleted 5 lines changed or added


 version.h   version.h 
// version.h: Define preprocesor symbols for the library version. /** @file version.h
// If using GCC, also check the C++ ABI version is compatible with that use * @brief Define preprocesor symbols for the library version
d */
// to build the library.
//
// Copyright (C) 2002,2004,2005,2006,2007,2008,2009 Olly Betts // Copyright (C) 2002,2004,2005,2006,2007,2008,2009 Olly Betts
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as // modify it under the terms of the GNU General Public License as
// published by the Free Software Foundation; either version 2 of the // published by the Free Software Foundation; either version 2 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful // This program is distributed in the hope that it will be useful
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
skipping to change at line 43 skipping to change at line 42
#endif #endif
#ifdef _GLIBCXX_DEBUG #ifdef _GLIBCXX_DEBUG
#error You are compiling with _GLIBCXX_DEBUG defined, but the library #error You are compiling with _GLIBCXX_DEBUG defined, but the library
#error was not compiled with this flag. The settings must match or your #error was not compiled with this flag. The settings must match or your
#error program will not work correctly. #error program will not work correctly.
#endif #endif
#endif #endif
#endif #endif
#define XAPIAN_VERSION "1.1.2" /// The version of Xapian as a C string literal.
#define XAPIAN_VERSION "1.1.3"
/** The major component of the Xapian version.
* E.g. for Xapian 1.0.14 this would be: 1
*/
#define XAPIAN_MAJOR_VERSION 1 #define XAPIAN_MAJOR_VERSION 1
/** The minor component of the Xapian version.
* E.g. for Xapian 1.0.14 this would be: 0
*/
#define XAPIAN_MINOR_VERSION 1 #define XAPIAN_MINOR_VERSION 1
#define XAPIAN_REVISION 2
/** The revision component of the Xapian version.
* E.g. for Xapian 1.0.14 this would be: 14
*/
#define XAPIAN_REVISION 3
/// XAPIAN_HAS_CHERT_BACKEND Defined if the chert backend is enabled.
#define XAPIAN_HAS_CHERT_BACKEND 1 #define XAPIAN_HAS_CHERT_BACKEND 1
/// XAPIAN_HAS_FLINT_BACKEND Defined if the flint backend is enabled.
#define XAPIAN_HAS_FLINT_BACKEND 1 #define XAPIAN_HAS_FLINT_BACKEND 1
/// XAPIAN_HAS_INMEMORY_BACKEND Defined if the inmemory backend is enabled.
#define XAPIAN_HAS_INMEMORY_BACKEND 1 #define XAPIAN_HAS_INMEMORY_BACKEND 1
/// XAPIAN_HAS_REMOTE_BACKEND Defined if the remote backend is enabled.
#define XAPIAN_HAS_REMOTE_BACKEND 1 #define XAPIAN_HAS_REMOTE_BACKEND 1
#endif /* XAPIAN_INCLUDED_VERSION_H */ #endif /* XAPIAN_INCLUDED_VERSION_H */
 End of changes. 8 change blocks. 
7 lines changed or deleted 25 lines changed or added


 visibility.h   visibility.h 
// visibility.h: Define XAPIAN_VISIBILITY macro. /** @file visibility.h
// * @brief Define XAPIAN_VISIBILITY macro.
*/
// Copyright (C) 2007 Olly Betts // Copyright (C) 2007 Olly Betts
// //
// This program is free software; you can redistribute it and/or modify // This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or // the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version. // (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 End of changes. 1 change blocks. 
2 lines changed or deleted 3 lines changed or added


 weight.h   weight.h 
skipping to change at line 74 skipping to change at line 74
/** Allow the subclass to perform any initialisation it needs to. /** Allow the subclass to perform any initialisation it needs to.
* *
* @param factor Any scaling factor (e.g. from OP_SCALE_WEIGHT). * @param factor Any scaling factor (e.g. from OP_SCALE_WEIGHT).
*/ */
virtual void init(double factor) = 0; virtual void init(double factor) = 0;
private: private:
/// Don't allow assignment. /// Don't allow assignment.
void operator=(const Weight &); void operator=(const Weight &);
/** Clone this object.
*
* This method allocates and returns a copy of the object it is called
on.
*
* If your subclass is called FooWeight and has parameters a and b, th
en
* you would implement FooWeight::clone() like so:
*
* FooWeight * FooWeight::clone() const { return new FooWeight(a, b);
}
*
* Note that the returned object will be deallocated by Xapian after u
se
* with "delete". It must therefore have been allocated with "new".
*/
virtual Weight * clone() const = 0;
/// A bitmask of the statistics this weighting scheme needs. /// A bitmask of the statistics this weighting scheme needs.
stat_flags stats_needed; stat_flags stats_needed;
/// The number of documents in the collection. /// The number of documents in the collection.
Xapian::doccount collection_size_; Xapian::doccount collection_size_;
/// The number of documents marked as relevant. /// The number of documents marked as relevant.
Xapian::doccount rset_size_; Xapian::doccount rset_size_;
/// The average length of a document in the collection. /// The average length of a document in the collection.
skipping to change at line 127 skipping to change at line 113
/// An upper bound on the wdf of this term. /// An upper bound on the wdf of this term.
Xapian::termcount wdf_upper_bound_; Xapian::termcount wdf_upper_bound_;
public: public:
class Internal; class Internal;
/** Virtual destructor, because we have virtual methods. */ /** Virtual destructor, because we have virtual methods. */
virtual ~Weight(); virtual ~Weight();
/** Clone this object.
*
* This method allocates and returns a copy of the object it is called
on.
*
* If your subclass is called FooWeight and has parameters a and b, th
en
* you would implement FooWeight::clone() like so:
*
* FooWeight * FooWeight::clone() const { return new FooWeight(a, b);
}
*
* Note that the returned object will be deallocated by Xapian after u
se
* with "delete". It must therefore have been allocated with "new".
*/
virtual Weight * clone() const = 0;
/** Return the name of this weighting scheme. /** Return the name of this weighting scheme.
* *
* This name is used by the remote backend. It is passed with the * This name is used by the remote backend. It is passed along with t he
* serialised parameters to the remote server so that it knows which c lass * serialised parameters to the remote server so that it knows which c lass
* to create. * to create.
* *
* Return the full namespace-qualified name of your class here - if * Return the full namespace-qualified name of your class here - if
* your class is called FooWeight, return "FooWeight" from this method * your class is called FooWeight, return "FooWeight" from this method
* (Xapian::BM25Weight returns "Xapian::BM25Weight" here). * (Xapian::BM25Weight returns "Xapian::BM25Weight" here).
* *
* If you don't want to support the remote backend in your weighting * If you don't want to support the remote backend, you can use the
* scheme, you can just implement this to throw * default implementation which simply returns an empty string.
* Xapian::UnimplementedError.
*/ */
virtual std::string name() const = 0; virtual std::string name() const;
/** Return this object's parameters serialised as a single string. /** Return this object's parameters serialised as a single string.
* *
* If you don't want to support the remote backend in your weighting * If you don't want to support the remote backend, you can use the
* scheme, you can just implement this to throw * default implementation which simply throws Xapian::UnimplementedErr
* Xapian::UnimplementedError. or.
*/ */
virtual std::string serialise() const = 0; virtual std::string serialise() const;
/** Unserialise parameters. /** Unserialise parameters.
* *
* This method unserialises parameters serialised by the @a serialise( ) * This method unserialises parameters serialised by the @a serialise( )
* method and allocates and returns a new object initialised with them . * method and allocates and returns a new object initialised with them .
* *
* If you don't want to support the remote backend in your weighting * If you don't want to support the remote backend, you can use the
* scheme, you can just implement this to throw * default implementation which simply throws Xapian::UnimplementedErr
* Xapian::UnimplementedError. or.
* *
* Note that the returned object will be deallocated by Xapian after u se * Note that the returned object will be deallocated by Xapian after u se
* with "delete". It must therefore have been allocated with "new". * with "delete". It must therefore have been allocated with "new".
*/ */
virtual Weight * unserialise(const std::string & s) const = 0; virtual Weight * unserialise(const std::string & s) const;
/** Calculate the weight contribution for this object's term to a docum ent. /** Calculate the weight contribution for this object's term to a docum ent.
* *
* The parameters give information about the document which may be use d * The parameters give information about the document which may be use d
* in the calculations: * in the calculations:
* *
* @param wdf The within document frequency of the term in the docu ment. * @param wdf The within document frequency of the term in the docu ment.
* @param doclen The document's length (unnormalised). * @param doclen The document's length (unnormalised).
*/ */
virtual Xapian::weight get_sumpart(Xapian::termcount wdf, virtual Xapian::weight get_sumpart(Xapian::termcount wdf,
skipping to change at line 200 skipping to change at line 197
virtual Xapian::weight get_sumextra(Xapian::termcount doclen) const = 0 ; virtual Xapian::weight get_sumextra(Xapian::termcount doclen) const = 0 ;
/** Return an upper bound on what get_sumextra() can return for any /** Return an upper bound on what get_sumextra() can return for any
* document. * document.
* *
* This information is used by the matcher to perform various * This information is used by the matcher to perform various
* optimisations, so strive to make the bound as tight as possible. * optimisations, so strive to make the bound as tight as possible.
*/ */
virtual Xapian::weight get_maxextra() const = 0; virtual Xapian::weight get_maxextra() const = 0;
/** @private @internal Helper method for cloning Xapian::Weight objects
.
*
* This avoids us having to forward-declare internal classes in the
* external API headers in order to make them friends of Xapian::Weigh
t.
*
* You should not call this method from your own code.
*/
Weight * clone_() const { return clone(); }
/** @private @internal Initialise this object to calculate weights for term /** @private @internal Initialise this object to calculate weights for term
* @a term. * @a term.
* *
* @param stats Source of statistics. * @param stats Source of statistics.
* @param query_len_ Query length. * @param query_len_ Query length.
* @param term The term for the new object. * @param term The term for the new object.
* @param wqf_ The within-query-frequency of @a term. * @param wqf_ The within-query-frequency of @a term.
* @param factor Any scaling factor (e.g. from OP_SCALE_WEIGHT). * @param factor Any scaling factor (e.g. from OP_SCALE_WEIGHT).
*/ */
void init_(const Internal & stats, Xapian::termcount query_len_, void init_(const Internal & stats, Xapian::termcount query_len_,
 End of changes. 10 change blocks. 
42 lines changed or deleted 30 lines changed or added


 xapian.h   xapian.h 
skipping to change at line 48 skipping to change at line 48
#include <xapian/postingiterator.h> #include <xapian/postingiterator.h>
#include <xapian/termiterator.h> #include <xapian/termiterator.h>
#include <xapian/valueiterator.h> #include <xapian/valueiterator.h>
// Indexing // Indexing
#include <xapian/termgenerator.h> #include <xapian/termgenerator.h>
// Searching // Searching
#include <xapian/enquire.h> #include <xapian/enquire.h>
#include <xapian/expanddecider.h> #include <xapian/expanddecider.h>
#include <xapian/keymaker.h>
#include <xapian/matchspy.h>
#include <xapian/postingsource.h> #include <xapian/postingsource.h>
#include <xapian/query.h> #include <xapian/query.h>
#include <xapian/queryparser.h> #include <xapian/queryparser.h>
#include <xapian/sorter.h>
#include <xapian/valuesetmatchdecider.h> #include <xapian/valuesetmatchdecider.h>
#include <xapian/weight.h> #include <xapian/weight.h>
// Stemming // Stemming
#include <xapian/stem.h> #include <xapian/stem.h>
// Serialisation support // Subclass registry
#include <xapian/serialisationcontext.h> #include <xapian/registry.h>
// Unicode support // Unicode support
#include <xapian/unicode.h> #include <xapian/unicode.h>
// ELF visibility annotations for GCC. // ELF visibility annotations for GCC.
#include <xapian/visibility.h> #include <xapian/visibility.h>
/// The Xapian namespace contains public interfaces for the Xapian library.
namespace Xapian {
// Functions returning library version: // Functions returning library version:
namespace Xapian {
/** Report the version string of the library which the program is linked wi th. /** Report the version string of the library which the program is linked wi th.
* *
* This may be different to the version compiled against (given by * This may be different to the version compiled against (given by
* XAPIAN_VERSION) if shared libraries are being used. * XAPIAN_VERSION) if shared libraries are being used.
*/ */
XAPIAN_VISIBILITY_DEFAULT XAPIAN_VISIBILITY_DEFAULT
const char * version_string(); const char * version_string();
/** Report the major version of the library which the program is linked to. /** Report the major version of the library which the program is linked wit h.
* *
* This may be different to the version compiled against (given by * This may be different to the version compiled against (given by
* XAPIAN_MAJOR_VERSION) if shared libraries are being used. * XAPIAN_MAJOR_VERSION) if shared libraries are being used.
*/ */
XAPIAN_VISIBILITY_DEFAULT XAPIAN_VISIBILITY_DEFAULT
int major_version(); int major_version();
/** Report the minor version of the library which the program is linked to. /** Report the minor version of the library which the program is linked wit h.
* *
* This may be different to the version compiled against (given by * This may be different to the version compiled against (given by
* XAPIAN_MINOR_VERSION) if shared libraries are being used. * XAPIAN_MINOR_VERSION) if shared libraries are being used.
*/ */
XAPIAN_VISIBILITY_DEFAULT XAPIAN_VISIBILITY_DEFAULT
int minor_version(); int minor_version();
/** Report the revision of the library which the program is linked to. /** Report the revision of the library which the program is linked with.
* *
* This may be different to the version compiled against (given by * This may be different to the version compiled against (given by
* XAPIAN_REVISION) if shared libraries are being used. * XAPIAN_REVISION) if shared libraries are being used.
*/ */
XAPIAN_VISIBILITY_DEFAULT XAPIAN_VISIBILITY_DEFAULT
int revision(); int revision();
} }
#endif /* XAPIAN_INCLUDED_XAPIAN_H */ #endif /* XAPIAN_INCLUDED_XAPIAN_H */
 End of changes. 8 change blocks. 
7 lines changed or deleted 10 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/