220

220



void * Drgbase::FVInsert(void * pv, long lindex)

{

BYTE * pbLindex;

pbLindex = m_rgb + (lindex * m_lcbSize);

if(pbLindex < m_pbMac)

{

II Indeks mieści się w granicach.

// Sprawdzenie, czy trzeba powiększyć tablicę. if(m_pbMac == m_pbMax && !FGrow()) goto LFail;

// Mamy wystarczająco dużo miejsca, żeby dokonać wstawienia II Przesunięcie tablicy o mJcbSize

// memmove zapewnia, że mogą być skopiowane nakładające sie obszary. // Nie trzeba się więc o to martwić.

memmove(( BYTE *)(pbLindex + m_lcbSize), pbLindex, m_pbMac -pbLindex);

memcpy(pbLindex, pv, mJcbSize); pv = pbLindex; m_pbMac += mJcbSize;

}

else

{

// Nie można oczywiście wstawić za ostatnim elementem. Zamiast tego II używamy dołączenia, return PvAppend(pv);

}

return pv;

LFail:

return NULL;

void * Drgbase::PvAt(long lindex) const

{

void * pv;

if(!m_rgb)

return NULL;

pv = (void *)(m_rgb + (lindex * mJcbSize)); if(pv < (void *)m_pbMac) return pv; return NULL;


Wyszukiwarka

Podobne podstrony:
145 TIF private: BYTE* m_pbMtabl; public: void * PvDołącz(void * pv, long lcElem=1); void * PvPrzy(l
215 TIF void * PvAppend(void * pv, long lcltem=1); void * PvAt(long lindex) const; BOOL FRemove(long
long Drgbase::LCount(void) const{ return ((m_pbMac - m_rgb)/m_lcbSize);} BOOL Drgbase::FRemove(long
Poznaj C++ w$ godziny0076 62Godzina 5 A oto kilka poprawnych definicji: long Pole(long d, long s){ r
void main(void){ long Pole; long Obwód; long Promień = 3; cout « "Pole kola wynosi: "
char, class, float, if, int, short, signed, do, long, void, while cout « "Pole kola wynosi: &qu
++m_clMac; return m_clMac -1; void SArray::QuickSort(int iLeft, int iRight){ long IKey; int i; 

więcej podobnych podstron