Home | History | Annotate | Download | only in legacy
      1 /*
      2 *******************************************************************************
      3 *
      4 *    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:   UTF-8
     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 
     31 extern "C" void test_current(UChar data[][5], uint32_t size, uint32_t maxLen, uint8_t keys[][32]);
     32 extern "C" void test_legacy(UChar data[][5], uint32_t size, uint32_t maxlen, uint8_t keys[][32]);
     33 
     34 void 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 
     45 void 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 
     55 void 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[]) {
     75 int 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