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* Case folding examples, in C 10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* 11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru******************************************************************************* 12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/ 13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/uchar.h" 15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/ustring.h" 16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/utypes.h" 17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/ustdio.h" 18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* Note: don't use 'k' or 'K' because we might be on EBCDIC */ 20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruint c_main(UFILE *out) 22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UChar32 ch; 24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UErrorCode errorCode = U_ZERO_ERROR; 25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru static const UChar upper[] = {0x61, 0x42, 0x49, 0}; /* upper = "aBI" */ 26ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru static const UChar lower[] = {0x61, 0x42, 0x69, 0}; /* lower = "abi" */ 27ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /* unfold = "aB LATIN SMALL LETTER DOTLESS I" */ 28ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru static const UChar unfold[] = {0x61, 0x42, 0x131, 0} ; 29ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UChar buffer[32]; 30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru const UChar char_k = 0x006b; /* 'k' */ 31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru const UChar char_K = 0x004b; /* 'K' */ 32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 33ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru int length; 34ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 35ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru printf("** C Case Mapping Sample\n"); 36ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 37ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /* uchar.h APIs, single character case mapping */ 38ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru ch = u_toupper(char_k); /* ch = 'K' */ 39ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru u_fprintf(out, "toupper(%C) = %C\n", char_k, ch); 40ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru ch = u_tolower(ch); /* ch = 'k' */ 41ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru u_fprintf(out, "tolower() = %C\n", ch); 42ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru ch = u_totitle(char_k); /* ch = 'K' */ 43ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru u_fprintf(out, "totitle(%C) = %C\n", char_k, ch); 44ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru ch = u_foldCase(char_K, U_FOLD_CASE_DEFAULT); /* ch = 'k' */ 45ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru u_fprintf(out, "u_foldCase(%C, U_FOLD_CASE_DEFAULT) = %C\n", char_K, (UChar) ch); 46ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 47ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /* ustring.h APIs, UChar * string case mapping with a Turkish locale */ 48ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /* result buffer = "ab?" latin small letter a, latin small letter b, latin 49ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru small letter dotless i */ 50ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru length = u_strToLower(buffer, sizeof(buffer)/sizeof(buffer[0]), upper, 51ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru sizeof(upper)/sizeof(upper[0]), "tr", &errorCode); 52ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru if(U_FAILURE(errorCode) || buffer[length]!=0) { 53ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru u_fprintf(out, "error in u_strToLower(Turkish locale)=%ld error=%s\n", length, 54ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru u_errorName(errorCode)); 55ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 56ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 57ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru u_fprintf(out, "u_strToLower(%S, turkish) -> %S\n", upper, buffer); 58ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 59ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 60ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /* ustring.h APIs, UChar * string case mapping with a Engish locale */ 61ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /* result buffer = "ABI" latin CAPITAL letter A, latin capital letter B, 62ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru latin capital letter I */ 63ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru length = u_strToUpper(buffer, sizeof(buffer)/sizeof(buffer[0]), upper, 64ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru sizeof(upper)/sizeof(upper[0]), "en", &errorCode); 65ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru if(U_FAILURE(errorCode) || buffer[length]!=0) { 66ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru u_fprintf(out, "error in u_strToLower(English locale)=%ld error=%s\n", length, 67ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru u_errorName(errorCode)); 68ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 69ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru u_fprintf(out, "u_strToUpper(%S, english) -> %S\n", lower, buffer); 70ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 71ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 72ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /* ustring.h APIs, UChar * string case folding */ 73ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /* result buffer = "abi" */ 74ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru length = u_strFoldCase(buffer, sizeof(buffer)/sizeof(buffer[0]), unfold, 75ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru sizeof(unfold)/sizeof(unfold[0]), U_FOLD_CASE_DEFAULT, 76ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru &errorCode); 77ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru if(U_FAILURE(errorCode) || buffer[length]!=0) { 78ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru u_fprintf(out, "error in u_strFoldCase()=%ld error=%s\n", length, 79ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru u_errorName(errorCode)); 80ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 81ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru u_fprintf(out, "u_strFoldCase(%S, U_FOLD_CASE_DEFAULT) -> %S\n", unfold, buffer); 82ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru u_fprintf(out, "\n** end of C sample\n"); 83ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 84ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru return 0; 85ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 86