xapian-core 1.4.18

Public Member Functions | Protected Attributes | List of all members
Xapian::RangeProcessor Class Reference

Base class for range processors. More...

Inheritance diagram for Xapian::RangeProcessor:
[legend]

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

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

## 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

  begin | The start of the range as specified in the query string by the user.
  end | The 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::NumberRangeProcessor, and Xapian::DateRangeProcessor.

Referenced by Xapian::QueryParser::add_valuerangeprocessor().

## ◆ release() [1/2]

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

Start reference counting this object.

You can hand 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 hand 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:

- xapian/queryparser.h