From 054e2cd3a8ab4ada55db4def2d6ce7d309341e07 Mon Sep 17 00:00:00 2001 From: Alan Mishchenko Date: Thu, 26 Jul 2007 08:01:00 -0700 Subject: Version abc70726 --- src/misc/extra/extraUtilProgress.c | 18 ++++++++----- src/misc/vec/vecInt.h | 55 +++++++++++++++++++++++--------------- 2 files changed, 44 insertions(+), 29 deletions(-) (limited to 'src/misc') diff --git a/src/misc/extra/extraUtilProgress.c b/src/misc/extra/extraUtilProgress.c index 51095016..6b6d5132 100644 --- a/src/misc/extra/extraUtilProgress.c +++ b/src/misc/extra/extraUtilProgress.c @@ -68,7 +68,7 @@ ProgressBar * Extra_ProgressBarStart( FILE * pFile, int nItemsTotal ) p->nItemsTotal = nItemsTotal; p->posTotal = 78; p->posCur = 1; - p->nItemsNext = (int)((float)p->nItemsTotal/p->posTotal)*(p->posCur+5)+2; + p->nItemsNext = (int)((7.0+p->posCur)*p->nItemsTotal/p->posTotal); Extra_ProgressBarShow( p, NULL ); return p; } @@ -89,12 +89,16 @@ void Extra_ProgressBarUpdate_int( ProgressBar * p, int nItemsCur, char * pString if ( p == NULL ) return; if ( nItemsCur < p->nItemsNext ) return; - if ( nItemsCur > p->nItemsTotal ) - nItemsCur = p->nItemsTotal; - p->posCur = (int)((double)nItemsCur * p->posTotal / p->nItemsTotal); - p->nItemsNext = (int)((double)p->nItemsTotal/p->posTotal)*(p->posCur+10)+1; - if ( p->posCur == 0 ) - p->posCur = 1; + if ( nItemsCur >= p->nItemsTotal ) + { + p->posCur = 78; + p->nItemsNext = 0x7FFFFFFF; + } + else + { + p->posCur += 7; + p->nItemsNext = (int)((7.0+p->posCur)*p->nItemsTotal/p->posTotal); + } Extra_ProgressBarShow( p, pString ); } diff --git a/src/misc/vec/vecInt.h b/src/misc/vec/vecInt.h index 5c4a5ab9..df6f824c 100644 --- a/src/misc/vec/vecInt.h +++ b/src/misc/vec/vecInt.h @@ -788,15 +788,19 @@ static inline void Vec_IntSortUnsigned( Vec_Int_t * p ) ***********************************************************************/ static inline int Vec_IntTwoCountCommon( Vec_Int_t * vArr1, Vec_Int_t * vArr2 ) { - int i, k, Counter = 0; - for ( i = k = 0; i < Vec_IntSize(vArr1) && k < Vec_IntSize(vArr2); ) + int * pBeg1 = vArr1->pArray; + int * pBeg2 = vArr2->pArray; + int * pEnd1 = vArr1->pArray + vArr1->nSize; + int * pEnd2 = vArr2->pArray + vArr2->nSize; + int Counter = 0; + while ( pBeg1 < pEnd1 && pBeg2 < pEnd2 ) { - if ( Vec_IntEntry(vArr1,i) == Vec_IntEntry(vArr2,k) ) - Counter++, i++, k++; - else if ( Vec_IntEntry(vArr1,i) < Vec_IntEntry(vArr2,k) ) - i++; - else - k++; + if ( *pBeg1 == *pBeg2 ) + *pBeg1++, pBeg2++, Counter++; + else if ( *pBeg1 < *pBeg2 ) + *pBeg1++; + else + *pBeg2++; } return Counter; } @@ -814,22 +818,29 @@ static inline int Vec_IntTwoCountCommon( Vec_Int_t * vArr1, Vec_Int_t * vArr2 ) ***********************************************************************/ static inline Vec_Int_t * Vec_IntTwoMerge( Vec_Int_t * vArr1, Vec_Int_t * vArr2 ) { - Vec_Int_t * vArr; - int i, k; - vArr = Vec_IntAlloc( Vec_IntSize(vArr1) ); - for ( i = k = 0; i < Vec_IntSize(vArr1) && k < Vec_IntSize(vArr2); ) + Vec_Int_t * vArr = Vec_IntAlloc( vArr1->nSize + vArr2->nSize ); + int * pBeg = vArr->pArray; + int * pBeg1 = vArr1->pArray; + int * pBeg2 = vArr2->pArray; + int * pEnd1 = vArr1->pArray + vArr1->nSize; + int * pEnd2 = vArr2->pArray + vArr2->nSize; + while ( pBeg1 < pEnd1 && pBeg2 < pEnd2 ) { - if ( Vec_IntEntry(vArr1,i) == Vec_IntEntry(vArr2,k) ) - Vec_IntPush( vArr, Vec_IntEntry(vArr1,i) ), i++, k++; - else if ( Vec_IntEntry(vArr1,i) < Vec_IntEntry(vArr2,k) ) - Vec_IntPush( vArr, Vec_IntEntry(vArr1,i) ), i++; - else - Vec_IntPush( vArr, Vec_IntEntry(vArr2,k) ), k++; + if ( *pBeg1 == *pBeg2 ) + *pBeg++ = *pBeg1++, pBeg2++; + else if ( *pBeg1 < *pBeg2 ) + *pBeg++ = *pBeg1++; + else + *pBeg++ = *pBeg2++; } - for ( ; i < Vec_IntSize(vArr1); i++ ) - Vec_IntPush( vArr, Vec_IntEntry(vArr1,i) ); - for ( ; k < Vec_IntSize(vArr2); k++ ) - Vec_IntPush( vArr, Vec_IntEntry(vArr2,k) ); + while ( pBeg1 < pEnd1 ) + *pBeg++ = *pBeg1++; + while ( pBeg2 < pEnd2 ) + *pBeg++ = *pBeg2++; + vArr->nSize = pBeg - vArr->pArray; + assert( vArr->nSize <= vArr->nCap ); + assert( vArr->nSize >= vArr1->nSize ); + assert( vArr->nSize >= vArr2->nSize ); return vArr; } -- cgit v1.2.3