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