xapian-core  1.4.27
Public Member Functions | Protected Attributes | List of all members
Xapian::RangeProcessor Class Reference

Base class for range processors. More...

#include <queryparser.h>

+ Inheritance diagram for Xapian::RangeProcessor:

Public Member Functions

 RangeProcessor ()
 Default constructor.
 
 RangeProcessor (Xapian::valueno slot_, const std::string &str_=std::string(), unsigned flags_=0)
 Constructor.
 
virtual ~RangeProcessor ()
 Destructor.
 
Xapian::Query check_range (const std::string &b, const std::string &e)
 Check prefix/suffix on range.
 
virtual Xapian::Query operator() (const std::string &begin, const std::string &end)
 Check for a valid range of this type.
 
RangeProcessorrelease ()
 Start reference counting this object.
 
const RangeProcessorrelease () const
 Start reference counting this object.
 

Protected Attributes

Xapian::valueno slot
 The value slot to process.
 
std::string str
 The prefix (or suffix with RP_SUFFIX) string to look for.
 
unsigned flags
 Flags.
 

Detailed Description

Base class for range processors.

Constructor & Destructor Documentation

◆ RangeProcessor()

Xapian::RangeProcessor::RangeProcessor ( Xapian::valueno  slot_,
const std::string &  str_ = std::string(),
unsigned  flags_ = 0 
)
inlineexplicit

Constructor.

Parameters
slot_Which value slot to generate ranges over.
str_A string to look for to recognise values as belonging to this range (as a prefix by default, or as a suffix if flags Xapian::RP_SUFFIX is specified).
flags_Zero or more of the following flags, combined with bitwise-or (| in C++):
  • Xapian::RP_SUFFIX - require str_ as a suffix instead of a prefix.
  • Xapian::RP_REPEATED - optionally allow str_ on both ends of the range - e.g. $1..$10 or 5m..50m. By default a prefix is only checked for on the start (e.g. date:1/1/1980..31/12/1989), and a suffix only on the end (e.g. 2..12kg).

Member Function Documentation

◆ check_range()

Xapian::Query Xapian::RangeProcessor::check_range ( const std::string &  b,
const std::string &  e 
)

Check prefix/suffix on range.

If they match, remove the prefix/suffix and then call operator()() to try to handle the range.

◆ operator()()

virtual Xapian::Query Xapian::RangeProcessor::operator() ( const std::string &  begin,
const std::string &  end 
)
virtual

Check for a valid range of this type.

Override this method to implement your own range handling.

Parameters
beginThe start of the range as specified in the query string by the user.
endThe end of the range as specified in the query string by the user (empty string for no upper limit).
Returns
An OP_VALUE_RANGE Query object (or if end.empty(), an OP_VALUE_GE Query object). Or if the range isn't one which this object can handle then Xapian::Query(Xapian::Query::OP_INVALID) will be returned.

Reimplemented in Xapian::DateRangeProcessor, and Xapian::NumberRangeProcessor.

◆ release() [1/2]

RangeProcessor * Xapian::RangeProcessor::release ( )
inline

Start reference counting this object.

You can transfer ownership of a dynamically allocated RangeProcessor object to Xapian by calling release() and then passing the object to a Xapian method. Xapian will arrange to delete the object once it is no longer required.

◆ release() [2/2]

const RangeProcessor * Xapian::RangeProcessor::release ( ) const
inline

Start reference counting this object.

You can transfer ownership of a dynamically allocated RangeProcessor object to Xapian by calling release() and then passing the object to a Xapian method. Xapian will arrange to delete the object once it is no longer required.

Member Data Documentation

◆ flags

unsigned Xapian::RangeProcessor::flags
protected

Flags.

Bitwise-or (| in C++) of zero or more of the following:

  • Xapian::RP_SUFFIX - require str as a suffix instead of a prefix.
  • Xapian::RP_REPEATED - optionally allow str on both ends of the range - e.g. $1..$10 or 5m..50m. By default a prefix is only checked for on the start (e.g. date:1/1/1980..31/12/1989), and a suffix only on the end (e.g. 2..12kg).

◆ slot

Xapian::valueno Xapian::RangeProcessor::slot
protected

The value slot to process.

If this range processor isn't value-based, it can ignore this member.


The documentation for this class was generated from the following file: