]> git.sur5r.net Git - cc65/commitdiff
Change API for the Compare function
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 23 Oct 2003 14:54:58 +0000 (14:54 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 23 Oct 2003 14:54:58 +0000 (14:54 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@2573 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/ca65/filetab.c
src/ca65/macro.c
src/common/hashtab.c
src/common/hashtab.h

index 05d065f3247da338a437db39b07152d7d3b7c62a..b055428f5d48fd260e1d9edb9f86271691aeba09 100644 (file)
@@ -65,7 +65,10 @@ static HashNode* HT_GetHashNode (void* Entry);
 /* Given a pointer to the user entry data, return a pointer to the hash node */
 
 static int HT_Compare (const void* Key1, const void* Key2);
-/* Compare two keys for equality */
+/* Compare two keys. The function must return a value less than zero if
+ * Key1 is smaller than Key2, zero if both are equal, and a value greater
+ * than zero if Key1 is greater then Key2.
+ */
 
 
 
@@ -136,9 +139,12 @@ static HashNode* HT_GetHashNode (void* Entry)
 
 
 static int HT_Compare (const void* Key1, const void* Key2)
-/* Compare two keys for equality */
+/* Compare two keys. The function must return a value less than zero if
+ * Key1 is smaller than Key2, zero if both are equal, and a value greater
+ * than zero if Key1 is greater then Key2.
+ */
 {
-    return (*(const unsigned*)Key1 == *(const unsigned*)Key2);
+    return (int)*(const unsigned*)Key1 - (int)*(const unsigned*)Key2;
 }
 
 
index 6494277709cbc4448015b3f91fe61b8ebb37021e..a819c3c5f1b6e8c8619c56ec4131672a19a1cd72 100644 (file)
@@ -70,7 +70,10 @@ static HashNode* HT_GetHashNode (void* Entry);
 /* Given a pointer to the user entry data, return a pointer to the hash node */
 
 static int HT_Compare (const void* Key1, const void* Key2);
-/* Compare two keys for equality */
+/* Compare two keys. The function must return a value less than zero if
+ * Key1 is smaller than Key2, zero if both are equal, and a value greater
+ * than zero if Key1 is greater then Key2.
+ */
 
 
 
@@ -175,9 +178,12 @@ static HashNode* HT_GetHashNode (void* Entry)
 
 
 static int HT_Compare (const void* Key1, const void* Key2)
-/* Compare two keys for equality */
+/* Compare two keys. The function must return a value less than zero if
+ * Key1 is smaller than Key2, zero if both are equal, and a value greater
+ * than zero if Key1 is greater then Key2.
+ */
 {
-    return (strcmp (Key1, Key2) == 0);
+    return strcmp (Key1, Key2);
 }
 
 
index 3572086edd201776a31db25278eb4bedeef75f48..7c7f0e2296bc36a850b858350e492633bc01c6f0 100644 (file)
@@ -96,7 +96,7 @@ HashNode* HT_Find (const HashTable* T, const void* Key)
          * if it is not really necessary.
          */
         if (N->Hash == Hash &&
-            T->Func->Compare (Key, T->Func->GetKey (N->Entry))) {
+            T->Func->Compare (Key, T->Func->GetKey (N->Entry)) == 0) {
             /* Found */
             break;
         }
index b50acee426cfba4d67dddee2e02074dbf7c256e7..fb8ece3fa3a1745c48511684dc392f833ee40180 100644 (file)
@@ -75,7 +75,10 @@ struct HashFunctions {
     /* Given a pointer to the user entry data, return a pointer to the hash node */
 
     int (*Compare) (const void* Key1, const void* Key2);
-    /* Compare two keys for equality */
+    /* Compare two keys. The function must return a value less than zero if
+     * Key1 is smaller than Key2, zero if both are equal, and a value greater
+     * than zero if Key1 is greater then Key2.
+     */
 };
 
 /* Hash table */