Logo Search packages:      
Sourcecode: qt4-x11 version File versions

SegmentTermEnum.h

/*------------------------------------------------------------------------------
* 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_index_SegmentTermEnum_
#define _lucene_index_SegmentTermEnum_

#if defined(_LUCENE_PRAGMA_ONCE)
# pragma once
#endif

#include "Terms.h"
#include "FieldInfos.h"
#include "TermInfo.h"

CL_NS_DEF(index)

/**
 * SegmentTermEnum is an enumeration of all Terms and TermInfos
 */
00023 class SegmentTermEnum:public TermEnum{
private:
      Term* _term;            ///points to the current Term in the enumeration
00026       TermInfo* termInfo;     ///points to the TermInfo matching the current Term in the enumeration

00028       bool isIndex;           ///Indicates if the Segment is a an index
00029       bool isClone;           ///Indicates if SegmentTermEnum is an orignal instance or
                              ///a clone of another SegmentTermEnum
      
00032       TCHAR* buffer;                ///The buffer that contains the data read from the Term Infos File
00033       uint32_t bufferLength;  ///Length of the buffer

00035       int32_t format;
      int32_t formatM1SkipInterval;

00038       CL_NS(store)::IndexInput* input;    ///The IndexInput that reads from the Term Infos File
      FieldInfos* fieldInfos; ///contains the Field Infos for the segment
00040       int64_t size;                 ///The size of the enumeration
00041       int64_t position;       ///The position of the current (term) in the enumeration
00042       int64_t indexPointer;
      Term* prev;                   ///The previous current 
00044       int32_t indexInterval;
      int32_t skipInterval;
      
      friend class TermInfosReader;
      friend class SegmentTermDocs;
protected:
      
      /**
       * Constructor. 
       * The instance is created by cloning all properties of clone
       */
      SegmentTermEnum( const SegmentTermEnum& clone);

public:
      ///Constructor
      SegmentTermEnum(CL_NS(store)::IndexInput* i, FieldInfos* fis, const bool isi );
      
      ///Destructor
      ~SegmentTermEnum();

      /**
       * Moves the current of the set to the next in the set
       */
      bool next();

      /**
       * Returns a pointer to the current term. 
       */
      Term* term();
      /**
       * Returns the current term. 
       */
      Term* term(bool pointer);

    /**
       * Scan for Term term without allocating new Terms
       */
      void scanTo(const Term *term);

      /** 
       * Closes the enumeration to further activity, freeing resources. 
       */
      void close();

      /**
       * Returns the document frequency of the current term in the set
       */
      int32_t docFreq() const;

      /**
       * Repositions term and termInfo within the enumeration
       */
      void seek(const int64_t pointer, const int32_t p, Term* t, TermInfo* ti);
      
      /**
       * Returns a clone of the current termInfo
       */
      TermInfo* getTermInfo()const;

      /**
       * Retrieves a clone of termInfo through the reference ti
       */
      void getTermInfo(TermInfo* ti)const;

      /**
       * Returns the freqPointer from the current TermInfo in the enumeration.
       */
      int64_t freqPointer() const;

      /**
       * Returns the proxPointer from the current TermInfo in the enumeration.
       */
      int64_t proxPointer() const;

    /**
       * Returns a clone of this instance
       */
      SegmentTermEnum* clone() const;

      const char* getObjectName(){ return SegmentTermEnum::getClassName(); }
      static const char* getClassName(){ return "SegmentTermEnum"; }

private:
      /**
       * Reads the next term in the enumeration
       */
      Term* readTerm(Term* reuse);
    /** 
       * Instantiate a buffer of length length+1
       */
      void growBuffer(const uint32_t length);

};
CL_NS_END
#endif

Generated by  Doxygen 1.6.0   Back to index