| /* |
| ******************************************************************************* |
| * |
| * © 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; |
| } |