16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org******************************************************************************* 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Copyright (C) 2001 - 2005, International Business Machines 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Corporation and others. All Rights Reserved. 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org******************************************************************************* 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* file name: main.cpp 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* encoding: US-ASCII 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* tab size: 8 (not used) 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* indentation:4 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* created on: 2001jul24 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* created by: Vladimir Weinstein 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/****************************************************************************** 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * main program demonstrating using two versions of ICU in the same project 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ******************************************************************************/ 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include <stdio.h> 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/utypes.h" 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/ustring.h" 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgextern "C" void test_current(UChar data[][5], uint32_t size, uint32_t maxLen, uint8_t keys[][32]); 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgextern "C" void test_legacy(UChar data[][5], uint32_t size, uint32_t maxlen, uint8_t keys[][32]); 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid printZTUChar(const UChar *str) { 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org while(*str != 0) { 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(*str > 0x1F && *str < 0x80) { 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fprintf(stdout, "%c", (*str) & 0xFF); 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } else { 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fprintf(stdout, "\\u%04X", *str); 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org str++; 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid printArray(const char* const comment, const UChar UArray[][5], int32_t arraySize) { 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fprintf (stdout, "%s\n", comment); 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t i = 0; 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org for(i = 0; i<arraySize; i++) { 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fprintf(stdout, "%d ", i); 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org printZTUChar(UArray[i]); 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fprintf(stdout, "\n"); 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid printKeys(const char *comment, uint8_t keys[][32], int32_t keySize) { 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t i = 0; 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint8_t *currentKey = NULL; 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fprintf(stdout, "%s\n", comment); 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org for(i = 0; i<keySize; i++) { 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org currentKey = keys[i]; 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org while(*currentKey != 0) { 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(*currentKey == 1) { 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fprintf(stdout, "01 "); 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } else { 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fprintf(stdout, "%02X", *currentKey); 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org currentKey++; 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fprintf(stdout, " 00\n"); 646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org//int main(int argc, const char * const argv[]) { 696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgint main(int, const char * const *) { 706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static const char* test[4] = { 716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org "\\u304D\\u3085\\u3046\\u0000", 726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org "\\u30AD\\u30E6\\u30A6\\u0000", 736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org "\\u304D\\u3086\\u3046\\u0000", 746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org "\\u30AD\\u30E5\\u30A6\\u0000" 756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org }; 766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if 0 786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static const char* test2[4] = { 796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org "dbc\\u0000", 806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org "cbc\\u0000", 816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org "bbc\\u0000", 826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org "abc\\u0000" 836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org }; 846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static UChar uTest[4][5]; 876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static uint8_t keys[4][32]; 896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t i = 0; 916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org for(i = 0; i<4; i++) { 936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_unescape(test[i], uTest[i], 5); 946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org printArray("Before current", uTest, 4); 966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org test_current(uTest, 4, 5, keys); 976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org printArray("After current", uTest, 4); 986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org printKeys("Current keys", keys, 4); 996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org for(i = 0; i<4; i++) { 1016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_unescape(test[i], uTest[i], 5); 1026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org printArray("Before legacy", uTest, 4); 1046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org test_legacy(uTest, 4, 5, keys); 1056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org printArray("After legacy", uTest, 4); 1066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org printKeys("Legacy keys", keys, 4); 1076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return 0; 1106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 111