+2000-12-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * hash.[ch] (scm_string_hash), symbols.[ch] (scm_string_hash):
+ Moved function scm_string_hash to hash.c.
+
2000-12-11 Marius Vollmer <mvo@zagadka.ping.de>
* gc_os_dep.c (scm_get_stack_base) [MSWIN32]: Added detection of
#endif
+unsigned long
+scm_string_hash (const unsigned char *str, scm_sizet len)
+{
+ if (len > 5)
+ {
+ scm_sizet i = 5;
+ unsigned long h = 264;
+ while (i--)
+ h = (h << 8) + ((unsigned) (scm_downcase (str[h % len])));
+ return h;
+ }
+ else
+ {
+ scm_sizet i = len;
+ unsigned long h = 0;
+ while (i)
+ h = (h << 8) + ((unsigned) (scm_downcase (str[--i])));
+ return h;
+ }
+}
+
+
/* Dirk:FIXME:: why downcase for characters? (2x: scm_hasher, scm_ihashv) */
/* Dirk:FIXME:: scm_hasher could be made static. */
\f
+extern unsigned long scm_string_hash (const unsigned char *str, scm_sizet len);
extern unsigned long scm_hasher (SCM obj, unsigned long n, scm_sizet d);
extern unsigned int scm_ihashq (SCM obj, unsigned int n);
extern SCM scm_hashq (SCM obj, SCM n);
#include "libguile/_scm.h"
#include "libguile/chars.h"
#include "libguile/eval.h"
+#include "libguile/hash.h"
#include "libguile/smob.h"
#include "libguile/variable.h"
#include "libguile/alist.h"
*/
-unsigned long
-scm_string_hash (const unsigned char *str, scm_sizet len)
-{
- if (len > 5)
- {
- scm_sizet i = 5;
- unsigned long h = 264;
- while (i--)
- h = (h << 8) + ((unsigned) (scm_downcase (str[h % len])));
- return h;
- }
- else
- {
- scm_sizet i = len;
- unsigned long h = 0;
- while (i)
- h = (h << 8) + ((unsigned) (scm_downcase (str[--i])));
- return h;
- }
-}
-
-
/* scm_sym2vcell
* looks up the symbol in the symhash table.
*/
\f
-extern unsigned long scm_string_hash (const unsigned char *str, scm_sizet len);
-
extern SCM scm_mem2symbol (const char*, scm_sizet);
extern SCM scm_str2symbol (const char*);