Author: bdonlan
Date: 2005-06-01 14:15:07 -0400 (Wed, 01 Jun 2005)
New Revision: 744

Added:
   trunk/clients/havercurs/GNUmakefile
Removed:
   trunk/clients/havercurs/hashtable.c
   trunk/clients/havercurs/hashtable.h
Modified:
   trunk/
   trunk/clients/havercurs/cmdline.c
   trunk/clients/havercurs/cmdline.h
   trunk/clients/havercurs/display.c
   trunk/clients/havercurs/display.h
   trunk/clients/havercurs/entry.c
   trunk/clients/havercurs/entry.h
   trunk/clients/havercurs/event.c
   trunk/clients/havercurs/event.h
   trunk/clients/havercurs/lineio.c
   trunk/clients/havercurs/lineio.h
   trunk/clients/havercurs/main.c
   trunk/clients/havercurs/mymalloc.c
   trunk/clients/havercurs/mymalloc.h
   trunk/clients/havercurs/net.c
   trunk/clients/havercurs/net.h
   trunk/clients/havercurs/trie.c
   trunk/clients/havercurs/trie.h
Log:
 [EMAIL PROTECTED]:  bdonlan | 2005-05-07 15:08:02 -0400
 vim settings, copy makefile from other project



Property changes on: trunk
___________________________________________________________________
Name: svk:merge
   - 1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local/trunk:11166
1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local/trunk-merge-10131:11178
27e50396-46e3-0310-8b22-ae223a1f35ce:/local:212
e9404bb1-7af0-0310-a7ff-e22194cd388b:/haver/local:1040
edfcd8bd-4ce7-0310-a97e-bb1efd40edf3:/local:238
   + 1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/havercurs-objc:40764
1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local/trunk:11166
1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local/trunk-merge-10131:11178
27e50396-46e3-0310-8b22-ae223a1f35ce:/local:212
e9404bb1-7af0-0310-a7ff-e22194cd388b:/haver/local:1040
edfcd8bd-4ce7-0310-a97e-bb1efd40edf3:/local:238

Added: trunk/clients/havercurs/GNUmakefile
===================================================================
--- trunk/clients/havercurs/GNUmakefile 2005-05-31 04:02:26 UTC (rev 743)
+++ trunk/clients/havercurs/GNUmakefile 2005-06-01 18:15:07 UTC (rev 744)
@@ -0,0 +1,9 @@
+include $(GNUSTEP_MAKEFILES)/common.make
+
+OBJCFLAGS += -Wno-import -ggdb3 -O0
+
+TOOL_NAME=contact_test
+contact_test_OBJC_FILES=ContactTest.m SHA1.m UDPSocket.m Contact.m
+contact_test_C_FILES=sha1_c.c
+
+include $(GNUSTEP_MAKEFILES)/tool.make

Modified: trunk/clients/havercurs/cmdline.c
===================================================================
--- trunk/clients/havercurs/cmdline.c   2005-05-31 04:02:26 UTC (rev 743)
+++ trunk/clients/havercurs/cmdline.c   2005-06-01 18:15:07 UTC (rev 744)
@@ -1,4 +1,4 @@
-/* vim: set ts=4 sw=4 expandtab si ai sta tw=104:
+/* vim: ft=objc set ts=4 sw=4 expandtab si ai sta tw=104:
  * cmdline.h - Functions for processing and dispatching commands
  * 
  * Copyright (C) 2004 Bryan Donlan

Modified: trunk/clients/havercurs/cmdline.h
===================================================================
--- trunk/clients/havercurs/cmdline.h   2005-05-31 04:02:26 UTC (rev 743)
+++ trunk/clients/havercurs/cmdline.h   2005-06-01 18:15:07 UTC (rev 744)
@@ -1,4 +1,4 @@
-/* vim: set ts=4 sw=4 expandtab si ai sta tw=104:
+/* vim: ft=objc set ts=4 sw=4 expandtab si ai sta tw=104:
  * cmdline.h - Functions for processing and dispatching commands
  * 
  * Copyright (C) 2004 Bryan Donlan

Modified: trunk/clients/havercurs/display.c
===================================================================
--- trunk/clients/havercurs/display.c   2005-05-31 04:02:26 UTC (rev 743)
+++ trunk/clients/havercurs/display.c   2005-06-01 18:15:07 UTC (rev 744)
@@ -1,4 +1,4 @@
-/* vim: set ts=4 sw=4 expandtab si ai sta tw=104:
+/* vim: ft=objc set ts=4 sw=4 expandtab si ai sta tw=104:
  *
  * Copyright (C) 2004 Bryan Donlan
  * 

Modified: trunk/clients/havercurs/display.h
===================================================================
--- trunk/clients/havercurs/display.h   2005-05-31 04:02:26 UTC (rev 743)
+++ trunk/clients/havercurs/display.h   2005-06-01 18:15:07 UTC (rev 744)
@@ -1,4 +1,4 @@
-/* vim: set ts=4 sw=4 expandtab si ai sta tw=104:
+/* vim: ft=objc set ts=4 sw=4 expandtab si ai sta tw=104:
  *
  * Copyright (C) 2004 Bryan Donlan
  * 

Modified: trunk/clients/havercurs/entry.c
===================================================================
--- trunk/clients/havercurs/entry.c     2005-05-31 04:02:26 UTC (rev 743)
+++ trunk/clients/havercurs/entry.c     2005-06-01 18:15:07 UTC (rev 744)
@@ -1,4 +1,4 @@
-/* vim: set ts=4 sw=4 expandtab si ai sta tw=104:
+/* vim: ft=objc set ts=4 sw=4 expandtab si ai sta tw=104:
  *
  * Copyright (C) 2004 Bryan Donlan
  * 

Modified: trunk/clients/havercurs/entry.h
===================================================================
--- trunk/clients/havercurs/entry.h     2005-05-31 04:02:26 UTC (rev 743)
+++ trunk/clients/havercurs/entry.h     2005-06-01 18:15:07 UTC (rev 744)
@@ -1,4 +1,4 @@
-/* vim: set ts=4 sw=4 expandtab si ai sta tw=104:
+/* vim: ft=objc set ts=4 sw=4 expandtab si ai sta tw=104:
  *
  * Copyright (C) 2004 Bryan Donlan
  * 

Modified: trunk/clients/havercurs/event.c
===================================================================
--- trunk/clients/havercurs/event.c     2005-05-31 04:02:26 UTC (rev 743)
+++ trunk/clients/havercurs/event.c     2005-06-01 18:15:07 UTC (rev 744)
@@ -1,4 +1,4 @@
-/* vim: set ts=4 sw=4 expandtab si ai sta tw=104:
+/* vim: ft=objc set ts=4 sw=4 expandtab si ai sta tw=104:
  *
  * Copyright (C) 2004 Bryan Donlan
  * 

Modified: trunk/clients/havercurs/event.h
===================================================================
--- trunk/clients/havercurs/event.h     2005-05-31 04:02:26 UTC (rev 743)
+++ trunk/clients/havercurs/event.h     2005-06-01 18:15:07 UTC (rev 744)
@@ -1,4 +1,4 @@
-/* vim: set ts=4 sw=4 expandtab si ai sta tw=104:
+/* vim: ft=objc set ts=4 sw=4 expandtab si ai sta tw=104:
  *
  * Copyright (C) 2004 Bryan Donlan
  * 

Deleted: trunk/clients/havercurs/hashtable.c
===================================================================
--- trunk/clients/havercurs/hashtable.c 2005-05-31 04:02:26 UTC (rev 743)
+++ trunk/clients/havercurs/hashtable.c 2005-06-01 18:15:07 UTC (rev 744)
@@ -1,695 +0,0 @@
-/*--------------------------------------------------------------------------*\
- *                   -----===== HashTable =====-----
- *
- * Author: Keith Pomakis ([EMAIL PROTECTED])
- * Date:   August, 1998
- * Released to the public domain.
- *
- *--------------------------------------------------------------------------
- * $Id: hashtable.c,v 1.4 2000/08/02 19:01:13 pomakis Exp pomakis $
-\*--------------------------------------------------------------------------*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <assert.h>
-#include "hashtable.h"
-
-static int pointercmp(const void *pointer1, const void *pointer2);
-static unsigned long pointerHashFunction(const void *pointer);
-static int isProbablePrime(long number);
-static long calculateIdealNumOfBuckets(HashTable *hashTable);
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableCreate() - creates a new HashTable
- *  DESCRIPTION:
- *      Creates a new HashTable.  When finished with this HashTable, it
- *      should be explicitly destroyed by calling the HashTableDestroy()
- *      function.
- *  EFFICIENCY:
- *      O(1)
- *  ARGUMENTS:
- *      numOfBuckets - the number of buckets to start the HashTable out with.
- *                     Must be greater than zero, and should be prime.
- *                     Ideally, the number of buckets should between 1/5
- *                     and 1 times the expected number of elements in the
- *                     HashTable.  Values much more or less than this will
- *                     result in wasted memory or decreased performance
- *                     respectively.  The number of buckets in a HashTable
- *                     can be re-calculated to an appropriate number by
- *                     calling the HashTableRehash() function once the
- *                     HashTable has been populated.  The number of buckets
- *                     in a HashTable may also be re-calculated
- *                     automatically if the ratio of elements to buckets
- *                     passes the thresholds set by HashTableSetIdealRatio().
- *  RETURNS:
- *      HashTable    - a new Hashtable, or NULL on error
-\*--------------------------------------------------------------------------*/
-
-HashTable *HashTableCreate(long numOfBuckets) {
-    HashTable *hashTable;
-    int i;
-
-    assert(numOfBuckets > 0);
-
-    hashTable = (HashTable *) malloc(sizeof(HashTable));
-    if (hashTable == NULL)
-        return NULL;
-
-    hashTable->bucketArray = (KeyValuePair **)
-                        malloc(numOfBuckets * sizeof(KeyValuePair *));
-    if (hashTable->bucketArray == NULL) {
-        free(hashTable);
-        return NULL;
-    }
-    
-    hashTable->numOfBuckets = numOfBuckets;
-    hashTable->numOfElements = 0;
-
-    for (i=0; i<numOfBuckets; i++)
-        hashTable->bucketArray[i] = NULL;
-
-    hashTable->idealRatio = 3.0;
-    hashTable->lowerRehashThreshold = 0.0;
-    hashTable->upperRehashThreshold = 15.0;
-
-    hashTable->keycmp = pointercmp;
-    hashTable->valuecmp = pointercmp;
-    hashTable->hashFunction = pointerHashFunction;
-    hashTable->keyDeallocator = NULL;
-    hashTable->valueDeallocator = NULL;
-
-    return hashTable;
-}
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableDestroy() - destroys an existing HashTable
- *  DESCRIPTION:
- *      Destroys an existing HashTable.
- *  EFFICIENCY:
- *      O(n)
- *  ARGUMENTS:
- *      hashTable    - the HashTable to destroy
- *  RETURNS:
- *      <nothing>
-\*--------------------------------------------------------------------------*/
-
-void HashTableDestroy(HashTable *hashTable) {
-    int i;
-
-    for (i=0; i<hashTable->numOfBuckets; i++) {
-        KeyValuePair *pair = hashTable->bucketArray[i];
-        while (pair != NULL) {
-            KeyValuePair *nextPair = pair->next;
-            if (hashTable->keyDeallocator != NULL)
-                hashTable->keyDeallocator((void *) pair->key);
-            if (hashTable->valueDeallocator != NULL)
-                hashTable->valueDeallocator(pair->value);
-            free(pair);
-            pair = nextPair;
-        }
-    }
-
-    free(hashTable->bucketArray);
-    free(hashTable);
-}
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableContainsKey() - checks the existence of a key in a HashTable
- *  DESCRIPTION:
- *      Determines whether or not the specified HashTable contains the
- *      specified key.  Uses the comparison function specified by
- *      HashTableSetKeyComparisonFunction().
- *  EFFICIENCY:
- *      O(1), assuming a good hash function and element-to-bucket ratio
- *  ARGUMENTS:
- *      hashTable    - the HashTable to search
- *      key          - the key to search for
- *  RETURNS:
- *      bool         - whether or not the specified HashTable contains the
- *                     specified key.
-\*--------------------------------------------------------------------------*/
-
-int HashTableContainsKey(const HashTable *hashTable, const void *key) {
-    return (HashTableGet(hashTable, key) != NULL);
-}
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableContainsValue()
- *                         - checks the existence of a value in a HashTable
- *  DESCRIPTION:
- *      Determines whether or not the specified HashTable contains the
- *      specified value.  Unlike HashTableContainsKey(), this function is
- *      not very efficient, since it has to scan linearly looking for a
- *      match.  Uses the comparison function specified by
- *      HashTableSetValueComparisonFunction().
- *  EFFICIENCY:
- *      O(n)
- *  ARGUMENTS:
- *      hashTable    - the HashTable to search
- *      value        - the value to search for
- *  RETURNS:
- *      bool         - whether or not the specified HashTable contains the
- *                     specified value.
-\*--------------------------------------------------------------------------*/
-
-int HashTableContainsValue(const HashTable *hashTable, const void *value) {
-    int i;
-
-    for (i=0; i<hashTable->numOfBuckets; i++) {
-        KeyValuePair *pair = hashTable->bucketArray[i];
-        while (pair != NULL) {
-            if (hashTable->valuecmp(value, pair->value) == 0)
-                return 1;
-            pair = pair->next;
-        }
-    }
-
-    return 0;
-}
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTablePut() - adds a key/value pair to a HashTable
- *  DESCRIPTION:
- *      Adds the specified key/value pair to the specified HashTable.  If
- *      the key already exists in the HashTable (determined by the comparison
- *      function specified by HashTableSetKeyComparisonFunction()), its value
- *      is replaced by the new value.  May trigger an auto-rehash (see
- *      HashTableSetIdealRatio()).  It is illegal to specify NULL as the
- *      key or value.
- *  EFFICIENCY:
- *      O(1), assuming a good hash function and element-to-bucket ratio
- *  ARGUMENTS:
- *      hashTable    - the HashTable to add to
- *      key          - the key to add or whose value to replace
- *      value        - the value associated with the key
- *  RETURNS:
- *      err          - 0 if successful, -1 if an error was encountered
-\*--------------------------------------------------------------------------*/
-
-int HashTablePut(HashTable *hashTable, const void *key, void *value) {
-    long hashValue;
-    KeyValuePair *pair;
-
-    assert(key != NULL);
-    assert(value != NULL);
-
-    hashValue = hashTable->hashFunction(key) % hashTable->numOfBuckets;
-    pair = hashTable->bucketArray[hashValue];
-
-    while (pair != NULL && hashTable->keycmp(key, pair->key) != 0)
-        pair = pair->next;
-
-    if (pair) {
-        if (pair->key != key) {
-            if (hashTable->keyDeallocator != NULL)
-                hashTable->keyDeallocator((void *) pair->key);
-            pair->key = key;
-        }
-        if (pair->value != value) {
-            if (hashTable->valueDeallocator != NULL)
-                hashTable->valueDeallocator(pair->value);
-            pair->value = value;
-        }
-    }
-    else {
-        KeyValuePair *newPair = (KeyValuePair *) malloc(sizeof(KeyValuePair));
-        if (newPair == NULL) {
-            return -1;
-        }
-        else {
-            newPair->key = key;
-            newPair->value = value;
-            newPair->next = hashTable->bucketArray[hashValue];
-            hashTable->bucketArray[hashValue] = newPair;
-            hashTable->numOfElements++;
-
-            if (hashTable->upperRehashThreshold > hashTable->idealRatio) {
-                float elementToBucketRatio = (float) hashTable->numOfElements /
-                                             (float) hashTable->numOfBuckets;
-                if (elementToBucketRatio > hashTable->upperRehashThreshold)
-                    HashTableRehash(hashTable, 0);
-            }
-        }
-    }
-
-    return 0;
-}
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableGet() - retrieves the value of a key in a HashTable
- *  DESCRIPTION:
- *      Retrieves the value of the specified key in the specified HashTable.
- *      Uses the comparison function specified by
- *      HashTableSetKeyComparisonFunction().
- *  EFFICIENCY:
- *      O(1), assuming a good hash function and element-to-bucket ratio
- *  ARGUMENTS:
- *      hashTable    - the HashTable to search
- *      key          - the key whose value is desired
- *  RETURNS:
- *      void *       - the value of the specified key, or NULL if the key
- *                     doesn't exist in the HashTable
-\*--------------------------------------------------------------------------*/
-
-void *HashTableGet(const HashTable *hashTable, const void *key) {
-    long hashValue = hashTable->hashFunction(key) % hashTable->numOfBuckets;
-    KeyValuePair *pair = hashTable->bucketArray[hashValue];
-
-    while (pair != NULL && hashTable->keycmp(key, pair->key) != 0)
-        pair = pair->next;
-
-    return (pair == NULL)? NULL : pair->value;
-}
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableRemove() - removes a key/value pair from a HashTable
- *  DESCRIPTION:
- *      Removes the key/value pair identified by the specified key from the
- *      specified HashTable if the key exists in the HashTable.  May trigger
- *      an auto-rehash (see HashTableSetIdealRatio()).
- *  EFFICIENCY:
- *      O(1), assuming a good hash function and element-to-bucket ratio
- *  ARGUMENTS:
- *      hashTable    - the HashTable to remove the key/value pair from
- *      key          - the key specifying the key/value pair to be removed
- *  RETURNS:
- *      <nothing>
-\*--------------------------------------------------------------------------*/
-
-void HashTableRemove(HashTable *hashTable, const void *key) {
-    long hashValue = hashTable->hashFunction(key) % hashTable->numOfBuckets;
-    KeyValuePair *pair = hashTable->bucketArray[hashValue];
-    KeyValuePair *previousPair = NULL;
-
-    while (pair != NULL && hashTable->keycmp(key, pair->key) != 0) {
-        previousPair = pair;
-        pair = pair->next;
-    }
-
-    if (pair != NULL) {
-        if (hashTable->keyDeallocator != NULL)
-            hashTable->keyDeallocator((void *) pair->key);
-        if (hashTable->valueDeallocator != NULL)
-            hashTable->valueDeallocator(pair->value);
-        if (previousPair != NULL)
-            previousPair->next = pair->next;
-        else
-            hashTable->bucketArray[hashValue] = pair->next;
-        free(pair);
-        hashTable->numOfElements--;
-
-        if (hashTable->lowerRehashThreshold > 0.0) {
-            float elementToBucketRatio = (float) hashTable->numOfElements /
-                                         (float) hashTable->numOfBuckets;
-            if (elementToBucketRatio < hashTable->lowerRehashThreshold)
-                HashTableRehash(hashTable, 0);
-        }
-    }
-}
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableRemoveAll() - removes all key/value pairs from a HashTable
- *  DESCRIPTION:
- *      Removes all key/value pairs from the specified HashTable.  May trigger
- *      an auto-rehash (see HashTableSetIdealRatio()).
- *  EFFICIENCY:
- *      O(n)
- *  ARGUMENTS:
- *      hashTable    - the HashTable to remove all key/value pairs from
- *  RETURNS:
- *      <nothing>
-\*--------------------------------------------------------------------------*/
-
-void HashTableRemoveAll(HashTable *hashTable) {
-    int i;
-
-    for (i=0; i<hashTable->numOfBuckets; i++) {
-        KeyValuePair *pair = hashTable->bucketArray[i];
-        while (pair != NULL) {
-            KeyValuePair *nextPair = pair->next;
-            if (hashTable->keyDeallocator != NULL)
-                hashTable->keyDeallocator((void *) pair->key);
-            if (hashTable->valueDeallocator != NULL)
-                hashTable->valueDeallocator(pair->value);
-            free(pair);
-            pair = nextPair;
-        }
-        hashTable->bucketArray[i] = NULL;
-    }
-
-    hashTable->numOfElements = 0;
-    HashTableRehash(hashTable, 5);
-}
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableIsEmpty() - determines if a HashTable is empty
- *  DESCRIPTION:
- *      Determines whether or not the specified HashTable contains any
- *      key/value pairs.
- *  EFFICIENCY:
- *      O(1)
- *  ARGUMENTS:
- *      hashTable    - the HashTable to check
- *  RETURNS:
- *      bool         - whether or not the specified HashTable contains any
- *                     key/value pairs
-\*--------------------------------------------------------------------------*/
-
-int HashTableIsEmpty(const HashTable *hashTable) {
-    return (hashTable->numOfElements == 0);
-}
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableSize() - returns the number of elements in a HashTable
- *  DESCRIPTION:
- *      Returns the number of key/value pairs that are present in the
- *      specified HashTable.
- *  EFFICIENCY:
- *      O(1)
- *  ARGUMENTS:
- *      hashTable    - the HashTable whose size is requested
- *  RETURNS:
- *      long         - the number of key/value pairs that are present in
- *                     the specified HashTable
-\*--------------------------------------------------------------------------*/
-
-long HashTableSize(const HashTable *hashTable) {
-    return hashTable->numOfElements;
-}
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableGetNumBuckets() - returns the number of buckets in a HashTable
- *  DESCRIPTION:
- *      Returns the number of buckets that are in the specified HashTable.
- *      This may change dynamically throughout the life of a HashTable if
- *      automatic or manual rehashing is performed.
- *  EFFICIENCY:
- *      O(1)
- *  ARGUMENTS:
- *      hashTable    - the HashTable whose number of buckets is requested
- *  RETURNS:
- *      long         - the number of buckets that are in the specified
- *                     HashTable
-\*--------------------------------------------------------------------------*/
-
-long HashTableGetNumBuckets(const HashTable *hashTable) {
-    return hashTable->numOfBuckets;
-}
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableSetKeyComparisonFunction()
- *              - specifies the function used to compare keys in a HashTable
- *  DESCRIPTION:
- *      Specifies the function used to compare keys in the specified
- *      HashTable.  The specified function should return zero if the two
- *      keys are considered equal, and non-zero otherwise.  The default
- *      function is one that simply compares pointers.
- *  ARGUMENTS:
- *      hashTable    - the HashTable whose key comparison function is being
- *                     specified
- *      keycmp       - a function which returns zero if the two arguments
- *                     passed to it are considered "equal" keys and non-zero
- *                     otherwise
- *  RETURNS:
- *      <nothing>
-\*--------------------------------------------------------------------------*/
-
-void HashTableSetKeyComparisonFunction(HashTable *hashTable,
-        int (*keycmp)(const void *key1, const void *key2)) {
-    assert(keycmp != NULL);
-    hashTable->keycmp = keycmp;
-}
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableSetValueComparisonFunction()
- *              - specifies the function used to compare values in a HashTable
- *  DESCRIPTION:
- *      Specifies the function used to compare values in the specified
- *      HashTable.  The specified function should return zero if the two
- *      values are considered equal, and non-zero otherwise.  The default
- *      function is one that simply compares pointers.
- *  ARGUMENTS:
- *      hashTable    - the HashTable whose value comparison function is being
- *                     specified
- *      valuecmp     - a function which returns zero if the two arguments
- *                     passed to it are considered "equal" values and non-zero
- *                     otherwise
- *  RETURNS:
- *      <nothing>
-\*--------------------------------------------------------------------------*/
-
-void HashTableSetValueComparisonFunction(HashTable *hashTable,
-        int (*valuecmp)(const void *value1, const void *value2)) {
-    assert(valuecmp != NULL);
-    hashTable->valuecmp = valuecmp;
-}
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableSetHashFunction()
- *              - specifies the hash function used by a HashTable
- *  DESCRIPTION:
- *      Specifies the function used to determine the hash value for a key
- *      in the specified HashTable (before modulation).  An ideal hash
- *      function is one which is easy to compute and approximates a
- *      "random" function.  The default function is one that works
- *      relatively well for pointers.  If the HashTable keys are to be
- *      strings (which is probably the case), then this default function
- *      will not suffice, in which case consider using the provided
- *      HashTableStringHashFunction() function.
- *  ARGUMENTS:
- *      hashTable    - the HashTable whose hash function is being specified
- *      hashFunction - a function which returns an appropriate hash code
- *                     for a given key
- *  RETURNS:
- *      <nothing>
-\*--------------------------------------------------------------------------*/
-
-void HashTableSetHashFunction(HashTable *hashTable,
-        unsigned long (*hashFunction)(const void *key))
-{
-    assert(hashFunction != NULL);
-    hashTable->hashFunction = hashFunction;
-}
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableRehash() - reorganizes a HashTable to be more efficient
- *  DESCRIPTION:
- *      Reorganizes a HashTable to be more efficient.  If a number of
- *      buckets is specified, the HashTable is rehashed to that number of
- *      buckets.  If 0 is specified, the HashTable is rehashed to a number
- *      of buckets which is automatically calculated to be a prime number
- *      that achieves (as closely as possible) the ideal element-to-bucket 
- *      ratio specified by the HashTableSetIdealRatio() function.
- *  EFFICIENCY:
- *      O(n)
- *  ARGUMENTS:
- *      hashTable    - the HashTable to be reorganized
- *      numOfBuckets - the number of buckets to rehash the HashTable to.
- *                     Should be prime.  Ideally, the number of buckets
- *                     should be between 1/5 and 1 times the expected
- *                     number of elements in the HashTable.  Values much
- *                     more or less than this will result in wasted memory
- *                     or decreased performance respectively.  If 0 is
- *                     specified, an appropriate number of buckets is
- *                     automatically calculated.
- *  RETURNS:
- *      <nothing>
-\*--------------------------------------------------------------------------*/
-
-void HashTableRehash(HashTable *hashTable, long numOfBuckets) {
-    KeyValuePair **newBucketArray;
-    int i;
-
-    assert(numOfBuckets >= 0);
-    if (numOfBuckets == 0)
-        numOfBuckets = calculateIdealNumOfBuckets(hashTable);
-
-    if (numOfBuckets == hashTable->numOfBuckets)
-        return; /* already the right size! */
-
-    newBucketArray = (KeyValuePair **)
-                                malloc(numOfBuckets * sizeof(KeyValuePair *));
-    if (newBucketArray == NULL) {
-        /* Couldn't allocate memory for the new array.  This isn't a fatal
-         * error; we just can't perform the rehash. */
-        return;
-    }
-
-    for (i=0; i<numOfBuckets; i++)
-        newBucketArray[i] = NULL;
-
-    for (i=0; i<hashTable->numOfBuckets; i++) {
-        KeyValuePair *pair = hashTable->bucketArray[i];
-        while (pair != NULL) {
-            KeyValuePair *nextPair = pair->next;
-            long hashValue = hashTable->hashFunction(pair->key) % numOfBuckets;
-            pair->next = newBucketArray[hashValue];
-            newBucketArray[hashValue] = pair;
-            pair = nextPair;
-        }
-    }
-
-    free(hashTable->bucketArray);
-    hashTable->bucketArray = newBucketArray;
-    hashTable->numOfBuckets = numOfBuckets;
-}
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableSetIdealRatio()
- *              - sets the ideal element-to-bucket ratio of a HashTable
- *  DESCRIPTION:
- *      Sets the ideal element-to-bucket ratio, as well as the lower and
- *      upper auto-rehash thresholds, of the specified HashTable.  Note
- *      that this function doesn't actually perform a rehash.
- *
- *      The default values for these properties are 3.0, 0.0 and 15.0
- *      respectively.  This is likely fine for most situations, so there
- *      is probably no need to call this function.
- *  ARGUMENTS:
- *      hashTable    - a HashTable
- *      idealRatio   - the ideal element-to-bucket ratio.  When a rehash
- *                     occurs (either manually via a call to the
- *                     HashTableRehash() function or automatically due the
- *                     the triggering of one of the thresholds below), the
- *                     number of buckets in the HashTable will be
- *                     recalculated to be a prime number that achieves (as
- *                     closely as possible) this ideal ratio.  Must be a
- *                     positive number.
- *      lowerRehashThreshold
- *                   - the element-to-bucket ratio that is considered
- *                     unacceptably low (i.e., too few elements per bucket).
- *                     If the actual ratio falls below this number, a
- *                     rehash will automatically be performed.  Must be
- *                     lower than the value of idealRatio.  If no ratio
- *                     is considered unacceptably low, a value of 0.0 can
- *                     be specified.
- *      upperRehashThreshold
- *                   - the element-to-bucket ratio that is considered
- *                     unacceptably high (i.e., too many elements per bucket).
- *                     If the actual ratio rises above this number, a
- *                     rehash will automatically be performed.  Must be
- *                     higher than idealRatio.  However, if no ratio
- *                     is considered unacceptably high, a value of 0.0 can
- *                     be specified.
- *  RETURNS:
- *      <nothing>
-\*--------------------------------------------------------------------------*/
-
-void HashTableSetIdealRatio(HashTable *hashTable, float idealRatio,
-        float lowerRehashThreshold, float upperRehashThreshold) {
-    assert(idealRatio > 0.0);
-    assert(lowerRehashThreshold < idealRatio);
-    assert(upperRehashThreshold == 0.0 || upperRehashThreshold > idealRatio);
-
-    hashTable->idealRatio = idealRatio;
-    hashTable->lowerRehashThreshold = lowerRehashThreshold;
-    hashTable->upperRehashThreshold = upperRehashThreshold;
-}
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableSetDeallocationFunctions()
- *              - sets the key and value deallocation functions of a HashTable
- *  DESCRIPTION:
- *      Sets the key and value deallocation functions of the specified
- *      HashTable.  This determines what happens to a key or a value when it
- *      is removed from the HashTable.  If the deallocation function is NULL
- *      (the default if this function is never called), its reference is
- *      simply dropped and it is up to the calling program to perform the
- *      proper memory management.  If the deallocation function is non-NULL,
- *      it is called to free the memory used by the object.  E.g., for simple
- *      objects, an appropriate deallocation function may be free().
- *
- *      This affects the behaviour of the HashTableDestroy(), HashTablePut(),
- *      HashTableRemove() and HashTableRemoveAll() functions.
- *  ARGUMENTS:
- *      hashTable    - a HashTable
- *      keyDeallocator
- *                   - if non-NULL, the function to be called when a key is
- *                     removed from the HashTable.
- *      valueDeallocator
- *                   - if non-NULL, the function to be called when a value is
- *                     removed from the HashTable.
- *  RETURNS:
- *      <nothing>
-\*--------------------------------------------------------------------------*/
-
-void HashTableSetDeallocationFunctions(HashTable *hashTable,
-        void (*keyDeallocator)(void *key),
-        void (*valueDeallocator)(void *value)) {
-    hashTable->keyDeallocator = keyDeallocator;
-    hashTable->valueDeallocator = valueDeallocator;
-}
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableStringHashFunction() - a good hash function for strings
- *  DESCRIPTION:
- *      A hash function that is appropriate for hashing strings.  Note that
- *      this is not the default hash function.  To make it the default hash
- *      function, call HashTableSetHashFunction(hashTable,
- *      HashTableStringHashFunction).
- *  ARGUMENTS:
- *      key    - the key to be hashed
- *  RETURNS:
- *      unsigned long - the unmodulated hash value of the key
-\*--------------------------------------------------------------------------*/
-
-unsigned long HashTableStringHashFunction(const void *key) {
-    const unsigned char *str = (const unsigned char *) key;
-    unsigned long hashValue = 0;
-    int i;
-
-    for (i=0; str[i] != '\0'; i++)
-        hashValue = hashValue * 37 + str[i];
-
-    return hashValue;
-}
-
-static int pointercmp(const void *pointer1, const void *pointer2) {
-    return (pointer1 != pointer2);
-}
-
-static unsigned long pointerHashFunction(const void *pointer) {
-    return ((unsigned long) pointer) >> 4;
-}
-
-static int isProbablePrime(long oddNumber) {
-    long i;
-
-    for (i=3; i<51; i+=2)
-        if (oddNumber == i)
-            return 1;
-        else if (oddNumber%i == 0)
-            return 0;
-
-    return 1; /* maybe */
-}
-
-static long calculateIdealNumOfBuckets(HashTable *hashTable) {
-    long idealNumOfBuckets = hashTable->numOfElements / hashTable->idealRatio;
-    if (idealNumOfBuckets < 5)
-        idealNumOfBuckets = 5;
-    else
-        idealNumOfBuckets |= 0x01; /* make it an odd number */
-    while (!isProbablePrime(idealNumOfBuckets))
-        idealNumOfBuckets += 2;
-
-    return idealNumOfBuckets;
-}

Deleted: trunk/clients/havercurs/hashtable.h
===================================================================
--- trunk/clients/havercurs/hashtable.h 2005-05-31 04:02:26 UTC (rev 743)
+++ trunk/clients/havercurs/hashtable.h 2005-06-01 18:15:07 UTC (rev 744)
@@ -1,437 +0,0 @@
-/*--------------------------------------------------------------------------*\
- *                   -----===== HashTable =====-----
- *
- * Author: Keith Pomakis ([EMAIL PROTECTED])
- * Date:   August, 1998
- * Released to the public domain.
- *
- *--------------------------------------------------------------------------
- * $Id: hashtable.h,v 1.2 2000/08/02 19:01:25 pomakis Exp pomakis $
-\*--------------------------------------------------------------------------*/
-
-#ifndef _HASHTABLE_H
-#define _HASHTABLE_H
-
-/* These structs should not be accessed directly from user code.
- * All access should be via the public functions declared below. */
-
-typedef struct KeyValuePair_struct {
-    const void *key;
-    void *value;
-    struct KeyValuePair_struct *next;
-} KeyValuePair;
-
-typedef struct {
-    long numOfBuckets;
-    long numOfElements;
-    KeyValuePair **bucketArray;
-    float idealRatio, lowerRehashThreshold, upperRehashThreshold;
-    int (*keycmp)(const void *key1, const void *key2);
-    int (*valuecmp)(const void *value1, const void *value2);
-    unsigned long (*hashFunction)(const void *key);
-    void (*keyDeallocator)(void *key);
-    void (*valueDeallocator)(void *value);
-} HashTable;
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableCreate() - creates a new HashTable
- *  DESCRIPTION:
- *      Creates a new HashTable.  When finished with this HashTable, it
- *      should be explicitly destroyed by calling the HashTableDestroy()
- *      function.
- *  EFFICIENCY:
- *      O(1)
- *  ARGUMENTS:
- *      numOfBuckets - the number of buckets to start the HashTable out with.
- *                     Must be greater than zero, and should be prime.
- *                     Ideally, the number of buckets should between 1/5
- *                     and 1 times the expected number of elements in the
- *                     HashTable.  Values much more or less than this will
- *                     result in wasted memory or decreased performance
- *                     respectively.  The number of buckets in a HashTable
- *                     can be re-calculated to an appropriate number by
- *                     calling the HashTableRehash() function once the
- *                     HashTable has been populated.  The number of buckets
- *                     in a HashTable may also be re-calculated
- *                     automatically if the ratio of elements to buckets
- *                     passes the thresholds set by HashTableSetIdealRatio().
- *  RETURNS:
- *      HashTable    - a new Hashtable, or NULL on error
-\*--------------------------------------------------------------------------*/
-
-HashTable *HashTableCreate(long numOfBuckets);
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableDestroy() - destroys an existing HashTable
- *  DESCRIPTION:
- *      Destroys an existing HashTable.
- *  EFFICIENCY:
- *      O(n)
- *  ARGUMENTS:
- *      hashTable    - the HashTable to destroy
- *  RETURNS:
- *      <nothing>
-\*--------------------------------------------------------------------------*/
-
-void HashTableDestroy(HashTable *hashTable);
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableContainsKey() - checks the existence of a key in a HashTable
- *  DESCRIPTION:
- *      Determines whether or not the specified HashTable contains the
- *      specified key.  Uses the comparison function specified by
- *      HashTableSetKeyComparisonFunction().
- *  EFFICIENCY:
- *      O(1), assuming a good hash function and element-to-bucket ratio
- *  ARGUMENTS:
- *      hashTable    - the HashTable to search
- *      key          - the key to search for
- *  RETURNS:
- *      bool         - whether or not the specified HashTable contains the
- *                     specified key.
-\*--------------------------------------------------------------------------*/
-
-int HashTableContainsKey(const HashTable *hashTable, const void *key);
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableContainsValue()
- *                         - checks the existence of a value in a HashTable
- *  DESCRIPTION:
- *      Determines whether or not the specified HashTable contains the
- *      specified value.  Unlike HashTableContainsKey(), this function is
- *      not very efficient, since it has to scan linearly looking for a
- *      match.  Uses the comparison function specified by
- *      HashTableSetValueComparisonFunction().
- *  EFFICIENCY:
- *      O(n)
- *  ARGUMENTS:
- *      hashTable    - the HashTable to search
- *      value        - the value to search for
- *  RETURNS:
- *      bool         - whether or not the specified HashTable contains the
- *                     specified value.
-\*--------------------------------------------------------------------------*/
-
-int HashTableContainsValue(const HashTable *hashTable, const void *value);
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTablePut() - adds a key/value pair to a HashTable
- *  DESCRIPTION:
- *      Adds the specified key/value pair to the specified HashTable.  If
- *      the key already exists in the HashTable (determined by the comparison
- *      function specified by HashTableSetKeyComparisonFunction()), its value
- *      is replaced by the new value.  May trigger an auto-rehash (see
- *      HashTableSetIdealRatio()).  It is illegal to specify NULL as the
- *      key or value.
- *  EFFICIENCY:
- *      O(1), assuming a good hash function and element-to-bucket ratio
- *  ARGUMENTS:
- *      hashTable    - the HashTable to add to
- *      key          - the key to add or whose value to replace
- *      value        - the value associated with the key
- *  RETURNS:
- *      err          - 0 if successful, -1 if an error was encountered
-\*--------------------------------------------------------------------------*/
-
-int HashTablePut(HashTable *hashTable, const void *key, void *value);
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableGet() - retrieves the value of a key in a HashTable
- *  DESCRIPTION:
- *      Retrieves the value of the specified key in the specified HashTable.
- *      Uses the comparison function specified by
- *      HashTableSetKeyComparisonFunction().
- *  EFFICIENCY:
- *      O(1), assuming a good hash function and element-to-bucket ratio
- *  ARGUMENTS:
- *      hashTable    - the HashTable to search
- *      key          - the key whose value is desired
- *  RETURNS:
- *      void *       - the value of the specified key, or NULL if the key
- *                     doesn't exist in the HashTable
-\*--------------------------------------------------------------------------*/
-
-void *HashTableGet(const HashTable *hashTable, const void *key);
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableRemove() - removes a key/value pair from a HashTable
- *  DESCRIPTION:
- *      Removes the key/value pair identified by the specified key from the
- *      specified HashTable if the key exists in the HashTable.  May trigger
- *      an auto-rehash (see HashTableSetIdealRatio()).
- *  EFFICIENCY:
- *      O(1), assuming a good hash function and element-to-bucket ratio
- *  ARGUMENTS:
- *      hashTable    - the HashTable to remove the key/value pair from
- *      key          - the key specifying the key/value pair to be removed
- *  RETURNS:
- *      <nothing>
-\*--------------------------------------------------------------------------*/
-
-void HashTableRemove(HashTable *hashTable, const void *key);
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableRemoveAll() - removes all key/value pairs from a HashTable
- *  DESCRIPTION:
- *      Removes all key/value pairs from the specified HashTable.  May trigger
- *      an auto-rehash (see HashTableSetIdealRatio()).
- *  EFFICIENCY:
- *      O(n)
- *  ARGUMENTS:
- *      hashTable    - the HashTable to remove all key/value pairs from
- *  RETURNS:
- *      <nothing>
-\*--------------------------------------------------------------------------*/
-
-void HashTableRemoveAll(HashTable *hashTable);
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableIsEmpty() - determines if a HashTable is empty
- *  DESCRIPTION:
- *      Determines whether or not the specified HashTable contains any
- *      key/value pairs.
- *  EFFICIENCY:
- *      O(1)
- *  ARGUMENTS:
- *      hashTable    - the HashTable to check
- *  RETURNS:
- *      bool         - whether or not the specified HashTable contains any
- *                     key/value pairs
-\*--------------------------------------------------------------------------*/
-
-int HashTableIsEmpty(const HashTable *hashTable);
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableSize() - returns the number of elements in a HashTable
- *  DESCRIPTION:
- *      Returns the number of key/value pairs that are present in the
- *      specified HashTable.
- *  EFFICIENCY:
- *      O(1)
- *  ARGUMENTS:
- *      hashTable    - the HashTable whose size is requested
- *  RETURNS:
- *      long         - the number of key/value pairs that are present in
- *                     the specified HashTable
-\*--------------------------------------------------------------------------*/
-
-long HashTableSize(const HashTable *hashTable);
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableGetNumBuckets() - returns the number of buckets in a HashTable
- *  DESCRIPTION:
- *      Returns the number of buckets that are in the specified HashTable.
- *      This may change dynamically throughout the life of a HashTable if
- *      automatic or manual rehashing is performed.
- *  EFFICIENCY:
- *      O(1)
- *  ARGUMENTS:
- *      hashTable    - the HashTable whose number of buckets is requested
- *  RETURNS:
- *      long         - the number of buckets that are in the specified
- *                     HashTable
-\*--------------------------------------------------------------------------*/
-
-long HashTableGetNumBuckets(const HashTable *hashTable);
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableSetKeyComparisonFunction()
- *              - specifies the function used to compare keys in a HashTable
- *  DESCRIPTION:
- *      Specifies the function used to compare keys in the specified
- *      HashTable.  The specified function should return zero if the two
- *      keys are considered equal, and non-zero otherwise.  The default
- *      function is one that simply compares pointers.
- *  ARGUMENTS:
- *      hashTable    - the HashTable whose key comparison function is being
- *                     specified
- *      keycmp       - a function which returns zero if the two arguments
- *                     passed to it are considered "equal" keys and non-zero
- *                     otherwise
- *  RETURNS:
- *      <nothing>
-\*--------------------------------------------------------------------------*/
-
-void HashTableSetKeyComparisonFunction(HashTable *hashTable,
-                             int (*keycmp)(const void *key1, const void 
*key2));
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableSetValueComparisonFunction()
- *              - specifies the function used to compare values in a HashTable
- *  DESCRIPTION:
- *      Specifies the function used to compare values in the specified
- *      HashTable.  The specified function should return zero if the two
- *      values are considered equal, and non-zero otherwise.  The default
- *      function is one that simply compares pointers.
- *  ARGUMENTS:
- *      hashTable    - the HashTable whose value comparison function is being
- *                     specified
- *      valuecmp     - a function which returns zero if the two arguments
- *                     passed to it are considered "equal" values and non-zero
- *                     otherwise
- *  RETURNS:
- *      <nothing>
-\*--------------------------------------------------------------------------*/
-
-void HashTableSetValueComparisonFunction(HashTable *hashTable,
-                       int (*valuecmp)(const void *value1, const void 
*value2));
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableSetHashFunction()
- *              - specifies the hash function used by a HashTable
- *  DESCRIPTION:
- *      Specifies the function used to determine the hash value for a key
- *      in the specified HashTable (before modulation).  An ideal hash
- *      function is one which is easy to compute and approximates a
- *      "random" function.  The default function is one that works
- *      relatively well for pointers.  If the HashTable keys are to be
- *      strings (which is probably the case), then this default function
- *      will not suffice, in which case consider using the provided
- *      HashTableStringHashFunction() function.
- *  ARGUMENTS:
- *      hashTable    - the HashTable whose hash function is being specified
- *      hashFunction - a function which returns an appropriate hash code
- *                     for a given key
- *  RETURNS:
- *      <nothing>
-\*--------------------------------------------------------------------------*/
-
-void HashTableSetHashFunction(HashTable *hashTable,
-                              unsigned long (*hashFunction)(const void *key));
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableRehash() - reorganizes a HashTable to be more efficient
- *  DESCRIPTION:
- *      Reorganizes a HashTable to be more efficient.  If a number of
- *      buckets is specified, the HashTable is rehashed to that number of
- *      buckets.  If 0 is specified, the HashTable is rehashed to a number
- *      of buckets which is automatically calculated to be a prime number
- *      that achieves (as closely as possible) the ideal element-to-bucket 
- *      ratio specified by the HashTableSetIdealRatio() function.
- *  EFFICIENCY:
- *      O(n)
- *  ARGUMENTS:
- *      hashTable    - the HashTable to be reorganized
- *      numOfBuckets - the number of buckets to rehash the HashTable to.
- *                     Should be prime.  Ideally, the number of buckets
- *                     should be between 1/5 and 1 times the expected
- *                     number of elements in the HashTable.  Values much
- *                     more or less than this will result in wasted memory
- *                     or decreased performance respectively.  If 0 is
- *                     specified, an appropriate number of buckets is
- *                     automatically calculated.
- *  RETURNS:
- *      <nothing>
-\*--------------------------------------------------------------------------*/
-
-void HashTableRehash(HashTable *hashTable, long numOfBuckets);
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableSetIdealRatio()
- *              - sets the ideal element-to-bucket ratio of a HashTable
- *  DESCRIPTION:
- *      Sets the ideal element-to-bucket ratio, as well as the lower and
- *      upper auto-rehash thresholds, of the specified HashTable.  Note
- *      that this function doesn't actually perform a rehash.
- *
- *      The default values for these properties are 3.0, 0.0 and 15.0
- *      respectively.  This is likely fine for most situations, so there
- *      is probably no need to call this function.
- *  ARGUMENTS:
- *      hashTable    - a HashTable
- *      idealRatio   - the ideal element-to-bucket ratio.  When a rehash
- *                     occurs (either manually via a call to the
- *                     HashTableRehash() function or automatically due the
- *                     the triggering of one of the thresholds below), the
- *                     number of buckets in the HashTable will be
- *                     recalculated to be a prime number that achieves (as
- *                     closely as possible) this ideal ratio.  Must be a
- *                     positive number.
- *      lowerRehashThreshold
- *                   - the element-to-bucket ratio that is considered
- *                     unacceptably low (i.e., too few elements per bucket).
- *                     If the actual ratio falls below this number, a
- *                     rehash will automatically be performed.  Must be
- *                     lower than the value of idealRatio.  If no ratio
- *                     is considered unacceptably low, a value of 0.0 can
- *                     be specified.
- *      upperRehashThreshold
- *                   - the element-to-bucket ratio that is considered
- *                     unacceptably high (i.e., too many elements per bucket).
- *                     If the actual ratio rises above this number, a
- *                     rehash will automatically be performed.  Must be
- *                     higher than idealRatio.  However, if no ratio
- *                     is considered unacceptably high, a value of 0.0 can
- *                     be specified.
- *  RETURNS:
- *      <nothing>
-\*--------------------------------------------------------------------------*/
-
-void HashTableSetIdealRatio(HashTable *hashTable, float idealRatio,
-                            float lowerRehashThreshold,
-                            float upperRehashThreshold);
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableSetDeallocationFunctions()
- *              - sets the key and value deallocation functions of a HashTable
- *  DESCRIPTION:
- *      Sets the key and value deallocation functions of the specified
- *      HashTable.  This determines what happens to a key or a value when it
- *      is removed from the HashTable.  If the deallocation function is NULL
- *      (the default if this function is never called), its reference is
- *      simply dropped and it is up to the calling program to perform the
- *      proper memory management.  If the deallocation function is non-NULL,
- *      it is called to free the memory used by the object.  E.g., for simple
- *      objects, an appropriate deallocation function may be free().
- *
- *      This affects the behaviour of the HashTableDestroy(), HashTablePut(),
- *      HashTableRemove() and HashTableRemoveAll() functions.
- *  ARGUMENTS:
- *      hashTable    - a HashTable
- *      keyDeallocator
- *                   - if non-NULL, the function to be called when a key is
- *                     removed from the HashTable.
- *      valueDeallocator
- *                   - if non-NULL, the function to be called when a value is
- *                     removed from the HashTable.
- *  RETURNS:
- *      <nothing>
-\*--------------------------------------------------------------------------*/
-
-void HashTableSetDeallocationFunctions(HashTable *hashTable,
-                                       void (*keyDeallocator)(void *key),
-                                       void (*valueDeallocator)(void *value));
-
-/*--------------------------------------------------------------------------*\
- *  NAME:
- *      HashTableStringHashFunction() - a good hash function for strings
- *  DESCRIPTION:
- *      A hash function that is appropriate for hashing strings.  Note that
- *      this is not the default hash function.  To make it the default hash
- *      function, call HashTableSetHashFunction(HashTableStringHashFunction).
- *  ARGUMENTS:
- *      key    - the key to be hashed
- *  RETURNS:
- *      long   - the unmodulated hash value of the key
-\*--------------------------------------------------------------------------*/
-
-unsigned long HashTableStringHashFunction(const void *key);
-
-#endif /* _HASHTABLE_H */

Modified: trunk/clients/havercurs/lineio.c
===================================================================
--- trunk/clients/havercurs/lineio.c    2005-05-31 04:02:26 UTC (rev 743)
+++ trunk/clients/havercurs/lineio.c    2005-06-01 18:15:07 UTC (rev 744)
@@ -1,4 +1,4 @@
-/* vim: set ts=4 sw=4 expandtab si ai sta tw=104:
+/* vim: ft=objc set ts=4 sw=4 expandtab si ai sta tw=104:
  *
  * Copyright (C) 2004 Bryan Donlan
  * 

Modified: trunk/clients/havercurs/lineio.h
===================================================================
--- trunk/clients/havercurs/lineio.h    2005-05-31 04:02:26 UTC (rev 743)
+++ trunk/clients/havercurs/lineio.h    2005-06-01 18:15:07 UTC (rev 744)
@@ -1,4 +1,4 @@
-/* vim: set ts=4 sw=4 expandtab si ai sta tw=104:
+/* vim: ft=objc set ts=4 sw=4 expandtab si ai sta tw=104:
  *
  * Copyright (C) 2004 Bryan Donlan
  * 

Modified: trunk/clients/havercurs/main.c
===================================================================
--- trunk/clients/havercurs/main.c      2005-05-31 04:02:26 UTC (rev 743)
+++ trunk/clients/havercurs/main.c      2005-06-01 18:15:07 UTC (rev 744)
@@ -1,4 +1,4 @@
-/* vim: set ts=4 sw=4 expandtab si ai sta tw=104:
+/* vim: ft=objc set ts=4 sw=4 expandtab si ai sta tw=104:
  *
  * Copyright (C) 2004 Bryan Donlan
  * 

Modified: trunk/clients/havercurs/mymalloc.c
===================================================================
--- trunk/clients/havercurs/mymalloc.c  2005-05-31 04:02:26 UTC (rev 743)
+++ trunk/clients/havercurs/mymalloc.c  2005-06-01 18:15:07 UTC (rev 744)
@@ -1,4 +1,4 @@
-/* vim: set ts=4 sw=4 expandtab si ai sta tw=104:
+/* vim: ft=objc set ts=4 sw=4 expandtab si ai sta tw=104:
  *
  * Copyright (C) 2004 Bryan Donlan
  * 

Modified: trunk/clients/havercurs/mymalloc.h
===================================================================
--- trunk/clients/havercurs/mymalloc.h  2005-05-31 04:02:26 UTC (rev 743)
+++ trunk/clients/havercurs/mymalloc.h  2005-06-01 18:15:07 UTC (rev 744)
@@ -1,4 +1,4 @@
-/* vim: set ts=4 sw=4 expandtab si ai sta tw=104:
+/* vim: ft=objc set ts=4 sw=4 expandtab si ai sta tw=104:
  *
  * Copyright (C) 2004 Bryan Donlan
  * 

Modified: trunk/clients/havercurs/net.c
===================================================================
--- trunk/clients/havercurs/net.c       2005-05-31 04:02:26 UTC (rev 743)
+++ trunk/clients/havercurs/net.c       2005-06-01 18:15:07 UTC (rev 744)
@@ -1,4 +1,4 @@
-/* vim: set ts=4 sw=4 expandtab si ai sta tw=104:
+/* vim: ft=objc set ts=4 sw=4 expandtab si ai sta tw=104:
  *
  * Copyright (C) 2004 Bryan Donlan
  * 

Modified: trunk/clients/havercurs/net.h
===================================================================
--- trunk/clients/havercurs/net.h       2005-05-31 04:02:26 UTC (rev 743)
+++ trunk/clients/havercurs/net.h       2005-06-01 18:15:07 UTC (rev 744)
@@ -1,4 +1,4 @@
-/* vim: set ts=4 sw=4 expandtab si ai sta tw=104:
+/* vim: ft=objc set ts=4 sw=4 expandtab si ai sta tw=104:
  *
  * Copyright (C) 2004 Bryan Donlan
  * 

Modified: trunk/clients/havercurs/trie.c
===================================================================
--- trunk/clients/havercurs/trie.c      2005-05-31 04:02:26 UTC (rev 743)
+++ trunk/clients/havercurs/trie.c      2005-06-01 18:15:07 UTC (rev 744)
@@ -1,4 +1,4 @@
-/* vim: set ts=4 sw=4 expandtab si ai sta tw=104:
+/* vim: ft=objc set ts=4 sw=4 expandtab si ai sta tw=104:
  * trie.c - Functions for manipulating tries
  * 
  * Copyright (C) 2004 Bryan Donlan

Modified: trunk/clients/havercurs/trie.h
===================================================================
--- trunk/clients/havercurs/trie.h      2005-05-31 04:02:26 UTC (rev 743)
+++ trunk/clients/havercurs/trie.h      2005-06-01 18:15:07 UTC (rev 744)
@@ -1,4 +1,4 @@
-/* vim: set ts=4 sw=4 expandtab si ai sta tw=104:
+/* vim: ft=objc set ts=4 sw=4 expandtab si ai sta tw=104:
  * trie.h - Functions for manipulating tries
  * 
  * Copyright (C) 2004 Bryan Donlan


Reply via email to