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