FOSSology  3.2.0rc1
Open Source License Compliance by Open Source Software
hash.c
1 /*
2 Author: Daniele Fognini, Andreas Wuerl
3 Copyright (C) 2013-2014, Siemens AG
4 
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of the GNU General Public License
7 version 2 as published by the Free Software Foundation.
8 
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13 
14 You should have received a copy of the GNU General Public License along
15 with this program; if not, write to the Free Software Foundation, Inc.,
16 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 */
18 
19 #include "hash.h"
20 #include <stdio.h>
21 
22 uint32_t hash(const char* string) {
23 
24  uint32_t result = hash_init();
25 
26  const char* ptr = string;
27 
28  while (*ptr) {
29  hash_add(ptr, &result);
30  ptr++;
31  }
32 
33  return result;
34 }
35 
36 uint32_t hash_init() {
37  return 5231;
38 }
39 
40 void hash_add(const char* value, uint32_t* currentHash) {
41  *currentHash = ((*currentHash << 6) + *currentHash) + *value;
42 }