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

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

?? spcoll.cpp

?? 股票軟件
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
{
	if( m_pData )
		qsort( m_pData, GetSize(), sizeof(DWORD), SortDWord );
}

BOOL CSPDWordArray::IsEqualTo( CSPDWordArray & adw )
{
	if( GetSize() != adw.GetSize() )
		return FALSE;
	for( int i=0; i<GetSize(); i++ )
	{
		if( ElementAt(i) != adw.ElementAt(i) )
			return FALSE;
	}
	return TRUE;
}

DWORD * CSPDWordArray::GetData()
{
	return m_pData;
}

void CSPDWordArray::Serialize(CSPArchive& ar)
{
	SP_ASSERT_VALID(this);

	if (ar.IsStoring())
	{
		ar << GetSize();
		// write each item individually so that it will be byte-swapped
		for (int i = 0; i < m_nSize; i++)
			ar << m_pData[i];
	}
	else
	{
		int	size;
		ar >> size;
		SetSize(size);
		for (int i = 0; i < size; i++)
		{
			DWORD	dw;
			ar >> dw;
			SetAt(i,dw);
		}
	}
}

#ifdef	_DEBUG

void	CSPDWordArray::AssertValid() const
{
	Object::AssertValid();
	if (m_pData == NULL)
	{
		SP_ASSERT(m_nSize == 0);
		SP_ASSERT(m_nMaxSize == 0);
	}
	else
	{
		SP_ASSERT(m_nSize >= 0);
		SP_ASSERT(m_nMaxSize >= 0);
		SP_ASSERT(m_nSize <= m_nMaxSize);
		SP_ASSERT( SP_IsValidAddress(m_pData, m_nMaxSize * sizeof(DWORD)) );
	}
}

void	CSPDWordArray::Dump( ) const
{
	Object::Dump( );
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CSPObArray out-of-line functions

CSPObArray::CSPObArray()
{
	m_pData = NULL;
	m_nSize = m_nMaxSize = m_nGrowBy = 0;
}

CSPObArray::~CSPObArray()
{
	SP_ASSERT_VALID(this);

	delete [] (BYTE*)m_pData;
}

void CSPObArray::SetSize(int nNewSize, int nGrowBy /* = -1 */)
{
	SP_ASSERT_VALID(this);
	SP_ASSERT(nNewSize >= 0);

	if (nGrowBy != -1)
		m_nGrowBy = nGrowBy;  // set new size

	if (nNewSize == 0)
	{
		// shrink to nothing
		delete [] (BYTE*)m_pData;
		m_pData = NULL;
		m_nSize = m_nMaxSize = 0;
	}
	else if (m_pData == NULL)
	{
		// create one with exact size
#ifdef SIZE_T_MAX
		SP_ASSERT((long)nNewSize * sizeof(Object*) <= SIZE_T_MAX);  // no overflow
#endif
		m_pData = (Object**) new BYTE[nNewSize * sizeof(Object*)];

		memset(m_pData, 0, nNewSize * sizeof(Object*));  // zero fill

		m_nSize = m_nMaxSize = nNewSize;
	}
	else if (nNewSize <= m_nMaxSize)
	{
		// it fits
		if (nNewSize > m_nSize)
		{
			// initialize the new elements

			memset(&m_pData[m_nSize], 0, (nNewSize-m_nSize) * sizeof(Object*));

		}

		m_nSize = nNewSize;
	}
	else
	{
		// Otherwise grow array
		int nNewMax;
		if (nNewSize < m_nMaxSize + m_nGrowBy)
			nNewMax = m_nMaxSize + m_nGrowBy;  // granularity
		else
			nNewMax = nNewSize;  // no slush

#ifdef SIZE_T_MAX
		SP_ASSERT((long)nNewMax * sizeof(Object*) <= SIZE_T_MAX);  // no overflow
#endif
		Object** pNewData = (Object**) new BYTE[nNewMax * sizeof(Object*)];

		// copy new data from old
		memcpy(pNewData, m_pData, m_nSize * sizeof(Object*));

		// construct remaining elements
		SP_ASSERT(nNewSize > m_nSize);

		memset(&pNewData[m_nSize], 0, (nNewSize-m_nSize) * sizeof(Object*));


		// get rid of old stuff (note: no destructors called)
		delete [] (BYTE*)m_pData;
		m_pData = pNewData;
		m_nSize = nNewSize;
		m_nMaxSize = nNewMax;
	}
}

void CSPObArray::FreeExtra()
{
	SP_ASSERT_VALID(this);

	if (m_nSize != m_nMaxSize)
	{
		// shrink to desired size
#ifdef SIZE_T_MAX
		SP_ASSERT((long)m_nSize * sizeof(Object*) <= SIZE_T_MAX);  // no overflow
#endif
		Object** pNewData = NULL;
		if (m_nSize != 0)
		{
			pNewData = (Object**) new BYTE[m_nSize * sizeof(Object*)];
			// copy new data from old
			memcpy(pNewData, m_pData, m_nSize * sizeof(Object*));
		}

		// get rid of old stuff (note: no destructors called)
		delete [] (BYTE*)m_pData;
		m_pData = pNewData;
		m_nMaxSize = m_nSize;
	}
}

void CSPObArray::SetAtGrow(int nIndex, Object* newElement)
{
	SP_ASSERT_VALID(this);
	SP_ASSERT(nIndex >= 0);

	if (nIndex >= m_nSize)
		SetSize(nIndex+1);
	m_pData[nIndex] = newElement;
}

void CSPObArray::InsertAt(int nIndex, Object* newElement, int nCount /*=1*/)
{
	SP_ASSERT_VALID(this);
	SP_ASSERT(nIndex >= 0);    // will expand to meet need
	SP_ASSERT(nCount > 0);     // zero or negative size not allowed

	if (nIndex >= m_nSize)
	{
		// adding after the end of the array
		SetSize(nIndex + nCount);  // grow so nIndex is valid
	}
	else
	{
		// inserting in the middle of the array
		int nOldSize = m_nSize;
		SetSize(m_nSize + nCount);  // grow it to new size
		// shift old data up to fill gap
		memmove(&m_pData[nIndex+nCount], &m_pData[nIndex],
			(nOldSize-nIndex) * sizeof(Object*));

		// re-init slots we copied from

		memset(&m_pData[nIndex], 0, nCount * sizeof(Object*));

	}

	// insert new value in the gap
	SP_ASSERT(nIndex + nCount <= m_nSize);
	while (nCount--)
		m_pData[nIndex++] = newElement;
}

void CSPObArray::RemoveAt(int nIndex, int nCount /* = 1 */)
{
	SP_ASSERT_VALID(this);
	SP_ASSERT(nIndex >= 0);
	SP_ASSERT(nCount >= 0);
	SP_ASSERT(nIndex + nCount <= m_nSize);

	// just remove a range
	int nMoveCount = m_nSize - (nIndex + nCount);

	if (nMoveCount)
		memcpy(&m_pData[nIndex], &m_pData[nIndex + nCount],
			nMoveCount * sizeof(Object*));
	m_nSize -= nCount;
}

void CSPObArray::InsertAt(int nStartIndex, CSPObArray* pNewArray)
{
	SP_ASSERT_VALID(this);
	SP_ASSERT(pNewArray != NULL);
	SP_ASSERT_VALID(pNewArray);
	SP_ASSERT(nStartIndex >= 0);

	if (pNewArray->GetSize() > 0)
	{
		InsertAt(nStartIndex, pNewArray->GetAt(0), pNewArray->GetSize());
		for (int i = 0; i < pNewArray->GetSize(); i++)
			SetAt(nStartIndex + i, pNewArray->GetAt(i));
	}
}

// Diagnostics
#ifdef _DEBUG
void CSPObArray::Dump() const
{
	Object::Dump( );
}

void CSPObArray::AssertValid() const
{
	Object::AssertValid();
	if (m_pData == NULL)
	{
		SP_ASSERT(m_nSize == 0);
		SP_ASSERT(m_nMaxSize == 0);
	}
	else
	{
		SP_ASSERT(m_nSize >= 0);
		SP_ASSERT(m_nMaxSize >= 0);
		SP_ASSERT(m_nSize <= m_nMaxSize);
		SP_ASSERT(SP_IsValidAddress(m_pData, m_nMaxSize * sizeof(Object*)));
	}
}
#endif //_DEBUG


/////////////////////////////////////////////////////////////////////////////
// CSPStringArray out-of-line functions

CSPStringArray::CSPStringArray()
{
	m_pData = NULL;
	m_nSize = m_nMaxSize = m_nGrowBy = 0;
}

CSPStringArray::~CSPStringArray()
{
	SP_ASSERT_VALID(this);


	SPDestructElements(m_pData, m_nSize);
	delete [] (BYTE*)m_pData;
}

void CSPStringArray::SetSize(int nNewSize, int nGrowBy /* = -1 */)
{
	SP_ASSERT_VALID(this);
	SP_ASSERT(nNewSize >= 0);

	if (nGrowBy != -1)
		m_nGrowBy = nGrowBy;  // set new size

	if (nNewSize == 0)
	{
		// shrink to nothing

		SPDestructElements(m_pData, m_nSize);
		delete [] (BYTE*)m_pData;
		m_pData = NULL;
		m_nSize = m_nMaxSize = 0;
	}
	else if (m_pData == NULL)
	{
		// create one with exact size
#ifdef SIZE_T_MAX
		SP_ASSERT((long)nNewSize * sizeof(CSPString) <= SIZE_T_MAX);  // no overflow
#endif
		m_pData = (CSPString*) new BYTE[nNewSize * sizeof(CSPString)];

		SPConstructElements(m_pData, nNewSize);

		m_nSize = m_nMaxSize = nNewSize;
	}
	else if (nNewSize <= m_nMaxSize)
	{
		// it fits
		if (nNewSize > m_nSize)
		{
			// initialize the new elements

			SPConstructElements(&m_pData[m_nSize], nNewSize-m_nSize);

		}

		else if (m_nSize > nNewSize)  // destroy the old elements
			SPDestructElements(&m_pData[nNewSize], m_nSize-nNewSize);

		m_nSize = nNewSize;
	}
	else
	{
		// Otherwise grow array
		int nNewMax;
		if (nNewSize < m_nMaxSize + m_nGrowBy)
			nNewMax = m_nMaxSize + m_nGrowBy;  // granularity
		else
			nNewMax = nNewSize;  // no slush

#ifdef SIZE_T_MAX
		SP_ASSERT((long)nNewMax * sizeof(CSPString) <= SIZE_T_MAX);  // no overflow
#endif
		CSPString* pNewData = (CSPString*) new BYTE[nNewMax * sizeof(CSPString)];

		// copy new data from old
		memcpy(pNewData, m_pData, m_nSize * sizeof(CSPString));

		// construct remaining elements
		SP_ASSERT(nNewSize > m_nSize);

		SPConstructElements(&pNewData[m_nSize], nNewSize-m_nSize);


		// get rid of old stuff (note: no destructors called)
		delete [] (BYTE*)m_pData;
		m_pData = pNewData;
		m_nSize = nNewSize;
		m_nMaxSize = nNewMax;
	}
}

int CSPStringArray::Append(const CSPStringArray& src)
{
	SP_ASSERT_VALID(this);
	SP_ASSERT(this != &src);   // cannot append to itself

	int nOldSize = m_nSize;
	SetSize(m_nSize + src.m_nSize);

	SPCopyElements(m_pData + nOldSize, src.m_pData, src.m_nSize);

	return nOldSize;
}

void CSPStringArray::Copy(const CSPStringArray& src)
{
	SP_ASSERT_VALID(this);
	SP_ASSERT(this != &src);   // cannot append to itself

	SetSize(src.m_nSize);

	SPCopyElements(m_pData, src.m_pData, src.m_nSize);
}

void CSPStringArray::FreeExtra()
{
	SP_ASSERT_VALID(this);

	if (m_nSize != m_nMaxSize)
	{
		// shrink to desired size
#ifdef SIZE_T_MAX
		SP_ASSERT((long)m_nSize * sizeof(CSPString) <= SIZE_T_MAX);  // no overflow
#endif
		CSPString* pNewData = NULL;
		if (m_nSize != 0)
		{
			pNewData = (CSPString*) new BYTE[m_nSize * sizeof(CSPString)];
			// copy new data from old
			memcpy(pNewData, m_pData, m_nSize * sizeof(CSPString));
		}

		// get rid of old stuff (note: no destructors called)
		delete [] (BYTE*)m_pData;
		m_pData = pNewData;
		m_nMaxSize = m_nSize;
	}
}

void CSPStringArray::SetAtGrow(int nIndex, const char* newElement)
{
	SP_ASSERT_VALID(this);
	SP_ASSERT(nIndex >= 0);

	if (nIndex >= m_nSize)
		SetSize(nIndex+1);
	m_pData[nIndex] = newElement;
}

void CSPStringArray::InsertAt(int nIndex, const char* newElement, int nCount /*=1*/)
{
	SP_ASSERT_VALID(this);
	SP_ASSERT(nIndex >= 0);    // will expand to meet need
	SP_ASSERT(nCount > 0);     // zero or negative size not allowed

	if (nIndex >= m_nSize)
	{
		// adding after the end of the array
		SetSize(nIndex + nCount);  // grow so nIndex is valid
	}
	else
	{
		// inserting in the middle of the array
		int nOldSize = m_nSize;
		SetSize(m_nSize + nCount);  // grow it to new size
		// shift old data up to fill gap
		memmove(&m_pData[nIndex+nCount], &m_pData[nIndex],
			(nOldSize-nIndex) * sizeof(CSPString));

		// re-init slots we copied from

		SPConstructElements(&m_pData[nIndex], nCount);

	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品国产精品亚洲精品 | 久久综合九色综合欧美就去吻| 国产精品系列在线播放| 亚洲综合小说图片| 中文字幕欧美激情一区| 91精品国模一区二区三区| 成人国产精品免费观看| 日本va欧美va欧美va精品| 免费观看在线综合| 亚洲国产一区二区三区青草影视| 国产丝袜欧美中文另类| 欧美一区二区三区播放老司机| 97se亚洲国产综合自在线不卡 | 亚洲丝袜自拍清纯另类| 欧美大片日本大片免费观看| 日本高清免费不卡视频| 成人高清av在线| 国产乱码一区二区三区| 日本最新不卡在线| 午夜精品久久久久| 亚洲综合男人的天堂| 国产精品私房写真福利视频| 久久久久久综合| 日韩女同互慰一区二区| 欧美日韩国产一二三| 色哟哟精品一区| 不卡一区二区在线| 成人99免费视频| 丁香婷婷深情五月亚洲| 国产不卡在线播放| 国产在线播放一区三区四| 精品午夜久久福利影院 | 成人久久18免费网站麻豆| 国产永久精品大片wwwapp| 日韩成人av影视| 日韩av一区二区在线影视| 日韩精品欧美精品| 日产精品久久久久久久性色| 污片在线观看一区二区| 丝袜脚交一区二区| 日韩av电影一区| 久久国产尿小便嘘嘘尿| 精品一区二区三区免费| 精品在线免费视频| 国产一区 二区| 懂色av一区二区三区蜜臀 | 宅男在线国产精品| 91精品国产91久久久久久一区二区| 欧美日韩视频不卡| 555www色欧美视频| 日韩免费一区二区| 久久久久久久久久久久久久久99| 久久久99精品久久| 中文字幕日韩精品一区| 亚洲免费观看高清完整| 亚洲一区二区三区四区五区黄| 亚洲韩国精品一区| 日本不卡不码高清免费观看| 久久9热精品视频| 成人精品免费视频| 欧美影院午夜播放| 日韩欧美视频一区| 国产精品免费aⅴ片在线观看| 中文字幕中文在线不卡住| 悠悠色在线精品| 日本视频免费一区| 国产成人av自拍| 色久综合一二码| 欧美成人精品高清在线播放| 日本一区二区免费在线| 亚洲综合无码一区二区| 久久综合综合久久综合| 久久综合色播五月| 欧美韩国一区二区| 亚洲一区二区三区四区的| 免费观看在线综合色| 国产精品88888| 欧美系列亚洲系列| 精品福利在线导航| 亚洲日本免费电影| 精品亚洲aⅴ乱码一区二区三区| gogogo免费视频观看亚洲一| 欧美乱熟臀69xxxxxx| 国产日本一区二区| 午夜精品久久久久久久| 国产成人精品亚洲777人妖| 欧美日韩一区久久| 国产欧美在线观看一区| 亚洲va韩国va欧美va| 国产成人av在线影院| 欧美电影一区二区三区| 欧美韩日一区二区三区四区| 偷拍日韩校园综合在线| 国产凹凸在线观看一区二区| 欧美高清视频不卡网| 国产精品色哟哟网站| 麻豆视频一区二区| 91精彩视频在线| 中文字幕乱码亚洲精品一区| 日韩成人免费看| 色狠狠综合天天综合综合| 国产嫩草影院久久久久| 蜜乳av一区二区三区| 在线观看一区二区精品视频| 中文久久乱码一区二区| 久久se精品一区精品二区| 欧美无砖砖区免费| 亚洲色图视频免费播放| 国产很黄免费观看久久| 日韩欧美在线123| 亚洲国产一区二区在线播放| av不卡一区二区三区| 国产亚洲美州欧州综合国| 免费看精品久久片| 欧美亚洲一区二区三区四区| 国产精品不卡在线观看| 国产精品原创巨作av| 日韩精品一区二区三区中文精品| 亚洲国产另类精品专区| 一本色道a无线码一区v| 中文字幕日韩精品一区| 99在线精品观看| 国产精品的网站| 豆国产96在线|亚洲| 久久精品夜色噜噜亚洲aⅴ| 国内外成人在线视频| 日韩区在线观看| 日韩中文字幕av电影| 欧美喷水一区二区| 亚洲成av人片在www色猫咪| 欧美午夜精品一区二区三区| 亚洲美女少妇撒尿| 色综合天天综合| 亚洲免费观看高清完整版在线观看熊| 丁香婷婷综合色啪| 国产精品视频一二三| 成人福利视频网站| 亚洲欧美日韩电影| 一本色道**综合亚洲精品蜜桃冫| 亚洲乱码国产乱码精品精的特点| 91网站视频在线观看| 亚洲视频免费观看| 色哟哟国产精品| 亚洲韩国一区二区三区| 欧美乱妇20p| 久久精品国产亚洲5555| 欧美精品一区二区三区在线| 国产一区二区精品在线观看| 国产亚洲美州欧州综合国| 成人av在线资源网| 一区二区三区毛片| 亚洲欧美另类图片小说| 91蜜桃婷婷狠狠久久综合9色| 亚洲精品乱码久久久久久黑人| 欧美在线观看一区二区| 蜜臀久久久久久久| 久久九九久久九九| 91国在线观看| 日韩和欧美一区二区三区| 精品少妇一区二区三区视频免付费| 国产精品一二三在| 亚洲精品自拍动漫在线| 6080国产精品一区二区| 国产精品综合视频| 亚洲精品综合在线| 欧美私模裸体表演在线观看| 日精品一区二区| 久久久.com| 精品视频在线免费看| 久久精品国产第一区二区三区 | 亚洲一区视频在线观看视频| 欧美精品久久久久久久多人混战 | 91视频一区二区三区| 精品在线播放免费| 亚洲色欲色欲www| 久久久久9999亚洲精品| 亚洲一区二区三区四区不卡| 国产精品色婷婷久久58| 国产女人18水真多18精品一级做| 亚洲国产精品精华液ab| 亚洲视频一区在线| 亚洲一区二区视频| 奇米777欧美一区二区| 捆绑紧缚一区二区三区视频| 久久99久久久久久久久久久| 99国产精品久久| 国产精品久久毛片a| 欧美日韩国产在线观看| 国产精品一二三四五| 亚洲香蕉伊在人在线观| 久久九九久久九九| 欧美精品 国产精品| 91在线观看地址| 激情另类小说区图片区视频区| 一区二区三区四区不卡视频 | 欧美性感一类影片在线播放| 激情都市一区二区| 午夜成人在线视频| 国产精品久久久久精k8| 精品三级av在线|