template Vector::Vector(void) : mEntries(0), mlpVectorTable(0), mlpMemPool(0) { } template Vector::~Vector() { vectorDelete(); } void FAR *operator new(size_t /*size*/,int /*n*/,void FAR *lpData) { return lpData; } template LONG Vector::size(void)const { return mEntries; } template LONG Vector::size(LONG numEntries) { vectorDelete(); if(0==(mEntries=numEntries))return 0L; vectorNew(); return mEntries; } template T &Vector::operator[](LONG itemIndex) { assert(itemIndex=mEntries)return *((T*)0); return *((T FAR *)*(mlpVectorTable+itemIndex)); } template WORD Vector::operator==(const Vector &someVector)const { if(mEntries!=someVector.mEntries)return FALSE; for(Index i=0;i WORD Vector::operator=(const Vector &someVector) { vectorDelete(); if(0==(mEntries=someVector.mEntries))return FALSE; vectorNew(); for(Index i=0;i WORD Vector::operator=(Block &someBlock) { LONG blockSize(someBlock.size()); if(!blockSize)return FALSE; size(blockSize); for(Index i=0;i //Vector::operator T*() //{ // return (T FAR *)mlpMemPool; //} template void Vector::vectorNew(void) { mlpVectorTable=(T HUGE **)::GlobalLock(::GlobalAlloc(GMEM_ZEROINIT|GMEM_FIXED,mEntries*sizeof(T FAR *))); assert(0!=mlpVectorTable); mlpMemPool=(T HUGE *)::GlobalLock(::GlobalAlloc(GMEM_ZEROINIT|GMEM_FIXED,mEntries*sizeof(T))); assert(0!=mlpMemPool); for(Index i=0;i void Vector::vectorDelete(void) { if(!mlpVectorTable)return; if(!mlpMemPool)return; for(Index i=0;i~T(); #if defined(__FLAT__) ::GlobalUnlock(::GlobalHandle(mlpMemPool)); ::GlobalFree(::GlobalHandle(mlpMemPool)); ::GlobalUnlock(::GlobalHandle(mlpVectorTable)); ::GlobalFree(mlpVectorTable); #else ::GlobalUnlock((HGLOBAL)(FP_SEG(mlpMemPool)-1)); ::GlobalFree((HGLOBAL)(FP_SEG(mlpMemPool)-1)); ::GlobalUnlock((HGLOBAL)(FP_SEG(mlpVectorTable)-1)); ::GlobalFree((HGLOBAL)(FP_SEG(mlpVectorTable)-1)); #endif mlpVectorTable=0; mlpMemPool=0; }