summaryrefslogtreecommitdiffstats
path: root/debian/htdig/htdig-3.2.0b6/htlib/Dictionary.h
diff options
context:
space:
mode:
Diffstat (limited to 'debian/htdig/htdig-3.2.0b6/htlib/Dictionary.h')
-rw-r--r--debian/htdig/htdig-3.2.0b6/htlib/Dictionary.h99
1 files changed, 99 insertions, 0 deletions
diff --git a/debian/htdig/htdig-3.2.0b6/htlib/Dictionary.h b/debian/htdig/htdig-3.2.0b6/htlib/Dictionary.h
new file mode 100644
index 00000000..8ff6cf1c
--- /dev/null
+++ b/debian/htdig/htdig-3.2.0b6/htlib/Dictionary.h
@@ -0,0 +1,99 @@
+//
+// Dictionary.h
+//
+// Dictionary: This class provides an object lookup table.
+// Each object in the dictionary is indexed with a string.
+// The objects can be returned by mentioning their
+// string index.
+//
+// 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: Dictionary.h,v 1.10 2004/05/28 13:15:20 lha Exp $
+//
+
+#ifndef _Dictionary_h_
+#define _Dictionary_h_
+
+#include "Object.h"
+#include "htString.h"
+#include "List.h"
+
+class Dictionary;
+class DictionaryEntry;
+
+class DictionaryCursor {
+ public:
+ //
+ // Support for the Start_Get and Get_Next routines
+ //
+ int currentTableIndex;
+ DictionaryEntry *currentDictionaryEntry;
+};
+
+class Dictionary : public Object
+{
+public:
+ //
+ // Construction/Destruction
+ //
+ Dictionary();
+ Dictionary(const Dictionary& other);
+ Dictionary(int initialCapacity);
+ Dictionary(int initialCapacity, float loadFactor);
+ ~Dictionary();
+
+ //
+ // Adding and deleting items to and from the dictionary
+ //
+ void Add(const String& name, Object *obj);
+ int Remove(const String& name);
+
+ //
+ // Searching can be done with the Find() member of the array indexing
+ // operator
+ //
+ Object *Find(const String& name) const;
+ Object *operator[](const String& name) const;
+ int Exists(const String& name) const;
+
+ //
+ // We want to be able to go through all the entries in the
+ // dictionary in sequence. To do this, we have the same
+ // traversal interface as the List class
+ //
+ void Start_Get() { Start_Get(cursor); }
+ void Start_Get(DictionaryCursor& cursor) const;
+ //
+ // Get the next key
+ //
+ char *Get_Next() { return Get_Next(cursor); }
+ char *Get_Next(DictionaryCursor& cursor) const;
+ //
+ // Get the next entry
+ //
+ Object *Get_NextElement() { return Get_NextElement(cursor); }
+ Object *Get_NextElement(DictionaryCursor& cursor) const;
+ void Release();
+ void Destroy();
+ int Count() const { return count; }
+
+private:
+ DictionaryEntry **table;
+ int tableLength;
+ int initialCapacity;
+ int count;
+ int threshold;
+ float loadFactor;
+
+ DictionaryCursor cursor;
+
+ void rehash();
+ void init(int, float);
+ unsigned int hashCode(const char *key) const;
+};
+
+#endif