File diff r18781:e1de9a06f7cd → r18782:6453522c2154
src/misc/hashtable.hpp
Show inline comments
 
@@ -21,13 +21,13 @@ struct CHashTableSlotT
 

	
 
	Titem_ *m_pFirst;
 

	
 
	FORCEINLINE CHashTableSlotT() : m_pFirst(NULL) {}
 
	inline CHashTableSlotT() : m_pFirst(NULL) {}
 

	
 
	/** hash table slot helper - clears the slot by simple forgetting its items */
 
	FORCEINLINE void Clear() {m_pFirst = NULL;}
 
	inline void Clear() {m_pFirst = NULL;}
 

	
 
	/** hash table slot helper - linear search for item with given key through the given blob - const version */
 
	FORCEINLINE const Titem_ *Find(const Key& key) const
 
	inline const Titem_ *Find(const Key& key) const
 
	{
 
		for (const Titem_ *pItem = m_pFirst; pItem != NULL; pItem = pItem->GetHashNext()) {
 
			if (pItem->GetKey() == key) {
 
@@ -39,7 +39,7 @@ struct CHashTableSlotT
 
	}
 

	
 
	/** hash table slot helper - linear search for item with given key through the given blob - non-const version */
 
	FORCEINLINE Titem_ *Find(const Key& key)
 
	inline Titem_ *Find(const Key& key)
 
	{
 
		for (Titem_ *pItem = m_pFirst; pItem != NULL; pItem = pItem->GetHashNext()) {
 
			if (pItem->GetKey() == key) {
 
@@ -51,7 +51,7 @@ struct CHashTableSlotT
 
	}
 

	
 
	/** hash table slot helper - add new item to the slot */
 
	FORCEINLINE void Attach(Titem_& new_item)
 
	inline void Attach(Titem_& new_item)
 
	{
 
		assert(new_item.GetHashNext() == NULL);
 
		new_item.SetHashNext(m_pFirst);
 
@@ -59,7 +59,7 @@ struct CHashTableSlotT
 
	}
 

	
 
	/** hash table slot helper - remove item from a slot */
 
	FORCEINLINE bool Detach(Titem_& item_to_remove)
 
	inline bool Detach(Titem_& item_to_remove)
 
	{
 
		if (m_pFirst == &item_to_remove) {
 
			m_pFirst = item_to_remove.GetHashNext();
 
@@ -81,7 +81,7 @@ struct CHashTableSlotT
 
	}
 

	
 
	/** hash table slot helper - remove and return item from a slot */
 
	FORCEINLINE Titem_ *Detach(const Key& key)
 
	inline Titem_ *Detach(const Key& key)
 
	{
 
		/* do we have any items? */
 
		if (m_pFirst == NULL) {
 
@@ -150,13 +150,13 @@ protected:
 

	
 
public:
 
	/* default constructor */
 
	FORCEINLINE CHashTableT() : m_num_items(0)
 
	inline CHashTableT() : m_num_items(0)
 
	{
 
	}
 

	
 
protected:
 
	/** static helper - return hash for the given key modulo number of slots */
 
	FORCEINLINE static int CalcHash(const Tkey& key)
 
	inline static int CalcHash(const Tkey& key)
 
	{
 
		int32 hash = key.CalcHash();
 
		if ((8 * Thash_bits) < 32) hash ^= hash >> (min(8 * Thash_bits, 31));
 
@@ -168,14 +168,14 @@ protected:
 
	}
 

	
 
	/** static helper - return hash for the given item modulo number of slots */
 
	FORCEINLINE static int CalcHash(const Titem_& item) {return CalcHash(item.GetKey());}
 
	inline static int CalcHash(const Titem_& item) {return CalcHash(item.GetKey());}
 

	
 
public:
 
	/** item count */
 
	FORCEINLINE int Count() const {return m_num_items;}
 
	inline int Count() const {return m_num_items;}
 

	
 
	/** simple clear - forget all items - used by CSegmentCostCacheT.Flush() */
 
	FORCEINLINE void Clear() {for (int i = 0; i < Tcapacity; i++) m_slots[i].Clear();}
 
	inline void Clear() {for (int i = 0; i < Tcapacity; i++) m_slots[i].Clear();}
 

	
 
	/** const item search */
 
	const Titem_ *Find(const Tkey& key) const