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