Commit c7d30f66 by Dennis Glatting

minor documentation changes.

From-SVN: r2008
parent 893cc958
...@@ -25,10 +25,13 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ ...@@ -25,10 +25,13 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
the executable file might be covered by the GNU General Public License. */ the executable file might be covered by the GNU General Public License. */
/* /*
$Header: /usr/user/dennis_glatting/ObjC/c-runtime/dispatch.common/RCS/hash.h,v 0.9 1992/04/13 11:43:08 dennisg Exp dennisg $ $Header: /usr/user/dennis_glatting/ObjC/c-runtime/dispatch/RCS/hash.h,v 0.10 1992/08/18 04:46:58 dglattin Exp $
$Author: dennisg $ $Author: dglattin $
$Date: 1992/04/13 11:43:08 $ $Date: 1992/08/18 04:46:58 $
$Log: hash.h,v $ $Log: hash.h,v $
* Revision 0.10 1992/08/18 04:46:58 dglattin
* Saving a working version before release.
*
* Revision 0.9 1992/04/13 11:43:08 dennisg * Revision 0.9 1992/04/13 11:43:08 dennisg
* Check in after array version of run-time works. * Check in after array version of run-time works.
* Expect more changes as hash version and other changes are made. * Expect more changes as hash version and other changes are made.
...@@ -148,7 +151,7 @@ typedef struct cache { ...@@ -148,7 +151,7 @@ typedef struct cache {
a power of two. */ a power of two. */
entriesInHash, /* Current number of entries entriesInHash, /* Current number of entries
in the hash table. */ in the hash table. */
mask; /* Precomputed mask. */ mask; /* Precomputed mask. */
/* /*
* Variables used to implement indexing * Variables used to implement indexing
* through the hash table. * through the hash table.
...@@ -156,16 +159,16 @@ typedef struct cache { ...@@ -156,16 +159,16 @@ typedef struct cache {
u_int lastBucket; /* Tracks which entry in the u_int lastBucket; /* Tracks which entry in the
array where the last value array where the last value
was returned. */ was returned. */
/* Function used to compute /* Function used to compute
a hash code given a key. a hash code given a key.
This function is specified This function is
when the hash table is specified when the hash
created. */ table is created. */
HashFunc hashFunc; HashFunc hashFunc;
/* Function used to compare /* Function used to compare
two hash keys to determine two hash keys to determine
if they are equal. */ if they are equal. */
CompareFunc compareFunc; CompareFunc compareFunc;
} Cache, *Cache_t; } Cache, *Cache_t;
...@@ -211,9 +214,9 @@ hash_remove (Cache_t theCache, void* aKey); ...@@ -211,9 +214,9 @@ hash_remove (Cache_t theCache, void* aKey);
CacheNode_t CacheNode_t
hash_next (Cache_t theCache, CacheNode_t aCacheNode); hash_next (Cache_t theCache, CacheNode_t aCacheNode);
/* Used to return a value from /* Used to return a value from
a hash table using a given a hash table using a given
key. */ key. */
void* void*
hash_value_for_key (Cache_t theCache, void* aKey); hash_value_for_key (Cache_t theCache, void* aKey);
...@@ -227,37 +230,38 @@ hash_value_for_key (Cache_t theCache, void* aKey); ...@@ -227,37 +230,38 @@ hash_value_for_key (Cache_t theCache, void* aKey);
************************************************/ ************************************************/
/* Calculate a hash code by /* Calculate a hash code by
performing some manipulation performing some
of the key pointer. */ manipulation of the key
pointer. */
static inline u_int static inline u_int
intHash(Cache_t theCache, void* aKey) { intHash(Cache_t theCache, void* aKey) {
assert(sizeof (u_int) == sizeof (aKey)); assert(sizeof (u_int) == sizeof (aKey));
return ((u_int)aKey >> (sizeof(void*) - 1)) & theCache->mask ; return ((u_int)aKey >> (sizeof(void*) - 1)) & theCache->mask ;
} }
/* Calculate a hash code by /* Calculate a hash code by
iterating over a NULL iterating over a NULL
terminate string. */ terminate string. */
static inline u_int static inline u_int
strHash(Cache_t theCache, void* aKey) { strHash(Cache_t theCache, void* aKey) {
u_int ret = 0; u_int ret = 0;
u_int ctr = 0; u_int ctr = 0;
while(*(char*)aKey) { while(*(char*)aKey) {
ret ^= *(char*)aKey++ << ctr; ret ^= *(char*)aKey++ << ctr;
ctr = (ctr + 1) % sizeof(void*); ctr = (ctr + 1) % sizeof(void*);
} }
return ret & theCache->mask ; return ret & theCache->mask ;
} }
/* Compare two integers. */ /* Compare two integers. */
static inline int static inline int
intCmp(void* k1, void* k2) { intCmp(void* k1, void* k2) {
...@@ -266,12 +270,12 @@ intCmp(void* k1, void* k2) { ...@@ -266,12 +270,12 @@ intCmp(void* k1, void* k2) {
} }
/* Compare two strings. */ /* Compare two strings. */
static inline int static inline int
strCmp(void* k1, void* k2) { strCmp(void* k1, void* k2) {
return !strcmp( k1, k2 ); return !strcmp( k1, k2 );
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment