www.pudn.com > evil¡¯s illusion Server Codes.rar > indexmap.h
/*
IndexMap
Date:
2001/02/05
Note:
¼øÈ¸(Traverse) ¼Óµµ¸¦ Áõ°¡½Ã۱â À§ÇØ ³»ºÎÀûÀ¸·Î List¸¦ »ç¿ëÇÑ´Ù.
¹°·Ð, À妽º¸¦ »ç¿ëÇϱ⠶§¹®¿¡ »ðÀÔ/»èÁ¦½Ã Á»´õ ¸¹Àº CPU Time°ú ¸Þ¸ð¸®°¡ ÇÊ¿äÇÏ´Ù.
¸®½ºÆ®ÀÇ Key Á¤·ÄÀº ÇÏÁö ¾Ê´Â´Ù.
*/
#ifndef __ORZ_DATASTRUCTURE_INDEX_MAP__
#define __ORZ_DATASTRUCTURE_INDEX_MAP__
#include "list.h"
#include "map.h"
template< class T >
class CIndexMap : public CMap< T >
{
protected:
CList< T > m_Index;
public:
CIndexMap();
virtual ~CIndexMap();
virtual bool InitHashTable( int nDemandSize, int nFlags = IHT_UNTOUCH );
virtual void UninitHashTable( bool bDeleteData = true, bool bDeleteArray = false );
bool Insert( T *pData );
T * Remove( T *pKey );
CListNode< T > * GetHead();
CListNode< T > * GetNext( CListNode< T > *pNode );
};
template< class T >
CIndexMap< T >::CIndexMap()
{
}
template< class T >
CIndexMap< T >::~CIndexMap()
{
}
template< class T >
bool CIndexMap< T >::InitHashTable( int nDemandSize, int nFlags )
{
m_Index.SetCompareFunction( __cbCmpString, this );
return CMap< T >::InitHashTable( nDemandSize, nFlags );
}
template< class T >
void CIndexMap< T >::UninitHashTable( bool bDeleteData, bool bDeleteArray )
{
m_Index.ClearAll( false );
CMap< T >::UninitHashTable( bDeleteData, bDeleteArray );
}
template< class T >
bool CIndexMap< T >::Insert( T *pData )
{
if ( CMap< T >::Insert( pData ) )
return m_Index.Insert( pData );
return false;
}
template< class T >
T * CIndexMap< T >::Remove( T *pKey )
{
if ( CMap< T >::Remove( pKey ) )
return m_Index.Remove( pKey );
return NULL;
}
template< class T >
CListNode< T > * CIndexMap< T >::GetHead()
{
return m_Index.GetHead();
}
template< class T >
CListNode< T > * CIndexMap< T >::GetNext( CListNode< T > *pNode )
{
return m_Index.GetNext( pNode );
}
#endif