1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* 2ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru******************************************************************************* 3ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* 4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* Copyright (C) 2003-2004, International Business Machines 5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* Corporation and others. All Rights Reserved. 6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* 7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru******************************************************************************* 8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/ 9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include <unicode/unistr.h> 11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include <unicode/ustdio.h> 12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include <unicode/brkiter.h> 13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include <stdlib.h> 14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_CFUNC int c_main(UFILE *out); 16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruvoid printUnicodeString(UFILE *out, const UnicodeString &s) { 18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UnicodeString other = s; 19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru u_fprintf(out, "\"%S\"", other.getTerminatedBuffer()); 20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruint main( void ) 24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UFILE *out; 26ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 27ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru out = u_finit(stdout, NULL, NULL); 28ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru if(!out) { 29ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru fprintf(stderr, "Could not initialize (finit()) over stdout! \n"); 30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru return 1; 31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru ucnv_setFromUCallBack(u_fgetConverter(out), UCNV_FROM_U_CALLBACK_ESCAPE, 33ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru NULL, NULL, NULL, &status); 34ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru if(U_FAILURE(status)) { 35ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru u_fprintf(out, "Warning- couldn't set the substitute callback - err %s\n", u_errorName(status)); 36ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 37ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 38ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /* End Demo boilerplate */ 39ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 40ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru u_fprintf(out,"ICU Case Mapping Sample Program\n\n"); 41ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru u_fprintf(out, "C++ Case Mapping\n\n"); 42ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 43ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UnicodeString string("This is a test"); 44ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /* lowercase = "istanbul" */ 45ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UChar lowercase[] = {0x69, 0x73, 0x74, 0x61, 0x6e, 0x62, 0x75, 0x6c, 0}; 46ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /* uppercase = "LATIN CAPITAL I WITH DOT ABOVE STANBUL" */ 47ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UChar uppercase[] = {0x0130, 0x53, 0x54, 0x41, 0x4e, 0x42, 0x55, 0x4C, 0}; 48ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 49ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UnicodeString upper(uppercase); 50ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UnicodeString lower(lowercase); 51ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 52ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru u_fprintf(out, "\nstring: "); 53ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru printUnicodeString(out, string); 54ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru string.toUpper(); /* string = "THIS IS A TEST" */ 55ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru u_fprintf(out, "\ntoUpper(): "); 56ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru printUnicodeString(out, string); 57ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru string.toLower(); /* string = "this is a test" */ 58ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru u_fprintf(out, "\ntoLower(): "); 59ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru printUnicodeString(out, string); 60ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 61ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru u_fprintf(out, "\n\nlowercase=%S, uppercase=%S\n", lowercase, uppercase); 62ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 63ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 64ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru string = upper; 65ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru string.toLower(Locale("tr", "TR")); /* Turkish lower case map string = 66ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru lowercase */ 67ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru u_fprintf(out, "\nupper.toLower: "); 68ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru printUnicodeString(out, string); 69ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 70ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru string = lower; 71ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru string.toUpper(Locale("tr", "TR")); /* Turkish upper case map string = 72ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru uppercase */ 73ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru u_fprintf(out, "\nlower.toUpper: "); 74ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru printUnicodeString(out, string); 75ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 76ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 77ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru u_fprintf(out, "\nEnd C++ sample\n\n"); 78ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 79ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru // Call the C version 80ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru int rc = c_main(out); 81ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru u_fclose(out); 82ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru return rc; 83ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 84ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 85