diff options
author | Peter Breitenlohner <peb@mppmu.mpg.de> | 2012-03-04 13:16:15 +0000 |
---|---|---|
committer | Peter Breitenlohner <peb@mppmu.mpg.de> | 2012-03-04 13:16:15 +0000 |
commit | 4f735f9c7efbb40316858ad2efed993d860c7461 (patch) | |
tree | 43ccf38db72347f7b31eee44ec13854565310706 /Build/source/libs/icu/icu-49.1/samples/legacy/newcol.cpp | |
parent | a88413671252aebde6da430845232b126d5a71dd (diff) |
icu 49.1 (49_rc)
git-svn-id: svn://tug.org/texlive/trunk@25559 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/libs/icu/icu-49.1/samples/legacy/newcol.cpp')
-rw-r--r-- | Build/source/libs/icu/icu-49.1/samples/legacy/newcol.cpp | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/Build/source/libs/icu/icu-49.1/samples/legacy/newcol.cpp b/Build/source/libs/icu/icu-49.1/samples/legacy/newcol.cpp new file mode 100644 index 00000000000..195a8acdb48 --- /dev/null +++ b/Build/source/libs/icu/icu-49.1/samples/legacy/newcol.cpp @@ -0,0 +1,90 @@ +/* +******************************************************************************* +* +* Copyright (C) 2001 - 2005, International Business Machines +* Corporation and others. All Rights Reserved. +* +******************************************************************************* +* file name: newcol.cpp +* encoding: US-ASCII +* tab size: 8 (not used) +* indentation:4 +* +* created on: 2001jul24 +* created by: Vladimir Weinstein +*/ + +/****************************************************************************** + * This is the module that uses new collation + ******************************************************************************/ + +#include <stdio.h> +#include <stdlib.h> +#include "unicode/ucol.h" + +// Very simple example code - sticks a sortkey in the buffer +// Not much error checking +int32_t getSortKey_current(const char *locale, const UChar *string, int32_t sLen, uint8_t *buffer, int32_t bLen) { + UErrorCode status = U_ZERO_ERROR; + UCollator *coll = ucol_open(locale, &status); + if(U_FAILURE(status)) { + return -1; + } + int32_t result = ucol_getSortKey(coll, string, sLen, buffer, bLen); + ucol_close(coll); + return result; +} + +// This one can be used for passing to qsort function +// Not thread safe or anything +static UCollator *compareCollator = NULL; + +int compare_current(const void *string1, const void *string2) { + if(compareCollator != NULL) { + UCollationResult res = ucol_strcoll(compareCollator, (UChar *) string1, -1, (UChar *) string2, -1); + if(res == UCOL_LESS) { + return -1; + } else if(res == UCOL_GREATER) { + return 1; + } else { + return 0; + } + } else { + return 0; + } +} + +void initCollator_current(const char *locale) { + UErrorCode status = U_ZERO_ERROR; + compareCollator = ucol_open(locale, &status); +} + +void closeCollator_current(void) { + ucol_close(compareCollator); + compareCollator = NULL; +} + + +extern "C" void test_current(UChar data[][5], uint32_t size, uint32_t maxlen, uint8_t keys[][32]) { + uint32_t i = 0; + int32_t keySize = 0; + UVersionInfo uvi; + + u_getVersion(uvi); + fprintf(stderr, "Entered current, version: [%d.%d.%d.%d]\nMoving to sortkeys\n", uvi[0], uvi[1], uvi[2], uvi[3]); + + for(i = 0; i<size; i++) { + keySize = getSortKey_current("ja", data[i], -1, keys[i], 32); + fprintf(stderr, "For i=%d, size of sortkey is %d\n", i, keySize); + } + + fprintf(stderr, "Done sortkeys, doing qsort test\n"); + + initCollator_current("ja"); + qsort(data, size, maxlen*sizeof(UChar), compare_current); + closeCollator_current(); + + fprintf(stderr, "Done current!\n"); +} + + |