now compilable by C++
This commit is contained in:
@@ -85,7 +85,8 @@ LOCAL bucketSET BSET[] = {
|
||||
{bucketStringHash, bucketStringCompare, bidtString}
|
||||
};
|
||||
|
||||
LOCAL int bucketAddItem(BUCKET *prb, bucketSET *pBSET, const void *pId, void *pApp);
|
||||
LOCAL int bucketAddItem(BUCKET *prb, bucketSET *pBSET,
|
||||
const void *pId, const void *pApp);
|
||||
LOCAL int bucketRemoveItem (BUCKET *prb, bucketSET *pBSET, const void *pId);
|
||||
LOCAL void *bucketLookupItem(BUCKET *pb, bucketSET *pBSET, const void *pId);
|
||||
|
||||
@@ -102,74 +103,75 @@ LOCAL void *bucketLookupItem(BUCKET *pb, bucketSET *pBSET, const void *pId);
|
||||
#define BUCKET_MAX_WIDTH 12
|
||||
|
||||
#ifdef DEBUG
|
||||
#error This is out of date
|
||||
main()
|
||||
{
|
||||
BUCKETID id1;
|
||||
BUCKETID id2;
|
||||
char *pValSave1;
|
||||
char *pValSave2;
|
||||
int s;
|
||||
BUCKET *pb;
|
||||
char *pVal;
|
||||
unsigned i;
|
||||
clock_t start, finish;
|
||||
double duration;
|
||||
const int LOOPS = 500000;
|
||||
|
||||
pb = bucketCreate(8);
|
||||
if(!pb){
|
||||
return -1;
|
||||
}
|
||||
|
||||
id1 = 0x1000a432;
|
||||
pValSave1 = "fred";
|
||||
s = bucketAddItemUnsignedId(pb, &id1, pValSave1);
|
||||
assert (s == S_bucket_success);
|
||||
|
||||
pValSave2 = "jane";
|
||||
s = bucketAddItemStringId(pb, pValSave2, pValSave2);
|
||||
assert (s == S_bucket_success);
|
||||
|
||||
start = clock();
|
||||
for(i=0; i<LOOPS; i++){
|
||||
pVal = bucketLookupItem(pb, id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItem(pb, id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItem(pb, id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItem(pb, id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItem(pb, id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItem(pb, id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItem(pb, id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItem(pb, id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItem(pb, id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItem(pb, id2);
|
||||
assert(pVal == pValSave2);
|
||||
}
|
||||
finish = clock();
|
||||
|
||||
duration = finish-start;
|
||||
duration = duration/CLOCKS_PER_SEC;
|
||||
printf("It took %15.10f total sec\n", duration);
|
||||
duration = duration/LOOPS;
|
||||
duration = duration/10;
|
||||
duration = duration * 1e6;
|
||||
printf("It took %15.10f u sec per hash lookup\n", duration);
|
||||
|
||||
bucketShow(pb);
|
||||
|
||||
return S_bucket_success;
|
||||
unsigned id1;
|
||||
unsigned id2;
|
||||
char *pValSave1;
|
||||
char *pValSave2;
|
||||
int s;
|
||||
BUCKET *pb;
|
||||
char *pVal;
|
||||
unsigned i;
|
||||
clock_t start, finish;
|
||||
double duration;
|
||||
const int LOOPS = 500000;
|
||||
|
||||
pb = bucketCreate(8);
|
||||
if(!pb){
|
||||
return -1;
|
||||
}
|
||||
|
||||
id1 = 0x1000a432;
|
||||
pValSave1 = "fred";
|
||||
s = bucketAddItemUnsignedId(pb, &id1, pValSave1);
|
||||
assert (s == S_bucket_success);
|
||||
|
||||
pValSave2 = "jane";
|
||||
id2 = 0x0000a432;
|
||||
s = bucketAddItemUnsignedId(pb, &id2, pValSave2);
|
||||
assert (s == S_bucket_success);
|
||||
|
||||
start = clock();
|
||||
for(i=0; i<LOOPS; i++){
|
||||
pVal = bucketLookupItemUnsignedId(pb, &id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItemUnsignedId(pb, &id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItemUnsignedId(pb, &id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItemUnsignedId(pb, &id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItemUnsignedId(pb, &id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItemUnsignedId(pb, &id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItemUnsignedId(pb, &id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItemUnsignedId(pb, &id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItemUnsignedId(pb, &id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItemUnsignedId(pb, &id2);
|
||||
assert(pVal == pValSave2);
|
||||
}
|
||||
finish = clock();
|
||||
|
||||
duration = finish-start;
|
||||
duration = duration/CLOCKS_PER_SEC;
|
||||
printf("It took %15.10f total sec\n", duration);
|
||||
duration = duration/LOOPS;
|
||||
duration = duration/10;
|
||||
duration = duration * 1e6;
|
||||
printf("It took %15.10f u sec per hash lookup\n", duration);
|
||||
|
||||
bucketShow(pb);
|
||||
|
||||
return S_bucket_success;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* bucketUnsignedCompare()
|
||||
@@ -410,19 +412,19 @@ BUCKET *prb;
|
||||
/*
|
||||
* bucketAddItem()
|
||||
*/
|
||||
int bucketAddItemUnsignedId(BUCKET *prb, const unsigned *pId, void *pApp)
|
||||
int bucketAddItemUnsignedId(BUCKET *prb, const unsigned *pId, const void *pApp)
|
||||
{
|
||||
return bucketAddItem(prb, &BSET[bidtUnsigned], pId, pApp);
|
||||
}
|
||||
int bucketAddItemPointerId(BUCKET *prb, void * const *pId, void *pApp)
|
||||
int bucketAddItemPointerId(BUCKET *prb, void * const *pId, const void *pApp)
|
||||
{
|
||||
return bucketAddItem(prb, &BSET[bidtPointer], pId, pApp);
|
||||
}
|
||||
int bucketAddItemStringId(BUCKET *prb, const char *pId, void *pApp)
|
||||
int bucketAddItemStringId(BUCKET *prb, const char *pId, const void *pApp)
|
||||
{
|
||||
return bucketAddItem(prb, &BSET[bidtString], pId, pApp);
|
||||
}
|
||||
LOCAL int bucketAddItem(BUCKET *prb, bucketSET *pBSET, const void *pId, void *pApp)
|
||||
LOCAL int bucketAddItem(BUCKET *prb, bucketSET *pBSET, const void *pId, const void *pApp)
|
||||
{
|
||||
BUCKETID hashid;
|
||||
ITEM **ppi;
|
||||
@@ -548,7 +550,7 @@ LOCAL void *bucketLookupItem (BUCKET *pb, bucketSET *pBSET, const void *pId)
|
||||
*/
|
||||
ppi = (*pBSET->pCompare) (&pb->pTable[hashid], pId);
|
||||
if(ppi){
|
||||
return (*ppi)->pApp;
|
||||
return (void *) (*ppi)->pApp;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -85,7 +85,8 @@ LOCAL bucketSET BSET[] = {
|
||||
{bucketStringHash, bucketStringCompare, bidtString}
|
||||
};
|
||||
|
||||
LOCAL int bucketAddItem(BUCKET *prb, bucketSET *pBSET, const void *pId, void *pApp);
|
||||
LOCAL int bucketAddItem(BUCKET *prb, bucketSET *pBSET,
|
||||
const void *pId, const void *pApp);
|
||||
LOCAL int bucketRemoveItem (BUCKET *prb, bucketSET *pBSET, const void *pId);
|
||||
LOCAL void *bucketLookupItem(BUCKET *pb, bucketSET *pBSET, const void *pId);
|
||||
|
||||
@@ -102,74 +103,75 @@ LOCAL void *bucketLookupItem(BUCKET *pb, bucketSET *pBSET, const void *pId);
|
||||
#define BUCKET_MAX_WIDTH 12
|
||||
|
||||
#ifdef DEBUG
|
||||
#error This is out of date
|
||||
main()
|
||||
{
|
||||
BUCKETID id1;
|
||||
BUCKETID id2;
|
||||
char *pValSave1;
|
||||
char *pValSave2;
|
||||
int s;
|
||||
BUCKET *pb;
|
||||
char *pVal;
|
||||
unsigned i;
|
||||
clock_t start, finish;
|
||||
double duration;
|
||||
const int LOOPS = 500000;
|
||||
|
||||
pb = bucketCreate(8);
|
||||
if(!pb){
|
||||
return -1;
|
||||
}
|
||||
|
||||
id1 = 0x1000a432;
|
||||
pValSave1 = "fred";
|
||||
s = bucketAddItemUnsignedId(pb, &id1, pValSave1);
|
||||
assert (s == S_bucket_success);
|
||||
|
||||
pValSave2 = "jane";
|
||||
s = bucketAddItemStringId(pb, pValSave2, pValSave2);
|
||||
assert (s == S_bucket_success);
|
||||
|
||||
start = clock();
|
||||
for(i=0; i<LOOPS; i++){
|
||||
pVal = bucketLookupItem(pb, id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItem(pb, id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItem(pb, id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItem(pb, id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItem(pb, id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItem(pb, id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItem(pb, id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItem(pb, id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItem(pb, id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItem(pb, id2);
|
||||
assert(pVal == pValSave2);
|
||||
}
|
||||
finish = clock();
|
||||
|
||||
duration = finish-start;
|
||||
duration = duration/CLOCKS_PER_SEC;
|
||||
printf("It took %15.10f total sec\n", duration);
|
||||
duration = duration/LOOPS;
|
||||
duration = duration/10;
|
||||
duration = duration * 1e6;
|
||||
printf("It took %15.10f u sec per hash lookup\n", duration);
|
||||
|
||||
bucketShow(pb);
|
||||
|
||||
return S_bucket_success;
|
||||
unsigned id1;
|
||||
unsigned id2;
|
||||
char *pValSave1;
|
||||
char *pValSave2;
|
||||
int s;
|
||||
BUCKET *pb;
|
||||
char *pVal;
|
||||
unsigned i;
|
||||
clock_t start, finish;
|
||||
double duration;
|
||||
const int LOOPS = 500000;
|
||||
|
||||
pb = bucketCreate(8);
|
||||
if(!pb){
|
||||
return -1;
|
||||
}
|
||||
|
||||
id1 = 0x1000a432;
|
||||
pValSave1 = "fred";
|
||||
s = bucketAddItemUnsignedId(pb, &id1, pValSave1);
|
||||
assert (s == S_bucket_success);
|
||||
|
||||
pValSave2 = "jane";
|
||||
id2 = 0x0000a432;
|
||||
s = bucketAddItemUnsignedId(pb, &id2, pValSave2);
|
||||
assert (s == S_bucket_success);
|
||||
|
||||
start = clock();
|
||||
for(i=0; i<LOOPS; i++){
|
||||
pVal = bucketLookupItemUnsignedId(pb, &id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItemUnsignedId(pb, &id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItemUnsignedId(pb, &id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItemUnsignedId(pb, &id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItemUnsignedId(pb, &id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItemUnsignedId(pb, &id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItemUnsignedId(pb, &id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItemUnsignedId(pb, &id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItemUnsignedId(pb, &id1);
|
||||
assert(pVal == pValSave1);
|
||||
pVal = bucketLookupItemUnsignedId(pb, &id2);
|
||||
assert(pVal == pValSave2);
|
||||
}
|
||||
finish = clock();
|
||||
|
||||
duration = finish-start;
|
||||
duration = duration/CLOCKS_PER_SEC;
|
||||
printf("It took %15.10f total sec\n", duration);
|
||||
duration = duration/LOOPS;
|
||||
duration = duration/10;
|
||||
duration = duration * 1e6;
|
||||
printf("It took %15.10f u sec per hash lookup\n", duration);
|
||||
|
||||
bucketShow(pb);
|
||||
|
||||
return S_bucket_success;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* bucketUnsignedCompare()
|
||||
@@ -410,19 +412,19 @@ BUCKET *prb;
|
||||
/*
|
||||
* bucketAddItem()
|
||||
*/
|
||||
int bucketAddItemUnsignedId(BUCKET *prb, const unsigned *pId, void *pApp)
|
||||
int bucketAddItemUnsignedId(BUCKET *prb, const unsigned *pId, const void *pApp)
|
||||
{
|
||||
return bucketAddItem(prb, &BSET[bidtUnsigned], pId, pApp);
|
||||
}
|
||||
int bucketAddItemPointerId(BUCKET *prb, void * const *pId, void *pApp)
|
||||
int bucketAddItemPointerId(BUCKET *prb, void * const *pId, const void *pApp)
|
||||
{
|
||||
return bucketAddItem(prb, &BSET[bidtPointer], pId, pApp);
|
||||
}
|
||||
int bucketAddItemStringId(BUCKET *prb, const char *pId, void *pApp)
|
||||
int bucketAddItemStringId(BUCKET *prb, const char *pId, const void *pApp)
|
||||
{
|
||||
return bucketAddItem(prb, &BSET[bidtString], pId, pApp);
|
||||
}
|
||||
LOCAL int bucketAddItem(BUCKET *prb, bucketSET *pBSET, const void *pId, void *pApp)
|
||||
LOCAL int bucketAddItem(BUCKET *prb, bucketSET *pBSET, const void *pId, const void *pApp)
|
||||
{
|
||||
BUCKETID hashid;
|
||||
ITEM **ppi;
|
||||
@@ -548,7 +550,7 @@ LOCAL void *bucketLookupItem (BUCKET *pb, bucketSET *pBSET, const void *pId)
|
||||
*/
|
||||
ppi = (*pBSET->pCompare) (&pb->pTable[hashid], pId);
|
||||
if(ppi){
|
||||
return (*ppi)->pApp;
|
||||
return (void *) (*ppi)->pApp;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user