亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? map.h

?? 一個更為先進的嵌入式操作系統.采用RMS線程調度算法,具有信號量等同步對象.亦包括GUI. 通過該系統您可以極大知道Windows的內部秘密.
?? H
字號:
// CMap.h: interface for the CMap class.
//
//////////////////////////////////////////////////////////////////////

#ifndef _GOS_MAP_H_
#define _GOS_MAP_H_

#define BEFORE_START_POSITION POSITION(-1)
#define DEFAULT_HASHTABLESIZE 31
#define DEFAULT_HASHKEY(key) (*PDWORD(&key) >> 4)

/////////////////////////////////////////////////////////////////////////////
// CMap<KEY,VALUE> inline functions

template<class KEY,class VALUE>
__inline int CMap<KEY,VALUE>::GetSize() const
	{ return m_nCount; }

template<class KEY,class VALUE>
__inline BOOL CMap<KEY,VALUE>::IsEmpty() const
	{ return m_nCount == 0; }

template<class KEY,class VALUE>
__inline void CMap<KEY,VALUE>::SetAt(const KEY& key, const VALUE& newValue)
	{ (*this)[key] = newValue; }

template<class KEY,class VALUE>
__inline POSITION CMap<KEY,VALUE>::GetStartPosition() const
	{ return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }

template<class KEY,class VALUE>
__inline UINT CMap<KEY,VALUE>::GetHashTableSize() const
	{ return _msize(m_pHashTable)/sizeof(CAssoc**); }

/////////////////////////////////////////////////////////////////////////////
// CMap<KEY,VALUE> out-of-line functions

template<class KEY,class VALUE>
CMap<KEY,VALUE>::CMap(int nBlockSize)
{
	m_pHashTable = NULL;
	m_nCount = 0;
	m_pFreeList = NULL;
	m_pBlocks = NULL;
	m_nBlockSize = nBlockSize;
	DEBUG_ONLY(nBlockSize=CHeap::ElementCount(sizeof(CAssoc),nBlockSize,sizeof(CPlex*)));
	ASSERT(m_nBlockSize==nBlockSize);
}

template<class KEY,class VALUE>
void CMap<KEY,VALUE>::InitHashTable(UINT nHashSize)
//
// Used to force allocation of a hash table or to override the default
//   hash table size of (which is fairly small)
{
	ASSERT(m_nCount == 0);
	ASSERT(nHashSize > 0);

	if (m_pHashTable != NULL)
	{
		// free hash table
		delete[] m_pHashTable;
		m_pHashTable = NULL;
	}

	m_pHashTable = new CAssoc* [nHashSize];
	memset(m_pHashTable, 0, sizeof(CAssoc*) * nHashSize);
}

template<class KEY,class VALUE>
void CMap<KEY,VALUE>::RemoveAll()
{
	// free hash table
	delete[] m_pHashTable;
	m_pHashTable = NULL;

	m_nCount = 0;
	m_pFreeList = NULL;
	m_pBlocks->FreeDataChain();
	m_pBlocks = NULL;
}

template<class KEY,class VALUE>
CMap<KEY,VALUE>::~CMap()
{
	RemoveAll();
	ASSERT(m_nCount == 0);
}

template<class KEY,class VALUE>
typename CMap<KEY,VALUE>::CAssoc*
CMap<KEY,VALUE>::NewAssoc(const KEY& key)
{
	if (m_pFreeList == NULL)
	{
		// add another block
		CMap::CAssoc* pAssoc = (CMap::CAssoc*)CPlex::CreateHead(m_pBlocks,
			m_nBlockSize*sizeof(CMap::CAssoc));
		// free in reverse order to make it easier to debug
		pAssoc += m_nBlockSize - 1;
		for (int i = m_nBlockSize-1; i >= 0; i--, pAssoc--)
		{
			pAssoc->pNext = m_pFreeList;
			m_pFreeList = pAssoc;
		}
	}
	ASSERT(m_pFreeList != NULL);  // we must have something

	CMap::CAssoc* pAssoc = m_pFreeList;
	pAssoc->key=key;

	m_pFreeList = m_pFreeList->pNext;
	m_nCount++;
	ASSERT(m_nCount > 0);  // make sure we don't overflow
	return pAssoc;
}

template<class KEY,class VALUE>
void CMap<KEY,VALUE>::FreeAssoc(CAssoc* pAssoc)
{
	pAssoc->pNext = m_pFreeList;
	m_pFreeList = pAssoc;
	m_nCount--;
	ASSERT(m_nCount >= 0);  // make sure we don't underflow

	// if no more elements, cleanup completely
	if (m_nCount == 0)
		RemoveAll();
}

template<class KEY,class VALUE>
PVOID CMap<KEY,VALUE>::GetAssocAt(const KEY& key, UINT& nHash) const
// find association (or return NULL)
{
	if (m_pHashTable == NULL)
	{
		nHash = DEFAULT_HASHKEY(key)%DEFAULT_HASHTABLESIZE;
		return NULL;
	}
	nHash = DEFAULT_HASHKEY(key)%GetHashTableSize();

	// see if it exists
	CAssoc* pAssoc;
	for (pAssoc = m_pHashTable[nHash]; pAssoc != NULL; pAssoc = pAssoc->pNext)
	{
		if(pAssoc->key==key)
			return pAssoc;
	}
	return NULL;
}

template<class KEY,class VALUE>
BOOL CMap<KEY,VALUE>::Lookup(const KEY& key, VALUE& rValue) const
{
	UINT nHash;
	CAssoc* pAssoc = (CAssoc*)GetAssocAt(key, nHash);
	if (pAssoc == NULL)
		return FALSE;  // not in map

	rValue = pAssoc->value;
	return TRUE;
}

template<class KEY,class VALUE>
VALUE& CMap<KEY,VALUE>::operator[](const KEY& key)
{
	UINT nHash;
	CAssoc* pAssoc;
	if ((pAssoc = (CAssoc*)GetAssocAt(key, nHash)) == NULL)
	{
		if (m_pHashTable == NULL)
			InitHashTable(DEFAULT_HASHTABLESIZE);

		// it doesn't exist, add a new Association
		pAssoc = NewAssoc(key);

		// put into hash table
		pAssoc->pNext = m_pHashTable[nHash];
		m_pHashTable[nHash] = pAssoc;
	}
	return pAssoc->value;  // return new reference
}

template<class KEY,class VALUE>
BOOL CMap<KEY,VALUE>::RemoveKey(const KEY& key)
// remove key - return TRUE if removed
{
	if (m_pHashTable == NULL)
		return FALSE;  // nothing in the table

	CAssoc** ppAssocPrev;
	UINT nHash = DEFAULT_HASHKEY(key)%GetHashTableSize();
	ppAssocPrev = &m_pHashTable[nHash];

	CAssoc* pAssoc;
	for (pAssoc = *ppAssocPrev; pAssoc != NULL; pAssoc = pAssoc->pNext)
	{
		if(pAssoc->key=key)
		{
			// remove it
			*ppAssocPrev = pAssoc->pNext;  // remove from list
			FreeAssoc(pAssoc);
			return TRUE;
		}
		ppAssocPrev = &pAssoc->pNext;
	}
	return FALSE;  // not found
}

template<class KEY,class VALUE>
void CMap<KEY,VALUE>::GetNextAssoc(POSITION& rNextPosition,
	KEY& rKey, VALUE& rValue) const
{
	ASSERT(m_pHashTable != NULL);  // never call on empty map

	UINT nHash;
	UINT nHSize=GetHashTableSize();
	CAssoc* pAssocRet = (CAssoc*)rNextPosition;
	ASSERT(pAssocRet != NULL);

	if (pAssocRet == (CAssoc*) BEFORE_START_POSITION)
	{
		// find the first association
		for (nHash=0 ; nHash < nHSize; nHash++)
			if ((pAssocRet = m_pHashTable[nHash]) != NULL)
				break;
		ASSERT(pAssocRet != NULL);  // must find something
	}

	// find next association
	CAssoc* pAssocNext;
	if ((pAssocNext = pAssocRet->pNext) == NULL)
	{
		// go to next bucket
		nHash = DEFAULT_HASKKEY(pAssocRet->key)%nHSize;
		for (++nHash ; nHash < nHSize; nHash++)
			if ((pAssocNext = m_pHashTable[nHash]) != NULL)
				break;
	}

	rNextPosition = (POSITION) pAssocNext;

	// fill in return data
	rKey = pAssocRet->key;
	rValue = pAssocRet->value;
}

#endif _GOS_MAP_H_

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲主播在线播放| 欧美色窝79yyyycom| 色94色欧美sute亚洲线路二| 欧美一级日韩一级| 亚洲激情自拍视频| 成人动漫视频在线| 精品国产一区a| 亚洲第一综合色| 91女神在线视频| 国产日韩精品久久久| 五月天视频一区| 欧美艳星brazzers| 玉米视频成人免费看| 成人影视亚洲图片在线| 久久久一区二区三区| 蜜桃久久久久久久| 欧美精品三级在线观看| 亚洲综合一区在线| 91免费国产在线| 国产精品久久免费看| 国产成人在线免费| 久久久777精品电影网影网 | 91成人免费在线| 国产精品伦理一区二区| 国产高清不卡一区| 久久久精品国产免大香伊| 精品一区二区影视| 日韩精品综合一本久道在线视频| 亚洲一区二区三区视频在线播放| 91免费观看国产| 亚洲日本丝袜连裤袜办公室| 成人免费福利片| 国产精品久久久久久久久晋中| 国产成人av网站| 国产精品久久免费看| 91视频国产资源| 亚洲永久免费av| 欧美日韩国产综合视频在线观看| 亚洲精品视频在线| 精品视频资源站| 日韩av二区在线播放| 欧美成人欧美edvon| 国产一区亚洲一区| 亚洲国产精品av| 91色.com| 同产精品九九九| 欧美xxxx在线观看| 国产伦精品一区二区三区免费迷 | 欧美视频一区二区在线观看| 亚洲一区成人在线| 日韩欧美亚洲一区二区| 国产高清不卡一区| 亚洲精品视频一区| 制服丝袜一区二区三区| 精品中文av资源站在线观看| 中文字幕第一区第二区| 一本大道久久a久久精品综合| 亚洲在线中文字幕| 欧美不卡一二三| jizz一区二区| 日一区二区三区| 国产欧美日韩麻豆91| 91精彩视频在线观看| 日韩国产在线一| 国产亲近乱来精品视频| 日本高清不卡视频| 精品亚洲国内自在自线福利| 国产精品无遮挡| 欧美一区二区三区免费视频 | 久久一日本道色综合| 日韩欧美精品在线视频| 韩国理伦片一区二区三区在线播放| 国产日韩高清在线| 在线不卡a资源高清| 成人综合婷婷国产精品久久免费| 亚洲大片免费看| 国产日韩精品视频一区| 91精品国产综合久久蜜臀| 成人av在线观| 久久99这里只有精品| 一区二区三区高清在线| 久久久综合视频| 欧美一区二区三区在线看| 99国产精品国产精品久久| 毛片av一区二区三区| 亚洲人成电影网站色mp4| 精品国产乱码久久久久久老虎| 91女神在线视频| 国产成人av福利| 激情综合色播激情啊| 午夜久久电影网| 亚洲最新在线观看| 国产精品乱人伦| 久久久久久久久一| 欧美一卡二卡三卡| 欧美日本一区二区三区| 色哟哟在线观看一区二区三区| 国产91富婆露脸刺激对白| 日韩电影一区二区三区四区| 一区二区三区在线免费播放 | 日韩色视频在线观看| 欧美伊人久久久久久午夜久久久久| 成人午夜电影网站| 国产成人免费视频网站| 精品一区二区三区在线观看| 日韩高清电影一区| 亚洲第一成年网| 亚洲成av人在线观看| 精品制服美女久久| 国内久久婷婷综合| 精品一区二区三区影院在线午夜| 日韩精品午夜视频| 日韩精品91亚洲二区在线观看| 亚洲va天堂va国产va久| 亚洲福中文字幕伊人影院| 亚洲国产欧美在线人成| 亚洲一卡二卡三卡四卡无卡久久| 一区二区三区在线免费播放| 一区二区三区视频在线看| 亚洲综合丝袜美腿| 午夜成人免费视频| 免费高清在线一区| 国产一本一道久久香蕉| 成人深夜在线观看| 99国内精品久久| 在线观看国产精品网站| 欧美日韩一区成人| 欧美一区二区三区在线视频 | 欧美一区二区三区日韩| 精品久久久久香蕉网| 国产亚洲人成网站| 亚洲男人天堂一区| 五月天一区二区| 韩国理伦片一区二区三区在线播放| 国产一区视频在线看| 99这里都是精品| 欧美日韩视频在线第一区| 精品嫩草影院久久| 国产精品久久久久一区| 亚洲亚洲人成综合网络| 另类小说欧美激情| 成人avav在线| 欧美日本国产视频| 国产亚洲人成网站| 亚洲综合色噜噜狠狠| 日本伊人午夜精品| 成人伦理片在线| 欧美三级欧美一级| 久久精品欧美日韩精品| 亚洲一线二线三线视频| 国产在线看一区| 欧美亚洲高清一区二区三区不卡| 精品裸体舞一区二区三区| 国产精品系列在线| 免费成人你懂的| 色悠悠亚洲一区二区| 欧美电影免费观看高清完整版在 | 亚洲一区二区av电影| 国产美女久久久久| 欧美日韩国产乱码电影| 国产欧美一区二区精品忘忧草| 亚洲已满18点击进入久久| 国产精品中文欧美| 欧美性极品少妇| 中文字幕av一区二区三区高| 日韩精品一级二级| 日本高清不卡在线观看| 中文字幕高清不卡| 黄一区二区三区| 欧美理论在线播放| 亚洲男同1069视频| 国产suv精品一区二区三区| 在线不卡欧美精品一区二区三区| 国产精品初高中害羞小美女文| 久久成人麻豆午夜电影| 欧美午夜视频网站| 亚洲欧洲日韩在线| 国产一区二区精品在线观看| 88在线观看91蜜桃国自产| 亚洲激情av在线| av成人免费在线观看| 久久久电影一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美亚洲自拍偷拍| 一区二区三区在线观看网站| 从欧美一区二区三区| 久久久久国色av免费看影院| 免费人成精品欧美精品| 91精品免费在线观看| 五月激情综合婷婷| 欧美蜜桃一区二区三区| 亚洲福中文字幕伊人影院| 欧美探花视频资源| 夜夜操天天操亚洲| 欧美亚洲一区二区三区四区| 一区二区在线看| 日本丶国产丶欧美色综合| 亚洲精品欧美在线| 在线观看国产精品网站| 亚洲国产精品综合小说图片区|