晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
| DIR:/opt/alt/libicu65/usr/share/doc/alt-libicu65-devel/samples/legacy/ |
| Current File : //opt/alt/libicu65/usr/share/doc/alt-libicu65-devel/samples/legacy/legacy.cpp |
/*
*******************************************************************************
*
* © 2016 and later: Unicode, Inc. and others.
* License & terms of use: http://www.unicode.org/copyright.html#License
*
*******************************************************************************
*******************************************************************************
*
* 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;
}
|