2 #include "CArrayList.h"
7 CArrayList::CArrayList( CArrayList::ARRAYLISTTYPE Type, UINT n
\97v
\91f
\83T
\83C
\83Y )
9 this->arrayListType = Type;
10 this->p
\93®
\93I
\94z
\97ñ = NULL;
11 this->n
\97v
\91f
\83T
\83C
\83Y = (Type == ALT_REFERENCE) ? sizeof(LPVOID) : n
\97v
\91f
\83T
\83C
\83Y;
12 this->n
\8c»
\8dÝ
\82Ì
\97v
\91f
\90\94 = 0;
13 this->n
\8c»
\8dÝ
\82Ì
\93®
\93I
\94z
\97ñ
\82Ì
\83T
\83C
\83Y = 0;
16 CArrayList::~CArrayList()
18 if( ! this->p
\93®
\93I
\94z
\97ñ )
19 delete[] this->p
\93®
\93I
\94z
\97ñ;
22 HRESULT CArrayList::t
\97v
\91f
\82ð
\92Ç
\89Á
\82·
\82é( void* pEntry )
24 if( this->n
\97v
\91f
\83T
\83C
\83Y == 0 )
25 return E_FAIL; //
\8f\89\8aú
\89»
\82³
\82ê
\82Ä
\82È
\82¢
27 //
\94z
\97ñ
\82ð
\83I
\81[
\83o
\81[
\83t
\83\8d\81[
\82·
\82é
\82È
\82ç
\90V
\82µ
\82
\97Ì
\88æ
\82ð
\8am
\95Û
\82·
\82é
\81B
28 if( ! this->p
\93®
\93I
\94z
\97ñ || this->n
\8c»
\8dÝ
\82Ì
\97v
\91f
\90\94 + 1 > this->n
\8c»
\8dÝ
\82Ì
\93®
\93I
\94z
\97ñ
\82Ì
\83T
\83C
\83Y )
30 HRESULT hr = this->t
\90V
\82µ
\82¢
\93®
\93I
\94z
\97ñ
\82ð
\8am
\95Û
\82·
\82é();
35 //
\93®
\93I
\94z
\97ñ
\82É
\90V
\97v
\91f
\82ð
\92Ç
\89Á
\82·
\82é
\81B
36 switch( this->arrayListType )
39 *(((void**)this->p
\93®
\93I
\94z
\97ñ) + this->n
\8c»
\8dÝ
\82Ì
\97v
\91f
\90\94) = pEntry;
43 CopyMemory( (BYTE*)this->p
\93®
\93I
\94z
\97ñ + (this->n
\8c»
\8dÝ
\82Ì
\97v
\91f
\90\94 * this->n
\97v
\91f
\83T
\83C
\83Y), pEntry, this->n
\97v
\91f
\83T
\83C
\83Y );
46 this->n
\8c»
\8dÝ
\82Ì
\97v
\91f
\90\94++;
51 void CArrayList::t
\97v
\91f
\82ð
\8dí
\8f\9c\82·
\82é( UINT nIndex )
53 if( this->n
\8c»
\8dÝ
\82Ì
\97v
\91f
\90\94 <= 0 )
56 this->n
\8c»
\8dÝ
\82Ì
\97v
\91f
\90\94 --;
58 BYTE* pData = (BYTE*)this->p
\93®
\93I
\94z
\97ñ + (nIndex * this->n
\97v
\91f
\83T
\83C
\83Y);
59 MoveMemory( pData, pData + this->n
\97v
\91f
\83T
\83C
\83Y, ( this->n
\8c»
\8dÝ
\82Ì
\97v
\91f
\90\94 - nIndex) * this->n
\97v
\91f
\83T
\83C
\83Y );
62 void* CArrayList::p
\97v
\91f
\82ð
\8eæ
\93¾
\82·
\82é( UINT nIndex )
64 switch( this->arrayListType )
67 return *(((void**)this->p
\93®
\93I
\94z
\97ñ) + nIndex);
70 return (BYTE*)this->p
\93®
\93I
\94z
\97ñ + (nIndex * this->n
\97v
\91f
\83T
\83C
\83Y);
76 bool CArrayList::b
\97v
\91f
\82ª
\94z
\97ñ
\93à
\82É
\91¶
\8dÝ
\82·
\82é( void* pEntryData )
78 for( UINT i = 0; i < this->n
\8c»
\8dÝ
\82Ì
\97v
\91f
\90\94; i++ )
80 switch( this->arrayListType )
83 if( this->p
\97v
\91f
\82ð
\8eæ
\93¾
\82·
\82é(i) == pEntryData )
88 if( memcmp( this->p
\97v
\91f
\82ð
\8eæ
\93¾
\82·
\82é(i), pEntryData, this->n
\97v
\91f
\83T
\83C
\83Y ) == 0 )
96 HRESULT CArrayList::t
\90V
\82µ
\82¢
\93®
\93I
\94z
\97ñ
\82ð
\8am
\95Û
\82·
\82é()
98 //
\90V
\82µ
\82¢
\94z
\97ñ
\82Ì
\83T
\83C
\83Y
\82Í
\82±
\82ê
\82Ü
\82Å
\82Ì
\82Q
\94{
99 UINT
\90V
\82µ
\82¢
\93®
\93I
\94z
\97ñ
\82Ì
\83T
\83C
\83Y = ( this->n
\8c»
\8dÝ
\82Ì
\93®
\93I
\94z
\97ñ
\82Ì
\83T
\83C
\83Y == 0 ) ? 16 : this->n
\8c»
\8dÝ
\82Ì
\93®
\93I
\94z
\97ñ
\82Ì
\83T
\83C
\83Y * 2;
101 //
\90V
\94z
\97ñ
\82Ì
\83\81\83\82\83\8a\82ð
\8am
\95Û
102 void*
\90V
\82µ
\82¢
\93®
\93I
\94z
\97ñ = new BYTE[
\90V
\82µ
\82¢
\93®
\93I
\94z
\97ñ
\82Ì
\83T
\83C
\83Y * this->n
\97v
\91f
\83T
\83C
\83Y ];
103 if( !
\90V
\82µ
\82¢
\93®
\93I
\94z
\97ñ )
104 return E_OUTOFMEMORY; //
\8e¸
\94s
106 //
\8b\8c\94z
\97ñ
\82ª
\82 \82é
\82È
\82ç
\92\86\90g
\82ð
\83R
\83s
\81[
\82·
\82é
107 if( this->p
\93®
\93I
\94z
\97ñ )
109 CopyMemory(
\90V
\82µ
\82¢
\93®
\93I
\94z
\97ñ, this->p
\93®
\93I
\94z
\97ñ, this->n
\8c»
\8dÝ
\82Ì
\97v
\91f
\90\94 * this->n
\97v
\91f
\83T
\83C
\83Y );
110 delete[] this->p
\93®
\93I
\94z
\97ñ;
114 this->p
\93®
\93I
\94z
\97ñ =
\90V
\82µ
\82¢
\93®
\93I
\94z
\97ñ;
115 this->n
\8c»
\8dÝ
\82Ì
\93®
\93I
\94z
\97ñ
\82Ì
\83T
\83C
\83Y =
\90V
\82µ
\82¢
\93®
\93I
\94z
\97ñ
\82Ì
\83T
\83C
\83Y;