Mercurial > ~dholland > hg > ag > index.cgi
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