시계

1656 단어 live555
전재 대상:https://www.acodelife.cn/index.php/category/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;
}

좋은 웹페이지 즐겨찾기