mirror of
https://github.com/thunderbrewhq/squall.git
synced 2026-02-04 00:49:08 +00:00
chore(hash): clean up TSHashTable functions
This commit is contained in:
parent
efc52d4831
commit
fe35b03cb7
1 changed files with 12 additions and 36 deletions
|
|
@ -95,8 +95,8 @@ void TSHashTable<T, TKey>::GrowListArray(uint32_t newarraysize) {
|
||||||
TSExplicitList<T, 0xDDDDDDDD> templist;
|
TSExplicitList<T, 0xDDDDDDDD> templist;
|
||||||
templist.ChangeLinkOffset(linkOffset);
|
templist.ChangeLinkOffset(linkOffset);
|
||||||
for (uint32_t i = 0; i < slotmask; i++) {
|
for (uint32_t i = 0; i < slotmask; i++) {
|
||||||
for (T* ptr = this->m_slotlistarray[i].Head(); ptr; ptr = this->m_slotlistarray[i].Head()) {
|
while (T* ptr = this->m_slotlistarray[i].Head()) {
|
||||||
templist.LinkNode(ptr, 2, 0);
|
templist.LinkToTail(ptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -106,9 +106,9 @@ void TSHashTable<T, TKey>::GrowListArray(uint32_t newarraysize) {
|
||||||
}
|
}
|
||||||
|
|
||||||
this->m_slotmask = newarraysize - 1;
|
this->m_slotmask = newarraysize - 1;
|
||||||
for (T* ptr = templist.Head(); ptr; ptr = templist.Head()) {
|
while (T* ptr = templist.Head()) {
|
||||||
auto& slot = this->m_slotlistarray[this->ComputeSlot(ptr->m_hashval)];
|
auto& slot = this->m_slotlistarray[this->ComputeSlot(ptr->m_hashval)];
|
||||||
slot.LinkNode(ptr, 2, 0);
|
slot.LinkToTail(ptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -271,25 +271,13 @@ T* TSHashTable<T, TKey>::Ptr(const char* str) {
|
||||||
|
|
||||||
uint32_t hashval = SStrHashHT(str);
|
uint32_t hashval = SStrHashHT(str);
|
||||||
|
|
||||||
uint32_t slot = this->ComputeSlot(hashval);
|
for (T* ptr = this->m_slotlistarray[this->ComputeSlot(hashval)].Head(); reinterpret_cast<intptr_t>(ptr) > 0; ptr = this->m_slotlistarray[this->ComputeSlot(hashval)].RawNext(ptr)) {
|
||||||
auto slotlist = &this->m_slotlistarray[slot];
|
if (ptr->m_hashval == hashval && ptr->m_key == str) {
|
||||||
|
|
||||||
T* ptr = slotlist->Head();
|
|
||||||
if (!ptr) {
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (ptr->m_hashval != hashval || !(ptr->m_key == str)) {
|
|
||||||
uint32_t slotIdx = this->ComputeSlot(hashval);
|
|
||||||
auto v9 = &this->m_slotlistarray[slotIdx];
|
|
||||||
ptr = v9->RawNext(ptr);
|
|
||||||
|
|
||||||
if (reinterpret_cast<intptr_t>(ptr) <= 0) {
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
template <class T, class TKey>
|
template <class T, class TKey>
|
||||||
T* TSHashTable<T, TKey>::Ptr(uint32_t hashval, const TKey& key) {
|
T* TSHashTable<T, TKey>::Ptr(uint32_t hashval, const TKey& key) {
|
||||||
|
|
@ -297,25 +285,13 @@ T* TSHashTable<T, TKey>::Ptr(uint32_t hashval, const TKey& key) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t slot = this->ComputeSlot(hashval);
|
for (T* ptr = this->m_slotlistarray[this->ComputeSlot(hashval)].Head(); reinterpret_cast<intptr_t>(ptr) > 0; ptr = this->m_slotlistarray[this->ComputeSlot(hashval)].RawNext(ptr)) {
|
||||||
auto slotlist = &this->m_slotlistarray[slot];
|
if (ptr->m_hashval == hashval && ptr->m_key == key) {
|
||||||
|
|
||||||
T* ptr = slotlist->Head();
|
|
||||||
|
|
||||||
if (!ptr) {
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (ptr->m_hashval != hashval || !(ptr->m_key == key)) {
|
|
||||||
ptr = slotlist->RawNext(ptr);
|
|
||||||
|
|
||||||
if (reinterpret_cast<intptr_t>(ptr) <= 0) {
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
template <class T, class TKey>
|
template <class T, class TKey>
|
||||||
void TSHashTable<T, TKey>::Unlink(T* ptr) {
|
void TSHashTable<T, TKey>::Unlink(T* ptr) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue