u8-line: Factor out new library for composing lines of text in UTF-8.
[pspp] / src / libpspp / hash-functions.c
index af8b4c2c83a68f51423a2e934ed483f6fffa3f1f..c43017313a789666ca83bb8373351bc59972a3b0 100644 (file)
@@ -15,7 +15,9 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include <config.h>
-#include <libpspp/hash-functions.h>
+
+#include "libpspp/hash-functions.h"
+
 #include <assert.h>
 #include <ctype.h>
 #include <math.h>
@@ -100,13 +102,12 @@ hash_string (const char *s, unsigned int basis)
   return hash_bytes (s, strlen (s), basis);
 }
 
-/* Returns a hash value for null-terminated string S, with
-   lowercase and uppercase letters treated as equal, starting
-   from BASIS. */
+/* Returns a hash value for the N bytes at S, with lowercase and uppercase
+   letters treated as equal, starting from BASIS. */
 unsigned int
-hash_case_string (const char *s, unsigned int basis)
+hash_case_bytes (const void *s_, size_t n, unsigned int basis)
 {
-  size_t n = strlen (s);
+  const char *s = s_;
   uint32_t a, b, c;
   uint32_t tmp[3];
   int i;
@@ -139,6 +140,15 @@ hash_case_string (const char *s, unsigned int basis)
   return c;
 }
 
+/* Returns a hash value for null-terminated string S, with
+   lowercase and uppercase letters treated as equal, starting
+   from BASIS. */
+unsigned int
+hash_case_string (const char *s, unsigned int basis)
+{
+  return hash_case_bytes (s, strlen (s), basis);
+}
+
 /* Returns a hash value for integer X, starting from BASIS. */
 unsigned int
 hash_int (int x, unsigned int basis)