1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* 2ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru******************************************************************************* 3ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* 4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* Copyright (C) 2001 - 2005, International Business Machines 5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* Corporation and others. All Rights Reserved. 6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* 7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru******************************************************************************* 8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* file name: main.cpp 9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* encoding: US-ASCII 10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* tab size: 8 (not used) 11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* indentation:4 12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* 13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* created on: 2001jul24 14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* created by: Vladimir Weinstein 15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/ 16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/****************************************************************************** 18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * main program demonstrating using two versions of ICU in the same project 19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru ******************************************************************************/ 20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include <stdio.h> 22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/utypes.h" 23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/ustring.h" 24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruextern "C" void test_current(UChar data[][5], uint32_t size, uint32_t maxLen, uint8_t keys[][32]); 26ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruextern "C" void test_legacy(UChar data[][5], uint32_t size, uint32_t maxlen, uint8_t keys[][32]); 27ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 28ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruvoid printZTUChar(const UChar *str) { 29ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru while(*str != 0) { 30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru if(*str > 0x1F && *str < 0x80) { 31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru fprintf(stdout, "%c", (*str) & 0xFF); 32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } else { 33ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru fprintf(stdout, "\\u%04X", *str); 34ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 35ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru str++; 36ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 37ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 38ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 39ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruvoid printArray(const char* const comment, const UChar UArray[][5], int32_t arraySize) { 40ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru fprintf (stdout, "%s\n", comment); 41ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru int32_t i = 0; 42ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru for(i = 0; i<arraySize; i++) { 43ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru fprintf(stdout, "%d ", i); 44ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru printZTUChar(UArray[i]); 45ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru fprintf(stdout, "\n"); 46ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 47ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 48ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 49ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruvoid printKeys(const char *comment, uint8_t keys[][32], int32_t keySize) { 50ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru int32_t i = 0; 51ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru uint8_t *currentKey = NULL; 52ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru fprintf(stdout, "%s\n", comment); 53ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru for(i = 0; i<keySize; i++) { 54ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru currentKey = keys[i]; 55ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru while(*currentKey != 0) { 56ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru if(*currentKey == 1) { 57ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru fprintf(stdout, "01 "); 58ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } else { 59ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru fprintf(stdout, "%02X", *currentKey); 60ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 61ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru currentKey++; 62ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 63ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru fprintf(stdout, " 00\n"); 64ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 65ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 66ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 67ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 68ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru//int main(int argc, const char * const argv[]) { 69ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruint main(int, const char * const *) { 70ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru static const char* test[4] = { 71ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru "\\u304D\\u3085\\u3046\\u0000", 72ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru "\\u30AD\\u30E6\\u30A6\\u0000", 73ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru "\\u304D\\u3086\\u3046\\u0000", 74ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru "\\u30AD\\u30E5\\u30A6\\u0000" 75ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru }; 76ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 77ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#if 0 78ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru static const char* test2[4] = { 79ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru "dbc\\u0000", 80ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru "cbc\\u0000", 81ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru "bbc\\u0000", 82ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru "abc\\u0000" 83ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru }; 84ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif 85ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 86ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru static UChar uTest[4][5]; 87ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 88ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru static uint8_t keys[4][32]; 89ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 90ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru uint32_t i = 0; 91ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 92ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru for(i = 0; i<4; i++) { 93ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru u_unescape(test[i], uTest[i], 5); 94ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 95ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru printArray("Before current", uTest, 4); 96ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru test_current(uTest, 4, 5, keys); 97ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru printArray("After current", uTest, 4); 98ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru printKeys("Current keys", keys, 4); 99ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 100ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru for(i = 0; i<4; i++) { 101ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru u_unescape(test[i], uTest[i], 5); 102ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 103ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru printArray("Before legacy", uTest, 4); 104ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru test_legacy(uTest, 4, 5, keys); 105ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru printArray("After legacy", uTest, 4); 106ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru printKeys("Legacy keys", keys, 4); 107ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 108ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 109ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru return 0; 110ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 111