summaryrefslogtreecommitdiffstats
path: root/src/misc
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2014-06-19 11:26:06 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2014-06-19 11:26:06 -0700
commit0c6f196e2aed5138e2b5887a88fc92ad5a545118 (patch)
treee597e083ac6ed9b010f5229d024e1bc23578e996 /src/misc
parent9842a666e6c1d2546c940c48bbd6602a448bc01b (diff)
downloadabc-0c6f196e2aed5138e2b5887a88fc92ad5a545118.tar.gz
abc-0c6f196e2aed5138e2b5887a88fc92ad5a545118.tar.bz2
abc-0c6f196e2aed5138e2b5887a88fc92ad5a545118.zip
Experiments with MUX profiling.
Diffstat (limited to 'src/misc')
-rw-r--r--src/misc/vec/vecPtr.h25
-rw-r--r--src/misc/vec/vecStr.h25
2 files changed, 48 insertions, 2 deletions
diff --git a/src/misc/vec/vecPtr.h b/src/misc/vec/vecPtr.h
index d0204ebb..a666f45f 100644
--- a/src/misc/vec/vecPtr.h
+++ b/src/misc/vec/vecPtr.h
@@ -883,6 +883,31 @@ static void Vec_PtrUniqify( Vec_Ptr_t * p, int (*Vec_PtrSortCompare)() )
p->pArray[k++] = p->pArray[i];
p->nSize = k;
}
+static void Vec_PtrUniqify2( Vec_Ptr_t * p, int (*Vec_PtrSortCompare)(), void (*Vec_PtrObjFree)(), Vec_Int_t * vCounts )
+{
+ int i, k;
+ if ( vCounts )
+ Vec_IntFill( vCounts, 1, 1 );
+ if ( p->nSize < 2 )
+ return;
+ Vec_PtrSort( p, Vec_PtrSortCompare );
+ for ( i = k = 1; i < p->nSize; i++ )
+ if ( Vec_PtrSortCompare(p->pArray+i, p->pArray+k-1) != 0 )
+ {
+ p->pArray[k++] = p->pArray[i];
+ if ( vCounts )
+ Vec_IntPush( vCounts, 1 );
+ }
+ else
+ {
+ if ( Vec_PtrObjFree )
+ Vec_PtrObjFree( p->pArray[i] );
+ if ( vCounts )
+ Vec_IntAddToEntry( vCounts, Vec_IntSize(vCounts)-1, 1 );
+ }
+ p->nSize = k;
+ assert( vCounts == NULL || Vec_IntSize(vCounts) == Vec_PtrSize(p) );
+}
diff --git a/src/misc/vec/vecStr.h b/src/misc/vec/vecStr.h
index 4a400ce6..25a83c70 100644
--- a/src/misc/vec/vecStr.h
+++ b/src/misc/vec/vecStr.h
@@ -575,9 +575,30 @@ static inline void Vec_StrPrintNum( Vec_Str_t * p, int Num )
Num = -Num;
}
for ( i = 0; Num; Num /= 10, i++ )
- Digits[i] = (char)('0' + Num % 10);
+ Digits[i] = Num % 10;
for ( i--; i >= 0; i-- )
- Vec_StrPush( p, Digits[i] );
+ Vec_StrPush( p, (char)('0' + Digits[i]) );
+}
+static inline void Vec_StrPrintNumStar( Vec_Str_t * p, int Num, int nDigits )
+{
+ int i;
+ char Digits[16] = {0};
+ if ( Num == 0 )
+ {
+ for ( i = 0; i < nDigits; i++ )
+ Vec_StrPush( p, '0' );
+ return;
+ }
+ if ( Num < 0 )
+ {
+ Vec_StrPush( p, '-' );
+ Num = -Num;
+ nDigits--;
+ }
+ for ( i = 0; Num; Num /= 10, i++ )
+ Digits[i] = Num % 10;
+ for ( i = Abc_MaxInt(i, nDigits)-1; i >= 0; i-- )
+ Vec_StrPush( p, (char)('0' + Digits[i]) );
}
/**Function*************************************************************