OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [intl/] [hash-string.h] - Diff between revs 154 and 816

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 154 Rev 816
/* Description of GNU message catalog format: string hashing function.
/* Description of GNU message catalog format: string hashing function.
   Copyright (C) 1995, 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
   Copyright (C) 1995, 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
 
 
   This program is free software; you can redistribute it and/or modify it
   This program is free software; you can redistribute it and/or modify it
   under the terms of the GNU Library General Public License as published
   under the terms of the GNU Library General Public License as published
   by the Free Software Foundation; either version 2, or (at your option)
   by the Free Software Foundation; either version 2, or (at your option)
   any later version.
   any later version.
 
 
   This program is distributed in the hope that it will be useful,
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Library General Public License for more details.
   Library General Public License for more details.
 
 
   You should have received a copy of the GNU Library General Public
   You should have received a copy of the GNU Library General Public
   License along with this program; if not, write to the Free Software
   License along with this program; if not, write to the Free Software
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301,
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301,
   USA.  */
   USA.  */
 
 
/* @@ end of prolog @@ */
/* @@ end of prolog @@ */
 
 
#ifndef PARAMS
#ifndef PARAMS
# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES
# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES
#  define PARAMS(Args) Args
#  define PARAMS(Args) Args
# else
# else
#  define PARAMS(Args) ()
#  define PARAMS(Args) ()
# endif
# endif
#endif
#endif
 
 
/* We assume to have `unsigned long int' value with at least 32 bits.  */
/* We assume to have `unsigned long int' value with at least 32 bits.  */
#define HASHWORDBITS 32
#define HASHWORDBITS 32
 
 
 
 
/* Defines the so called `hashpjw' function by P.J. Weinberger
/* Defines the so called `hashpjw' function by P.J. Weinberger
   [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
   [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
   1986, 1987 Bell Telephone Laboratories, Inc.]  */
   1986, 1987 Bell Telephone Laboratories, Inc.]  */
static unsigned long int hash_string PARAMS ((const char *__str_param));
static unsigned long int hash_string PARAMS ((const char *__str_param));
 
 
static inline unsigned long int
static inline unsigned long int
hash_string (str_param)
hash_string (str_param)
     const char *str_param;
     const char *str_param;
{
{
  unsigned long int hval, g;
  unsigned long int hval, g;
  const char *str = str_param;
  const char *str = str_param;
 
 
  /* Compute the hash value for the given string.  */
  /* Compute the hash value for the given string.  */
  hval = 0;
  hval = 0;
  while (*str != '\0')
  while (*str != '\0')
    {
    {
      hval <<= 4;
      hval <<= 4;
      hval += (unsigned long int) *str++;
      hval += (unsigned long int) *str++;
      g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4));
      g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4));
      if (g != 0)
      if (g != 0)
        {
        {
          hval ^= g >> (HASHWORDBITS - 8);
          hval ^= g >> (HASHWORDBITS - 8);
          hval ^= g;
          hval ^= g;
        }
        }
    }
    }
  return hval;
  return hval;
}
}
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.