uhash_us.cpp revision ac04d0bbe12b3ef54518635711412f178cb4d16
183e085b7a331c96237cf8e814f97b3ef4c36a70fjimblandy/* 252cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy****************************************************************************** 352cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy* Copyright (C) 1997-2004, International Business Machines 452cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy* Corporation and others. All Rights Reserved. 552cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy****************************************************************************** 652cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy* Date Name Description 752cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy* 03/22/00 aliu Creation. 852cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy* 07/06/01 aliu Modified to support int32_t keys on 952cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy* platforms with sizeof(void*) < 32. 1052cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy****************************************************************************** 1152cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy*/ 1252cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy 1352cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy#include "uhash.h" 1452cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy#include "hash.h" 1552cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy#include "uvector.h" 1652cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy#include "unicode/unistr.h" 1752cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy#include "unicode/uchar.h" 1852cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy 1952cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy/******************************************************************** 2052cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy * PUBLIC UnicodeString support functions for UHashtable 2152cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy ********************************************************************/ 2252cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy 2352cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandyU_CAPI int32_t U_EXPORT2 2452cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandyuhash_hashUnicodeString(const UHashTok key) { 2552cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy U_NAMESPACE_USE 2652cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy const UnicodeString *str = (const UnicodeString*) key.pointer; 2752cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy return (str == NULL) ? 0 : str->hashCode(); 2852cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy} 2952cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy 30c50e7c604cd1b12bba9421b0a95357fc942ecd7cjimblandyU_CAPI void U_EXPORT2 31c50e7c604cd1b12bba9421b0a95357fc942ecd7cjimblandyuhash_deleteUnicodeString(void *obj) { 32c50e7c604cd1b12bba9421b0a95357fc942ecd7cjimblandy U_NAMESPACE_USE 3352cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy delete (UnicodeString*) obj; 34e1930985430ce289f4fe8525f51050e5d78cc44eted.mielczarek} 35e1930985430ce289f4fe8525f51050e5d78cc44eted.mielczarek 36e1930985430ce289f4fe8525f51050e5d78cc44eted.mielczarekU_CAPI UBool U_EXPORT2 37e1930985430ce289f4fe8525f51050e5d78cc44eted.mielczarekuhash_compareUnicodeString(const UHashTok key1, const UHashTok key2) { 3852cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy U_NAMESPACE_USE 3952cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy const UnicodeString *str1 = (const UnicodeString*) key1.pointer; 4052cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy const UnicodeString *str2 = (const UnicodeString*) key2.pointer; 4152cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy if (str1 == str2) { 4252cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy return TRUE; 4387855248f1fab83caf002418196a34051d359f2cjimblandy } 4452cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy if (str1 == NULL || str2 == NULL) { 453e768ed9c01a244cdb1bc0d6aec34fb25821fbccjimblandy return FALSE; 4652cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy } 4752cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy return *str1 == *str2; 483e768ed9c01a244cdb1bc0d6aec34fb25821fbccjimblandy} 4952cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy 5052cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy/** 5152cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy * Deleter for Hashtable objects. 524ac61acb3a7dad6ce722fe07564be8ec92713228dmaclach */ 5352cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandyU_CAPI void U_EXPORT2 5452cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandyuhash_deleteHashtable(void *obj) { 5552cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy U_NAMESPACE_USE 5652cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy delete (Hashtable*) obj; 5752cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy} 5852cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy 5952cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy/** 6052cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy * Deleter for UVector objects. 6152cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy */ 6252cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandyU_CAPI void U_EXPORT2 634ac61acb3a7dad6ce722fe07564be8ec92713228dmaclachuhash_deleteUVector(void *obj) { 6452cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy U_NAMESPACE_USE 6552cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy delete (UVector*) obj; 6652cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy} 6752cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy 6852cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy//eof 6952cb2c6f4235dfaa3760ef37fe7082e9e99b0ebdjimblandy