summaryrefslogtreecommitdiffstats
path: root/debian/htdig/htdig-3.2.0b6/htword/WordCursorOne.h
diff options
context:
space:
mode:
Diffstat (limited to 'debian/htdig/htdig-3.2.0b6/htword/WordCursorOne.h')
-rw-r--r--debian/htdig/htdig-3.2.0b6/htword/WordCursorOne.h163
1 files changed, 163 insertions, 0 deletions
diff --git a/debian/htdig/htdig-3.2.0b6/htword/WordCursorOne.h b/debian/htdig/htdig-3.2.0b6/htword/WordCursorOne.h
new file mode 100644
index 00000000..133ef59c
--- /dev/null
+++ b/debian/htdig/htdig-3.2.0b6/htword/WordCursorOne.h
@@ -0,0 +1,163 @@
+//
+// WordCursorOne.h
+//
+// NAME
+//
+// search and retrieve entries in a WordListOne object.
+//
+// SYNOPSIS
+//
+// #include <WordList.h>
+//
+// int callback(WordList *, WordDBCursor& , const WordReference *, Object &)
+// {
+// ...
+// }
+//
+// Object* data = ...
+//
+// WordList *words = ...;
+//
+// WordCursor *search = words->Cursor(callback, data);
+// WordCursor *search = words->Cursor(WordKey("word <UNDEF> <UNDEF>"));
+// WordCursor *search = words->Cursor(WordKey("word <UNDEF> <UNDEF>"), callback, data);
+// WordCursor *search = words->Cursor(WordKey());
+//
+// ...
+//
+// if(search->Walk() == NOTOK) bark;
+// List* results = search->GetResults();
+//
+// search->WalkInit();
+// if(search->WalkNext() == OK)
+// dosomething(search->GetFound());
+// search->WalkFinish();
+//
+// DESCRIPTION
+//
+// WordCursorOne is a WordCursor derived class that implements search
+// in a WordListOne object. It currently is the only derived class of
+// the WordCursor object. Most of its behaviour is described in the
+// WordCursor manual page, only the behaviour specific to WordCursorOne
+// is documented here.
+//
+//
+// END
+//
+// Part of the ht://Dig package <http://www.htdig.org/>
+// Copyright (c) 1999-2004 The ht://Dig Group
+// For copyright details, see the file COPYING in your distribution
+// or the GNU Library General Public License (LGPL) version 2 or later
+// <http://www.gnu.org/copyleft/lgpl.html>
+//
+// $Id: WordCursorOne.h,v 1.4 2004/05/28 13:15:26 lha Exp $
+//
+
+#ifndef _WordCursorOne_h_
+#define _WordCursorOne_h_
+
+#ifndef SWIG
+#include "htString.h"
+#include "WordKey.h"
+#include "WordDB.h"
+#include "WordCursor.h"
+
+class WordList;
+class WordDBCursor;
+#endif /* SWIG */
+
+class WordCursorOne : public WordCursor
+{
+ public:
+#ifndef SWIG
+ //-
+ // Private constructor. Creator of the object must then call Initialize()
+ // prior to using any other methods.
+ //
+ WordCursorOne(WordList *words);
+ //-
+ // Private constructor. See WordList::Cursor method with same prototype for
+ // description.
+ //
+ WordCursorOne(WordList *words, wordlist_walk_callback_t callback, Object * callback_data);
+ //-
+ // Private constructor. See WordList::Cursor method with same prototype for
+ // description.
+ //
+ WordCursorOne(WordList *words, const WordKey &searchKey, int action = HTDIG_WORDLIST_WALKER);
+ //-
+ // Private constructor. See WordList::Cursor method with same prototype for
+ // description.
+ //
+ WordCursorOne(WordList *words, const WordKey &searchKey, wordlist_walk_callback_t callback, Object * callback_data);
+#endif /* SWIG */
+ virtual ~WordCursorOne() {
+ if(cursor) delete cursor;
+ }
+ virtual void Clear();
+ virtual void ClearInternal();
+ virtual void ClearResult();
+
+ virtual inline int ContextSave(String& buffer) const { found.Get(buffer); return OK; }
+ virtual int ContextRestore(const String& buffer);
+
+#ifndef SWIG
+ virtual int Walk();
+#endif /* SWIG */
+ virtual int WalkInit();
+ virtual int WalkRewind();
+ virtual int WalkNext();
+#ifndef SWIG
+ virtual int WalkNextStep();
+#endif /* SWIG */
+ virtual int WalkFinish();
+ //
+ // Find out if cursor should better jump to the next possible key
+ // (DB_SET_RANGE) instead of sequential iterating (DB_NEXT). If it
+ // is decided that jump is a better move : cursor_set_flags =
+ // DB_SET_RANGE key = calculated next possible key Else do nothing
+ // Return OK if skipping successfull. Returns WORD_WALK_ATEND if no
+ // more possible match, reached the maximum. Returns
+ // WORD_WALK_FAILED on general failure, occurs if called and no
+ // skipping necessary.
+ //
+ int SkipUselessSequentialWalking();
+
+ virtual int Seek(const WordKey& patch);
+
+#ifndef SWIG
+ virtual int Get(String& bufferout) const;
+ inline String Get() const { String tmp; Get(tmp); return tmp; }
+
+ protected:
+
+ int Initialize(WordList *nwords, const WordKey &nsearchKey, wordlist_walk_callback_t ncallback, Object * ncallback_data, int naction);
+
+ //
+ // Internal state
+ //
+ //
+ // The actual Berkeley DB cursor.
+ //
+ WordDBCursor* cursor;
+ //
+ // The latest retrieved key and data
+ //
+ String key;
+ String data;
+ //
+ // The shorted prefix key computed from searchKey
+ //
+ WordKey prefixKey;
+ //
+ // WalkNext leap is either DB_NEXT or DB_SET_RANGE.
+ //
+ int cursor_get_flags;
+ //
+ // True if search key is a prefix key
+ //
+ int searchKeyIsSameAsPrefix;
+#endif /* SWIG */
+};
+
+#endif /* _WordCursorOne_h_ */