시계
1656 단어 live555
1. static HashTable* create(int keyType)를 만듭니다.
// :key
HashTable* HashTable::create(int keyType)
{
//new HashTable BasicHashTable
// BasicHashTable
return new BasicHashTable(keyType);
}
BasicHashTable
2.HashTable의 Add 함수는 순허함수로 파생된 클래스BasicHashTable에서 실현된다
// value , NULL
void* BasicHashTable::Add(char const* key, void* value)
{
void* oldValue;
unsigned index;
// key index , index , TableEntry
TableEntry* entry = lookupKey(key, index);
//TableEntry
if (entry != NULL)
{
oldValue = entry->value;
} else
{
// entry ,
entry = insertNewEntry(index, key);
oldValue = NULL;
}
//
entry->value = value;
// TableEntry , buckets
if (fNumEntries >= fRebuildSize)
rebuild();
return oldValue;
}
3. HashTable의 Remove 함수는 순허함수로 파생된 클래스BasicHashTable에서virtual Boolean Remove(char const*key)를 실현한다.
//
Boolean BasicHashTable::Remove(char const* key)
{
unsigned index;
// key index , index , TableEntry
TableEntry* entry = lookupKey(key, index);
// TableEntry, False
if (entry == NULL)
return False; // no such entry
// entry
deleteEntry(index, entry);
return True;
}
4. HashTable의 Lookup 함수는 순허함수로 파생된 클래스BasicHashTable에서virtual void* Lookup(char const* key)const를 실현한다.
// key, value, NULL
void* BasicHashTable::Lookup(char const* key) const
{
unsigned index;
TableEntry* entry = lookupKey(key, index);
if (entry == NULL) return NULL; // no such entry
return entry->value;
}