X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=include%2Fhashtable.h;h=ea5dc43729a40fa254aea1a974ac783807866915;hp=0f97edf45371ec30a79da28b27654cb2cc48263c;hb=c00c639073653fac7463a88f2b000f263236550d;hpb=23b7ef994fc5d95fcca6d4ae69abbd5971101262 diff --git a/include/hashtable.h b/include/hashtable.h index 0f97edf..ea5dc43 100644 --- a/include/hashtable.h +++ b/include/hashtable.h @@ -1,87 +1,87 @@ -/* FILE IDENTIFICATION -** -** File Name: hashtable.h -** Author: Kevin Rosenberg -** Purpose: Header file for hash table library -** Date Started: Dec. 2000 -** -** This is part of the CTSim program -** Copyright (C) 1983-2000 Kevin Rosenberg -** -** $Id: hashtable.h,v 1.1 2000/12/27 20:09:19 kevin Exp $ -** -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU General Public License (version 2) as -** published by the Free Software Foundation. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU General Public License for more details. -** -** You should have received a copy of the GNU General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -******************************************************************************/ - -#ifndef HASHTABLE_H -#define HASHTABLE_H - - -class KeywordCodeEntry -{ -private: - std::string m_strKeyword; - int m_iCode; - class KeywordCodeEntry *m_pNext; - - public: - - KeywordCodeEntry (const char* const pszKeyword, int iCode); - - const char* const getKeyword() const - { return m_strKeyword.c_str(); } - - bool matchesKeyword (const char* const pszMatch) const; - - int getCode () const - { return m_iCode; } - - void setCode (int iCode) - { m_iCode = iCode; } - - void setNext (KeywordCodeEntry* pNext) - { m_pNext = pNext; } - - KeywordCodeEntry* getNext () - { return m_pNext; } -}; - - -class KeywordCodeHashTable { -public: - enum { - HASHSIZE = 100, - }; - - KeywordCodeHashTable() - { initTable(); } - - ~KeywordCodeHashTable() - { freeTable(); } - - void installKeywordCode (const char* const pszKeyword, int iCode); - KeywordCodeEntry* lookup (const char* const pszKeyword); - -private: - KeywordCodeEntry* m_hashTable[HASHSIZE]; - - int hash (const char* s); - void initTable (); - void freeTable (); -}; - -#endif - - +/* FILE IDENTIFICATION +** +** File Name: hashtable.h +** Author: Kevin Rosenberg +** Purpose: Header file for hash table library +** Date Started: Dec. 2000 +** +** This is part of the CTSim program +** Copyright (C) 1983-2000 Kevin Rosenberg +** +** $Id: hashtable.h,v 1.2 2001/01/02 16:02:12 kevin Exp $ +** +** +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU General Public License (version 2) as +** published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +** GNU General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program; if not, write to the Free Software +** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +#ifndef HASHTABLE_H +#define HASHTABLE_H + + +class KeywordCodeEntry +{ +private: + std::string m_strKeyword; + int m_iCode; + class KeywordCodeEntry *m_pNext; + + public: + + KeywordCodeEntry (const char* const pszKeyword, int iCode); + + const char* const getKeyword() const + { return m_strKeyword.c_str(); } + + bool matchesKeyword (const char* const pszMatch) const; + + int getCode () const + { return m_iCode; } + + void setCode (int iCode) + { m_iCode = iCode; } + + void setNext (KeywordCodeEntry* pNext) + { m_pNext = pNext; } + + KeywordCodeEntry* getNext () + { return m_pNext; } +}; + + +class KeywordCodeHashTable { +public: + enum { + HASHSIZE = 100, + }; + + KeywordCodeHashTable() + { initTable(); } + + ~KeywordCodeHashTable() + { freeTable(); } + + void installKeywordCode (const char* const pszKeyword, int iCode); + KeywordCodeEntry* lookup (const char* const pszKeyword); + +private: + KeywordCodeEntry* m_hashTable[HASHSIZE]; + + int hash (const char* s); + void initTable (); + void freeTable (); +}; + +#endif + +