hash-functions: New function hash_pointer().
authorBen Pfaff <blp@cs.stanford.edu>
Thu, 8 Apr 2010 04:39:06 +0000 (21:39 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Thu, 8 Apr 2010 04:40:10 +0000 (21:40 -0700)
src/libpspp/hash-functions.c
src/libpspp/hash-functions.h

index f9f1f0e165ef2db3801a65890ba7c9798aacda8c..a72ee06e185e8171efe4f50270215af4ac340943 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 1997-9, 2000, 2008, 2009 Free Software Foundation, Inc.
+   Copyright (C) 1997-9, 2000, 2008, 2009, 2010 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -172,3 +172,12 @@ hash_double (double d, unsigned int basis)
   return hash_bytes (&d, sizeof d, basis);
 #endif /* SIZEOF_DOUBLE != 8 */
 }
+
+/* Returns a hash value for pointer P, starting from BASIS. */
+unsigned int
+hash_pointer (const void *p, unsigned int basis)
+{
+  /* Casting to uintptr_t before casting to int suppresses a GCC warning about
+     on 64-bit platforms. */
+  return hash_int ((int) (uintptr_t) p, basis);
+}
index 089134b43fae16376ba9dcc80f3a8d50bf6081b2..bdf3da31ab7578fa464b693fe059b91382957ee3 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 1997-9, 2000, 2009 Free Software Foundation, Inc.
+   Copyright (C) 1997-9, 2000, 2009, 2010 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -24,5 +24,6 @@ unsigned int hash_string (const char *, unsigned int basis);
 unsigned int hash_case_string (const char *, unsigned int basis);
 unsigned int hash_int (int, unsigned int basis);
 unsigned int hash_double (double, unsigned int basis);
+unsigned int hash_pointer (const void *, unsigned int basis);
 
 #endif /* libpspp/hash-functions.h */