| /* | |
| ******************************************************************************* | |
| * | |
| * © 2016 and later: Unicode, Inc. and others. | |
| * License & terms of use: http://www.unicode.org/copyright.html | |
| * | |
| ******************************************************************************* | |
| ******************************************************************************* | |
| * | |
| * Copyright (C) 2001 - 2005, International Business Machines | |
| * Corporation and others. All Rights Reserved. | |
| * | |
| ******************************************************************************* | |
| * file name: main.cpp | |
| * encoding: UTF-8 | |
| * tab size: 8 (not used) | |
| * indentation:4 | |
| * | |
| * created on: 2001jul24 | |
| * created by: Vladimir Weinstein | |
| */ | |
| /****************************************************************************** | |
| * main program demonstrating using two versions of ICU in the same project | |
| ******************************************************************************/ | |
| #include <stdio.h> | |
| #include "unicode/utypes.h" | |
| #include "unicode/ustring.h" | |
| extern "C" void test_current(UChar data[][5], uint32_t size, uint32_t maxLen, uint8_t keys[][32]); | |
| extern "C" void test_legacy(UChar data[][5], uint32_t size, uint32_t maxlen, uint8_t keys[][32]); | |
| void printZTUChar(const UChar *str) { | |
| while(*str != 0) { | |
| if(*str > 0x1F && *str < 0x80) { | |
| fprintf(stdout, "%c", (*str) & 0xFF); | |
| } else { | |
| fprintf(stdout, "\\u%04X", *str); | |
| } | |
| str++; | |
| } | |
| } | |
| void printArray(const char* const comment, const UChar UArray[][5], int32_t arraySize) { | |
| fprintf (stdout, "%s\n", comment); | |
| int32_t i = 0; | |
| for(i = 0; i<arraySize; i++) { | |
| fprintf(stdout, "%d ", i); | |
| printZTUChar(UArray[i]); | |
| fprintf(stdout, "\n"); | |
| } | |
| } | |
| void printKeys(const char *comment, uint8_t keys[][32], int32_t keySize) { | |
| int32_t i = 0; | |
| uint8_t *currentKey = NULL; | |
| fprintf(stdout, "%s\n", comment); | |
| for(i = 0; i<keySize; i++) { | |
| currentKey = keys[i]; | |
| while(*currentKey != 0) { | |
| if(*currentKey == 1) { | |
| fprintf(stdout, "01 "); | |
| } else { | |
| fprintf(stdout, "%02X", *currentKey); | |
| } | |
| currentKey++; | |
| } | |
| fprintf(stdout, " 00\n"); | |
| } | |
| } | |
| //int main(int argc, const char * const argv[]) { | |
| int main(int, const char * const *) { | |
| static const char* test[4] = { | |
| "\\u304D\\u3085\\u3046\\u0000", | |
| "\\u30AD\\u30E6\\u30A6\\u0000", | |
| "\\u304D\\u3086\\u3046\\u0000", | |
| "\\u30AD\\u30E5\\u30A6\\u0000" | |
| }; | |
| #if 0 | |
| static const char* test2[4] = { | |
| "dbc\\u0000", | |
| "cbc\\u0000", | |
| "bbc\\u0000", | |
| "abc\\u0000" | |
| }; | |
| #endif | |
| static UChar uTest[4][5]; | |
| static uint8_t keys[4][32]; | |
| uint32_t i = 0; | |
| for(i = 0; i<4; i++) { | |
| u_unescape(test[i], uTest[i], 5); | |
| } | |
| printArray("Before current", uTest, 4); | |
| test_current(uTest, 4, 5, keys); | |
| printArray("After current", uTest, 4); | |
| printKeys("Current keys", keys, 4); | |
| for(i = 0; i<4; i++) { | |
| u_unescape(test[i], uTest[i], 5); | |
| } | |
| printArray("Before legacy", uTest, 4); | |
| test_legacy(uTest, 4, 5, keys); | |
| printArray("After legacy", uTest, 4); | |
| printKeys("Legacy keys", keys, 4); | |
| return 0; | |
| } |