// HASHTBL.CPP #ifndef __HASHTBL_CPP #define __HASHTBL_CPP #include "hashtbl.h" #include ///////////////////////////////////////////////////////////////////////////// HashTable::HashTable() { int i; for( i=0; i<27; i++ ) { Table[ i ] = -1; } } inline HashTable::~HashTable() { ; } int HashTable::HashIt( char *ch ) { int hash; hash = toupper( *ch ) - 'A' + 1; return( hash ); } int HashTable::Add( char *Name ) { // RETURN HASH VALUE int i; int hash; hash = HashIt( Name ); if( Table[ hash ] == -1 ) { i = (int) ( *Name - 'A' + 10 ); // i = Addr of Var Table[ hash ] = i; } return( hash ); } int HashTable::Change( char *Name, int Value ) { // RETURN 1 IF CHANGED 0 IF NOT int hash; hash = HashIt( Name ); if( Table[ hash ] != -1 ) { Table[ hash ] = Value; return( 1 ); } else { return( 0 ); } } int HashTable::Delete( char *Name ) { // RETURN 1 IF DELETED, 0 IF NOT int hash; hash = HashIt( Name ); if( Table[ hash ] != -1 ) { Table[ hash ] = -1; return( 1 ); } else { return( 0 ); } } int HashTable::Get( char *Name ) { // RETURN VALUE, -1 IF NOT FOUND int hash; hash = HashIt( Name ); return( Table[ hash ] ); } void HashTable::Print( char *Name ) { int hash; hash = HashIt( Name ); // cout << "\nSEQ-ID\tTYPE\tINT_TYPE LINE-NUM\tINT_VALUE\tSTR_VALUE\n------------------------------------------------------------------"; cout << hash << "\n"; } void HashTable::PrintAll( void ) { cout << "\n CHAR \t MEM-LOC \n------------------------\n"; int i; for( i=1; i<27; i++ ) { cout << " " << (char) (i-1+'A') << "\t " << Table[ i ] << "\n" ; } cout << "\n"; } ///////////////////////////////////////////////////////////////////////////// #endif // __HASHTBL_CPP