blob: f60806a1a4686c32d615fad04075c67a25576ca6 [file] [log] [blame]
/*------------------------------------------------------------------------------
* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
*
* Distributable under the terms of either the Apache License (Version 2.0) or
* the GNU Lesser General Public License, as specified in the COPYING file.
------------------------------------------------------------------------------*/
#ifndef _lucene_search_FilteredTermEnum_
#define _lucene_search_FilteredTermEnum_
#if defined(_LUCENE_PRAGMA_ONCE)
# pragma once
#endif
#include "CLucene/index/Term.h"
#include "CLucene/index/Terms.h"
CL_NS_DEF(search)
//FilteredTermEnum is an abstract class for enumerating a subset of all terms.
//
//Term enumerations are always ordered by term->compareTo(). Each term in
//the enumeration is greater than all that precede it.
class FilteredTermEnum: public CL_NS(index)::TermEnum {
public:
//Constructor
FilteredTermEnum();
//Destructor
virtual ~FilteredTermEnum();
//Equality measure on the term
virtual qreal difference() = 0;
//Returns the docFreq of the current Term in the enumeration.
int32_t docFreq() const ;
//Increments the enumeration to the next element
bool next() ;
//Returns a pointer to the current Term in the enumeration.
CL_NS(index)::Term* term();
CL_NS(index)::Term* term(bool pointer);
//Closes the enumeration to further activity, freeing resources.
void close();
protected:
//Equality compare on the term */
virtual bool termCompare(CL_NS(index)::Term* term) = 0;
//Indiciates the end of the enumeration has been reached
virtual bool endEnum() = 0;
void setEnum(CL_NS(index)::TermEnum* actualEnum) ;
private:
CL_NS(index)::Term* currentTerm;
CL_NS(index)::TermEnum* actualEnum;
};
CL_NS_END
#endif