xapian-core 2.0.0

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:
[legend]

## Public Member Functions
| RangeProcessor ()
| Default constructor.
| RangeProcessor (Xapian::valueno slot_, std::string_view str_={}, 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.
RangeProcessor * | release ()
| Start reference counting this object.
const RangeProcessor * | release () 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_,
|  | std::string_view | str_ = {},
|  | unsigned | flags_ = 0 )
| inline explicit

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, or only on the non-empty end - e.g. $1..$10, ..$10, 5m..50m, or 5m... By default a prefix is only checked for on the start (e.g. date:1/1/1980..31/12/1989 or date:..31/12/1989), and a suffix only on the end (e.g. 2..12kg or 2..kg).

## 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::DateRangeProcessor, Xapian::NumberRangeProcessor, and Xapian::UnitRangeProcessor.

## ◆ 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).

Referenced by RangeProcessor().

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

Referenced by RangeProcessor().

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

- xapian/queryparser.h