Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(286)

Side by Side Diff: source/common/uhash.c

Issue 1621843002: ICU 56 update step 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/icu.git@561
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « source/common/uhash.h ('k') | source/common/uinit.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 ****************************************************************************** 2 ******************************************************************************
3 * Copyright (C) 1997-2011, International Business Machines 3 * Copyright (C) 1997-2014, International Business Machines
4 * Corporation and others. All Rights Reserved. 4 * Corporation and others. All Rights Reserved.
5 ****************************************************************************** 5 ******************************************************************************
6 * Date Name Description 6 * Date Name Description
7 * 03/22/00 aliu Adapted from original C++ ICU Hashtable. 7 * 03/22/00 aliu Adapted from original C++ ICU Hashtable.
8 * 07/06/01 aliu Modified to support int32_t keys on 8 * 07/06/01 aliu Modified to support int32_t keys on
9 * platforms with sizeof(void*) < 32. 9 * platforms with sizeof(void*) < 32.
10 ****************************************************************************** 10 ******************************************************************************
11 */ 11 */
12 12
13 #include "uhash.h" 13 #include "uhash.h"
(...skipping 554 matching lines...) Expand 10 before | Expand all | Expand 10 after
568 return _uhash_init(fillinResult, keyHash, keyComp, valueComp, DEFAULT_PRIME_ INDEX, status); 568 return _uhash_init(fillinResult, keyHash, keyComp, valueComp, DEFAULT_PRIME_ INDEX, status);
569 } 569 }
570 570
571 U_CAPI void U_EXPORT2 571 U_CAPI void U_EXPORT2
572 uhash_close(UHashtable *hash) { 572 uhash_close(UHashtable *hash) {
573 if (hash == NULL) { 573 if (hash == NULL) {
574 return; 574 return;
575 } 575 }
576 if (hash->elements != NULL) { 576 if (hash->elements != NULL) {
577 if (hash->keyDeleter != NULL || hash->valueDeleter != NULL) { 577 if (hash->keyDeleter != NULL || hash->valueDeleter != NULL) {
578 int32_t pos=-1; 578 int32_t pos=UHASH_FIRST;
579 UHashElement *e; 579 UHashElement *e;
580 while ((e = (UHashElement*) uhash_nextElement(hash, &pos)) != NULL) { 580 while ((e = (UHashElement*) uhash_nextElement(hash, &pos)) != NULL) {
581 HASH_DELETE_KEY_VALUE(hash, e->key.pointer, e->value.pointer); 581 HASH_DELETE_KEY_VALUE(hash, e->key.pointer, e->value.pointer);
582 } 582 }
583 } 583 }
584 uprv_free(hash->elements); 584 uprv_free(hash->elements);
585 hash->elements = NULL; 585 hash->elements = NULL;
586 } 586 }
587 if (hash->allocated) { 587 if (hash->allocated) {
588 uprv_free(hash); 588 uprv_free(hash);
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
749 U_CAPI int32_t U_EXPORT2 749 U_CAPI int32_t U_EXPORT2
750 uhash_iremovei(UHashtable *hash, 750 uhash_iremovei(UHashtable *hash,
751 int32_t key) { 751 int32_t key) {
752 UHashTok keyholder; 752 UHashTok keyholder;
753 keyholder.integer = key; 753 keyholder.integer = key;
754 return _uhash_remove(hash, keyholder).integer; 754 return _uhash_remove(hash, keyholder).integer;
755 } 755 }
756 756
757 U_CAPI void U_EXPORT2 757 U_CAPI void U_EXPORT2
758 uhash_removeAll(UHashtable *hash) { 758 uhash_removeAll(UHashtable *hash) {
759 int32_t pos = -1; 759 int32_t pos = UHASH_FIRST;
760 const UHashElement *e; 760 const UHashElement *e;
761 U_ASSERT(hash != NULL); 761 U_ASSERT(hash != NULL);
762 if (hash->count != 0) { 762 if (hash->count != 0) {
763 while ((e = uhash_nextElement(hash, &pos)) != NULL) { 763 while ((e = uhash_nextElement(hash, &pos)) != NULL) {
764 uhash_removeElement(hash, e); 764 uhash_removeElement(hash, e);
765 } 765 }
766 } 766 }
767 U_ASSERT(hash->count == 0); 767 U_ASSERT(hash->count == 0);
768 } 768 }
769 769
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
878 */ 878 */
879 return FALSE; 879 return FALSE;
880 } 880 }
881 881
882 count1 = uhash_count(hash1); 882 count1 = uhash_count(hash1);
883 count2 = uhash_count(hash2); 883 count2 = uhash_count(hash2);
884 if(count1!=count2){ 884 if(count1!=count2){
885 return FALSE; 885 return FALSE;
886 } 886 }
887 887
888 pos=-1; 888 pos=UHASH_FIRST;
889 for(i=0; i<count1; i++){ 889 for(i=0; i<count1; i++){
890 const UHashElement* elem1 = uhash_nextElement(hash1, &pos); 890 const UHashElement* elem1 = uhash_nextElement(hash1, &pos);
891 const UHashTok key1 = elem1->key; 891 const UHashTok key1 = elem1->key;
892 const UHashTok val1 = elem1->value; 892 const UHashTok val1 = elem1->value;
893 /* here the keys are not compared, instead the key form hash1 is used to fetch 893 /* here the keys are not compared, instead the key form hash1 is used to fetch
894 * value from hash2. If the hashes are equal then then both hashes shoul d 894 * value from hash2. If the hashes are equal then then both hashes shoul d
895 * contain equal values for the same key! 895 * contain equal values for the same key!
896 */ 896 */
897 const UHashElement* elem2 = _uhash_find(hash2, key1, hash2->keyHasher(ke y1)); 897 const UHashElement* elem2 = _uhash_find(hash2, key1, hash2->keyHasher(ke y1));
898 const UHashTok val2 = elem2->value; 898 const UHashTok val2 = elem2->value;
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
964 964
965 U_CAPI int32_t U_EXPORT2 965 U_CAPI int32_t U_EXPORT2
966 uhash_hashLong(const UHashTok key) { 966 uhash_hashLong(const UHashTok key) {
967 return key.integer; 967 return key.integer;
968 } 968 }
969 969
970 U_CAPI UBool U_EXPORT2 970 U_CAPI UBool U_EXPORT2
971 uhash_compareLong(const UHashTok key1, const UHashTok key2) { 971 uhash_compareLong(const UHashTok key1, const UHashTok key2) {
972 return (UBool)(key1.integer == key2.integer); 972 return (UBool)(key1.integer == key2.integer);
973 } 973 }
OLDNEW
« no previous file with comments | « source/common/uhash.h ('k') | source/common/uinit.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698