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