diff oldclasslib/include/strdict.h @ 0:13d2b8934445

Import AnaGram (near-)release tree into Mercurial.
author David A. Holland
date Sat, 22 Dec 2007 17:52:45 -0500
parents
children 607e3be6bad8
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/oldclasslib/include/strdict.h	Sat Dec 22 17:52:45 2007 -0500
@@ -0,0 +1,81 @@
+/*
+ * AnaGram, a System for Syntax Directed Programmng
+ * String Dictionary Class Definition
+ *
+ * Copyright 1993 Parsifal Software. All Rights Reserved.
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty.  In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ *    claim that you wrote the original software. If you use this software
+ *    in a product, an acknowledgment in the product documentation would be
+ *    appreciated but is not required.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
+ */
+
+#ifndef STRDICT_H
+#define STRDICT_H
+
+class string_dictionary {
+  unsigned *sxs;                 // Storage for string indices
+  char *cs;                      // Storage for character strings
+  unsigned csx;                  // Next available location in cs
+  unsigned csxmax;               // Size of cs
+  unsigned ns;                   // Number of strings in dictionary
+  unsigned nsmax;                // Max number of strings
+  unsigned *ht;                  // Hash table storage
+  unsigned htl;                  // Size of hash table
+  unsigned htmask;               // Hash table mask
+  unsigned hash(const char *);   // Hash function
+  unsigned n_calls;              // Number of calls
+  unsigned n_collisions;         // Number of collisions
+  int copy_flag;                 // Is it live or is it memorex?
+public:
+
+
+// Constructors
+
+  string_dictionary(unsigned size, unsigned word_length = 10);
+
+  string_dictionary(string_dictionary &);
+
+
+// Destructor
+
+  ~string_dictionary();
+
+
+// Reset String Dictionary
+
+  friend string_dictionary &reset(string_dictionary &);
+
+
+// Enter a String in Dictionary
+
+  unsigned operator << (const char *);   // Insert string
+
+
+// Look up a String in Dictionary
+
+  unsigned operator [] (const char *);   // Look up string
+
+
+// Recover String from Dictionary Index
+
+  char * operator [] (unsigned);   // Find string
+
+
+// Find Number of Entries in Dictionary
+
+  friend unsigned size(string_dictionary &);
+};
+
+#endif