79 lines
2.2 KiB
C++
79 lines
2.2 KiB
C++
/*
|
|
* (C) Copyright The MITRE Corporation 1999 All rights reserved.
|
|
*
|
|
* The contents of this file are subject to the Mozilla Public License
|
|
* Version 1.0 (the "License"); you may not use this file except in
|
|
* compliance with the License. You may obtain a copy of the License at
|
|
* http://www.mozilla.org/MPL/
|
|
*
|
|
* The program provided "as is" without any warranty express or
|
|
* implied, including the warranty of non-infringement and the implied
|
|
* warranties of merchantibility and fitness for a particular purpose.
|
|
* The Copyright owner will not be liable for any damages suffered by
|
|
* you as a result of using the Program. In no event will the Copyright
|
|
* owner be liable for any special, indirect or consequential damages or
|
|
* lost profits even if the Copyright owner has been advised of the
|
|
* possibility of their occurrence.
|
|
*
|
|
* Please see release.txt distributed with this file for more information.
|
|
*
|
|
*/
|
|
|
|
// Tom Kneeland (01/21/2000)
|
|
//
|
|
// Implementation of a simple Hash Table. All objects are stored as
|
|
// MITREObject pointers and hashed using the provided value. Collisions
|
|
// are solved using a linked list for each bin.
|
|
//
|
|
// NOTE: MITREObjects are used for storage to ease destruction. Now the
|
|
// HashTable can clean itself up, all object don't need to be removed
|
|
// manually before the table is destroyed.
|
|
//
|
|
// Modification History:
|
|
// Who When What
|
|
|
|
#ifndef MITRE_HASHTABLE
|
|
#define MITRE_HASHTABLE
|
|
|
|
#include "baseutils.h"
|
|
#include "MITREObject.h"
|
|
|
|
#ifndef NULL
|
|
#define NULL 0
|
|
#endif
|
|
|
|
#define HASHTABLE_SIZE 10
|
|
|
|
class HashTable
|
|
{
|
|
public:
|
|
HashTable();
|
|
~HashTable();
|
|
|
|
//Added the provided object to the hash table. If the item already exists,
|
|
//replace it, and delete the old copy.
|
|
void add(MITREObject* obj, Int32 hashValue);
|
|
|
|
//Locate and Retrieve the specified object based on the provided value.
|
|
MITREObject* retrieve(Int32 hashValue);
|
|
|
|
//Locate, Remove, and Return the specified object based on the provided value.
|
|
MITREObject* remove(Int32 hashValue);
|
|
|
|
private:
|
|
typedef struct _HashItem
|
|
{
|
|
_HashItem* prevItem;
|
|
_HashItem* nextItem;
|
|
Int32 hashValue;
|
|
MITREObject* objPtr;
|
|
}HashItem;
|
|
|
|
|
|
HashItem* table[HASHTABLE_SIZE];
|
|
|
|
HashItem* retrieveHashItem(Int32 hashValue);
|
|
};
|
|
|
|
#endif
|