1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- /* go-type-string.c -- hash and equality string functions.
- Copyright 2009 The Go Authors. All rights reserved.
- Use of this source code is governed by a BSD-style
- license that can be found in the LICENSE file. */
- #include "runtime.h"
- #include "go-type.h"
- #include "go-string.h"
- /* A string hash function for a map. */
- uintptr_t
- __go_type_hash_string (const void *vkey,
- uintptr_t key_size __attribute__ ((unused)))
- {
- uintptr_t ret;
- const String *key;
- intgo len;
- intgo i;
- const byte *p;
- ret = 5381;
- key = (const String *) vkey;
- len = key->len;
- for (i = 0, p = key->str; i < len; i++, p++)
- ret = ret * 33 + *p;
- return ret;
- }
- /* A string equality function for a map. */
- _Bool
- __go_type_equal_string (const void *vk1, const void *vk2,
- uintptr_t key_size __attribute__ ((unused)))
- {
- const String *k1;
- const String *k2;
- k1 = (const String *) vk1;
- k2 = (const String *) vk2;
- return __go_ptr_strings_equal (k1, k2);
- }
|