summaryrefslogtreecommitdiffstats
path: root/3rdparty/clucene/src/CLucene/index/TermInfosReader.h
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/clucene/src/CLucene/index/TermInfosReader.h')
-rw-r--r--3rdparty/clucene/src/CLucene/index/TermInfosReader.h106
1 files changed, 106 insertions, 0 deletions
diff --git a/3rdparty/clucene/src/CLucene/index/TermInfosReader.h b/3rdparty/clucene/src/CLucene/index/TermInfosReader.h
new file mode 100644
index 000000000..ed202e750
--- /dev/null
+++ b/3rdparty/clucene/src/CLucene/index/TermInfosReader.h
@@ -0,0 +1,106 @@
+/*
+ * 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.
+ *
+ * Changes are Copyright(C) 2007, 2008 by Nokia Corporation and/or its subsidiary(-ies), all rights reserved.
+*/
+#ifndef _lucene_index_TermInfosReader_
+#define _lucene_index_TermInfosReader_
+
+#if defined(_LUCENE_PRAGMA_ONCE)
+# pragma once
+#endif
+
+#include <QtCore/QString>
+
+#include "CLucene/store/Directory.h"
+#include "CLucene/util/ThreadLocal.h"
+#include "SegmentTermEnum.h"
+
+CL_NS_DEF(index)
+
+class FieldInfos;
+class Term;
+class TermInfo;
+class TermInfos;
+class TermInfosWriter;
+
+// PORT STATUS: 365707 (jlucene 1.9)
+// This stores a monotonically increasing set of <Term, TermInfo> pairs in a
+// Directory. Pairs are accessed either by Term or by ordinal position the set.
+class TermInfosReader : LUCENE_BASE
+{
+private:
+ CL_NS(store)::Directory* directory;
+ QString segment;
+ FieldInfos* fieldInfos;
+
+ CL_NS(util)::ThreadLocal<SegmentTermEnum*,
+ CL_NS(util)::Deletor::Object<SegmentTermEnum> > enumerators;
+
+ SegmentTermEnum* getEnum();
+ SegmentTermEnum* origEnum;
+ SegmentTermEnum* indexEnum;
+ int64_t _size;
+
+ Term* indexTerms;
+ int32_t indexTermsLength;
+ TermInfo* indexInfos;
+ int64_t* indexPointers;
+
+ DEFINE_MUTEX(THIS_LOCK)
+
+public:
+ // Reads the TermInfos file(.tis) and eventually the Term Info Index(.tii)
+ TermInfosReader(CL_NS(store)::Directory* dir, const QString& segment,
+ FieldInfos* fis);
+ ~TermInfosReader();
+
+ //Close the enumeration of TermInfos
+ void close();
+
+ //Return the size of the enumeration of TermInfos
+ int64_t size() const;
+
+ int32_t getSkipInterval() {
+ return origEnum->skipInterval; }
+
+ // Returns an enumeration of terms starting at or after the named term.
+ // If no term is specified, an enumeration of all the Terms
+ // and TermInfos in the set is returned.
+ SegmentTermEnum* terms(const Term* term = NULL);
+
+ // Returns the TermInfo for a Term in the set
+ // synchronized
+ TermInfo* get(const Term* term);
+
+private:
+ // Reads the term info index file or .tti file.
+ void ensureIndexIsRead();
+
+ // Returns the offset of the greatest index entry which is less than term.
+ int32_t getIndexOffset(const Term* term);
+
+ // Reposition the current Term and TermInfo to indexOffset
+ void seekEnum(const int32_t indexOffset);
+
+ // Scans the Enumeration of terms for term and returns the corresponding
+ // TermInfo instance if found. The search is started from the current term.
+ TermInfo* scanEnum(const Term* term);
+
+ // Scans the enumeration to the requested position and returns the Term
+ // located at that position
+ Term* scanEnum(const int32_t position);
+
+ // Returns the position of a Term in the set. synchronized
+ int64_t getPosition(const Term* term);
+
+ // Returns the nth term in the set. synchronized
+ Term* get(const int32_t position);
+};
+
+CL_NS_END
+
+#endif