Курсовая работа: Системное программирование для операционных систем
template <class T> void __fastcall TArray<T>::Clear(void) { fCount=0; }
template <class T> void __fastcall TArray<T>::SetCount(int NewCount)
{
fCount=NewCount;
if(fCount<0) fCount=0;
if(fCount>fLength) fCount=fLength;
}
template <class T> void __fastcall TArray<T>::Insert(int Index,T Item)
{
if(Index<0 || Index>fCount) return;
if (fCount==fLength) SetLength(fLength+5);
if (Index<fCount) Move(&fItems[Index],&fItems[Index+1],(fCount-Index)*sizeof(T));
fItems[Index]=Item;
fCount++;
}
template <class T> void __fastcall TArray<T>::Delete(int Index)
{
if(Index<0 || Index>fCount-1) return;
if (Index<fCount-1) Move(&fItems[Index+1],&fItems[Index],(fCount-1-Index)*sizeof(T));
fCount--;
//if (fCount==fLength-6) SetLength(fCount+1);
}
template <class T> void __fastcall TArray<T>::SetLength (int NewLen)
{
if (NewLen<0 || fLength==0 && NewLen==0) return; else
if (fLength==0) fItems=(T *)SysGetMem(NewLen*sizeof(T));else
if (NewLen==0) SysFreeMem(fItems);else fItems=(T *)SysReallocMem(fItems,NewLen*sizeof(T));
fLength=NewLen;
if (fLength<fCount) fCount=fLength;