16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/*
26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*******************************************************************************
36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*
46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*   Copyright (C) 2003-2004, International Business Machines
56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*   Corporation and others.  All Rights Reserved.
66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*
76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*******************************************************************************
86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/
96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include <unicode/unistr.h>
116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include <unicode/ustdio.h>
126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include <unicode/brkiter.h>
136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include <stdlib.h>
146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CFUNC int c_main(UFILE *out);
166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid printUnicodeString(UFILE *out, const UnicodeString &s) {
186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    UnicodeString other = s;
196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    u_fprintf(out, "\"%S\"", other.getTerminatedBuffer());
206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}
216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgint main( void )
246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{
256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    UFILE *out;
266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    UErrorCode status  = U_ZERO_ERROR;
276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    out = u_finit(stdout, NULL, NULL);
286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    if(!out) {
296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        fprintf(stderr, "Could not initialize (finit()) over stdout! \n");
306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        return 1;
316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    }
326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    ucnv_setFromUCallBack(u_fgetConverter(out), UCNV_FROM_U_CALLBACK_ESCAPE,
336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        NULL, NULL, NULL, &status);
346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    if(U_FAILURE(status)) {
356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        u_fprintf(out, "Warning- couldn't set the substitute callback - err %s\n", u_errorName(status));
366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    }
376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /* End Demo boilerplate */
396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    u_fprintf(out,"ICU Case Mapping Sample Program\n\n");
416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    u_fprintf(out, "C++ Case Mapping\n\n");
426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    UnicodeString string("This is a test");
446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /* lowercase = "istanbul" */
456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    UChar lowercase[] = {0x69, 0x73, 0x74, 0x61, 0x6e, 0x62, 0x75, 0x6c, 0};
466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /* uppercase = "LATIN CAPITAL I WITH DOT ABOVE STANBUL" */
476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    UChar uppercase[] = {0x0130, 0x53, 0x54, 0x41, 0x4e, 0x42, 0x55, 0x4C, 0};
486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    UnicodeString upper(uppercase);
506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    UnicodeString lower(lowercase);
516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    u_fprintf(out, "\nstring: ");
536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    printUnicodeString(out, string);
546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    string.toUpper(); /* string = "THIS IS A TEST" */
556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    u_fprintf(out, "\ntoUpper(): ");
566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    printUnicodeString(out, string);
576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    string.toLower(); /* string = "this is a test" */
586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    u_fprintf(out, "\ntoLower(): ");
596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    printUnicodeString(out, string);
606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    u_fprintf(out, "\n\nlowercase=%S, uppercase=%S\n", lowercase, uppercase);
626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    string = upper;
656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    string.toLower(Locale("tr", "TR")); /* Turkish lower case map string =
666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org                                        lowercase */
676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    u_fprintf(out, "\nupper.toLower: ");
686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    printUnicodeString(out, string);
696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    string = lower;
716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    string.toUpper(Locale("tr", "TR")); /* Turkish upper case map string =
726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org                                        uppercase */
736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    u_fprintf(out, "\nlower.toUpper: ");
746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    printUnicodeString(out, string);
756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    u_fprintf(out, "\nEnd C++ sample\n\n");
786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    // Call the C version
806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    int rc = c_main(out);
816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    u_fclose(out);
826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    return rc;
836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}
846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
85