1/*
2******************************************************************************
3*   Copyright (C) 1997-2010, International Business Machines
4*   Corporation and others.  All Rights Reserved.
5******************************************************************************
6*   Date        Name        Description
7*   03/22/00    aliu        Creation.
8*   07/06/01    aliu        Modified to support int32_t keys on
9*                           platforms with sizeof(void*) < 32.
10******************************************************************************
11*/
12
13#include "uhash.h"
14#include "hash.h"
15#include "uvector.h"
16#include "unicode/unistr.h"
17#include "unicode/uchar.h"
18
19/********************************************************************
20 * PUBLIC UnicodeString support functions for UHashtable
21 ********************************************************************/
22
23U_CAPI int32_t U_EXPORT2
24uhash_hashUnicodeString(const UHashTok key) {
25    U_NAMESPACE_USE
26    const UnicodeString *str = (const UnicodeString*) key.pointer;
27    return (str == NULL) ? 0 : str->hashCode();
28}
29
30U_CAPI void U_EXPORT2
31uhash_deleteUnicodeString(void *obj) {
32    U_NAMESPACE_USE
33    delete (UnicodeString*) obj;
34}
35
36U_CAPI UBool U_EXPORT2
37uhash_compareUnicodeString(const UHashTok key1, const UHashTok key2) {
38    U_NAMESPACE_USE
39    const UnicodeString *str1 = (const UnicodeString*) key1.pointer;
40    const UnicodeString *str2 = (const UnicodeString*) key2.pointer;
41    if (str1 == str2) {
42        return TRUE;
43    }
44    if (str1 == NULL || str2 == NULL) {
45        return FALSE;
46    }
47    return *str1 == *str2;
48}
49
50/**
51 * Deleter for Hashtable objects.
52 */
53U_CAPI void U_EXPORT2
54uhash_deleteHashtable(void *obj) {
55    U_NAMESPACE_USE
56    delete (Hashtable*) obj;
57}
58
59/**
60 * Deleter for UObject instances.
61 */
62U_CAPI void U_EXPORT2
63uhash_deleteUObject(void *obj) {
64    U_NAMESPACE_USE
65    delete (UObject*) obj;
66}
67
68//eof
69