home *** CD-ROM | disk | FTP | other *** search
/ Dream 52 / Amiga_Dream_52.iso / Linux / Divers / lynx2.8.1dev.10.tar.gz / lynx2.8.1dev.10.tar / lynx2-8 / src / LYHash.c < prev    next >
C/C++ Source or Header  |  1998-03-25  |  1KB  |  52 lines

  1. /* A hash table for the (fake) CSS support in Lynx-rp
  2. ** (c) 1996 Rob Partington
  3. */
  4.  
  5. #include <LYStructs.h>
  6. #include <LYCurses.h>
  7. #include <AttrList.h>
  8. #include <SGML.h>
  9. #include <HTMLDTD.h>
  10.  
  11. #include <LYHash.h>
  12.  
  13. #ifdef NOT_USED
  14.  
  15. PUBLIC int hash_table[CSHASHSIZE]; /* 32K should be big enough */
  16.  
  17. PUBLIC int hash_code_rp ARGS1(char*,string)
  18. {
  19.     char* hash_ptr = string;
  20.     int hash_tmp = 0xC00A | ((*hash_ptr) << 4);
  21.  
  22.     while (*hash_ptr++)
  23.     {
  24.         hash_tmp ^= (((*hash_ptr)<<4) ^ ((*hash_ptr)<<12));
  25.         hash_tmp >>= 1;
  26.     }
  27.     return (hash_tmp % CSHASHSIZE);
  28. }
  29. #endif
  30.  
  31. /*
  32.  *    This is the same function as the private HASH_FUNCTION() in HTAnchor.c,
  33.  *      but with a different value for HASH_SIZE.
  34.  */ 
  35.  
  36. #ifdef NOT_USED
  37. #define HASH_SIZE 8193        /* Arbitrary prime. Memory/speed tradeoff */
  38. #else
  39. #define HASH_SIZE CSHASHSIZE
  40. #endif
  41.  
  42. PUBLIC int hash_code ARGS1 (char*, string)
  43. {
  44.     int hash;
  45.     unsigned char *p;
  46.  
  47.     for (p = (unsigned char *)string, hash = 0; *p; p++)
  48.         hash = (int) (hash * 3 + (*(unsigned char *)p)) % HASH_SIZE;
  49.  
  50.     return hash;
  51. }
  52.