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