You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
3.0 KiB
117 lines
3.0 KiB
4 months ago
|
/*
|
||
|
*******************************************************************************
|
||
|
*
|
||
|
* © 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;
|
||
|
}
|