/*
** Splint - annotation-assisted static program checker
-** Copyright (C) 1994-2002 University of Virginia,
+** Copyright (C) 1994-2003 University of Virginia,
** Massachusetts Institute of Technology
**
** This program is free software; you can redistribute it and/or modify it
h->key = key;
h->val = val;
- llassert (val != HBUCKET_DNE); /*@i523 way bogus! */
-
+ llassert (val != HBUCKET_DNE);
return (h);
}
for (i = 0; i < h->size; i++)
{
- /*drl bee: si*/ s = message ("%q %s:%d", s, h->entries[i]->key, h->entries[i]->val);
+ s = message ("%q %s:%d", s, h->entries[i]->key, h->entries[i]->val);
}
}
h->size = 1;
h->nspace = HBUCKET_BASESIZE - 1;
h->entries = (hentry *) dmalloc (HBUCKET_BASESIZE * sizeof (*h->entries));
- /*drl bee: dm*/ h->entries[0] = e;
+ h->entries[0] = e;
return (h);
}
for (i = 0; i < h->size; i++)
{
- /*drl bee: dm*/
- /*drl bee: si*/ newentries[i] = h->entries[i];
+ newentries[i] = h->entries[i];
}
- /*@i32@*/ sfree (h->entries);
+ sfree (h->entries);
h->entries = newentries;
-/*@i23@*/ }
+ /*@-compmempass@*/
+} /*@=compmempass@*/ /* Spurious warnings reported - shouldn't need this */
static int hbucket_lookup (hbucket p_h, cstring p_key);
}
llassert (e->val != HBUCKET_DNE);
- /*drl bee: si*/ h->entries[h->size] = e;
+ h->entries[h->size] = e;
h->size++;
h->nspace--;
}
for (i = 0; i < h->size; i++)
{
- /*drl bee: si*/ if (cstring_equal (h->entries[i]->key, key))
+ if (cstring_equal (h->entries[i]->key, key))
{
return h->entries[i]->val;
}
void
cstringTable_free (/*@only@*/ cstringTable h)
{
- int i;
+ unsigned int i;
llassert (cstringTable_isDefined (h));
for (i = 0; i < h->size; i++)
{
- /*drl bee: si*/ hbucket_free (h->buckets[i]);
+ hbucket_free (h->buckets[i]);
}
sfree (h->buckets);
cstringTable_countCollisions (cstringTable h)
{
int nc = 0;
- int i;
+ unsigned int i;
llassert (cstringTable_isDefined (h));
for (i = 0; i < h->size; i++)
{
- /*drl bee: si*/ nc += hbucket_ncollisions (h->buckets[i]);
+ nc += hbucket_ncollisions (h->buckets[i]);
}
return (nc);
cstringTable_countEmpty (cstringTable h)
{
int nc = 0;
- int i;
+ unsigned int i;
llassert (cstringTable_isDefined (h));
for (i = 0; i < h->size; i++)
{
- /*drl bee: si*/ if (hbucket_isEmpty (h->buckets[i]))
+ if (hbucket_isEmpty (h->buckets[i]))
{
nc++;
}
for (p = cstring_toCharsSafe (key); *p != '\0'; p++)
{
- /*drl bee: nm*/ hash_value = (hash_value << 1) ^ g_randomNumbers[*p % 256];
+ hash_value = (hash_value << 1) ^ g_randomNumbers[*p % 256];
}
return (hash_value % h->size);
/*@only@*/ cstringTable
-cstringTable_create (int size)
+cstringTable_create (unsigned int size)
{
int i;
cstringTable h = (cstringTable) dmalloc (sizeof (*h));
/*@+loopexec@*/
for (i = 0; i < size; i++)
{
- /*drl bee: dm*/ h->buckets[i] = hbucket_undefined;
+ h->buckets[i] = hbucket_undefined;
}
/*@-loopexec@*/
return h;
cstring cstringTable_unparse (cstringTable h)
{
cstring res = cstring_newEmpty ();
- int i;
+ unsigned int i;
if (cstringTable_isDefined (h))
{
for (i = 0; i < h->size; i++)
{
- /*drl bee: si*/ hbucket hb = h->buckets[i];
+ hbucket hb = h->buckets[i];
if (hb != NULL)
{
}
}
- res = message ("%qsize: %d, collisions: %d, empty: %d",
+ res = message ("%qsize: %u, collisions: %d, empty: %d",
res,
h->size,
cstringTable_countCollisions (h),
cstringTable_stats (cstringTable h)
{
llassert (cstringTable_isDefined (h));
- return (message ("size: %d, collisions: %d, empty: %d\n",
+ return (message ("size: %u, collisions: %d, empty: %d\n",
h->size, cstringTable_countCollisions (h),
cstringTable_countEmpty (h)));
}
** rehashing based (loosely) on code by Steve Harrison
*/
- int i;
- int oldsize = h->size;
- int newsize = 1 + ((oldsize * 26244) / 10000); /* 26244 = 162^2 */
+ unsigned int i;
+ /* Fix provided by Thomas Mertz (int -> unsigned long), 21 Apr 2004 */
+ unsigned long oldsize = h->size;
+ unsigned long newsize = 1 + ((oldsize * 26244) / 10000); /* 26244 = 162^2 */
hbucket *oldbuckets = h->buckets;
h->size = newsize;
/*@+loopexec@*/
for (i = 0; i < newsize; i++)
{
- /*drl bee: dm*/ h->buckets[i] = hbucket_undefined;
+ h->buckets[i] = hbucket_undefined;
}
/*@=loopexec@*/
for (i = 0; i < oldsize; i++)
{
- /*drl bee: dm*/ hbucket bucket = oldbuckets[i];
+ hbucket bucket = oldbuckets[i];
- /*drl bee: dm*/ oldbuckets[i] = NULL;
+ oldbuckets[i] = NULL;
if (!hbucket_isNull (bucket))
{
for (j = 0; j < bucket->size; j++)
{
- /*drl bee: si*/ cstringTable_addEntry (h, bucket->entries[j]);
+ cstringTable_addEntry (h, bucket->entries[j]);
}
/*
** instead reveals a bug I don't want to deal with right now!
*/
- /*drl bee: si*/ if (hbucket_isNull (h->buckets[hindex]))
+ if (hbucket_isNull (h->buckets[hindex]))
{
- /*drl bee: si*/ h->buckets[hindex] = hbucket_single (e);
+ h->buckets[hindex] = hbucket_single (e);
h->nentries++;
}
else
hindex = cstringTable_hashValue (h, key);
e = hentry_create (key, value);
- /*drl bee: si*/ hb = h->buckets[hindex];
+ hb = h->buckets[hindex];
if (hbucket_isNull (hb))
{
- /*drl bee: si*/ h->buckets[hindex] = hbucket_single (e);
+ h->buckets[hindex] = hbucket_single (e);
}
else
{
for (i = 0; i < hb->size; i++)
{
- /*drl bee: si*/ if (cstring_equal (hb->entries[i]->key, key))
+ if (cstring_equal (hb->entries[i]->key, key))
{
- /*drl bee: si*/ hb->entries[i]->val = newval;
+ hb->entries[i]->val = newval;
return;
}
}
for (i = 0; i < hb->size; i++)
{
- /*drl bee: si*/ if (cstring_equal (hb->entries[i]->key, oldkey))
+ if (cstring_equal (hb->entries[i]->key, oldkey))
{
- /*drl bee: si*/ hb->entries[i]->key = newkey;
+ hb->entries[i]->key = newkey;
return;
}
}
for (i = 0; i < hb->size; i++)
{
- /*drl bee: si*/ if (cstring_equal (hb->entries[i]->key, key))
+ if (cstring_equal (hb->entries[i]->key, key))
{
if (i < hb->size - 1)
{
- /*drl bee: si*/
- hb->entries[i] = hb->entries[hb->size - 1];
+ hb->entries[i] = hb->entries[hb->size - 1];
}
hb->size--;