| OLD | NEW | 
|---|
| 1 /******************************************************************** | 1 /******************************************************************** | 
| 2  * COPYRIGHT: | 2  * COPYRIGHT: | 
| 3  * Copyright (c) 1999-2010, International Business Machines Corporation and | 3  * Copyright (c) 1999-2014, International Business Machines Corporation and | 
| 4  * others. All Rights Reserved. | 4  * others. All Rights Reserved. | 
| 5  ********************************************************************/ | 5  ********************************************************************/ | 
| 6 | 6 | 
| 7 #include "unicode/utypes.h" | 7 #include "unicode/utypes.h" | 
| 8 #include "unicode/unistr.h" | 8 #include "unicode/unistr.h" | 
| 9 #include "unicode/numfmt.h" | 9 #include "unicode/numfmt.h" | 
| 10 #include "unicode/dcfmtsym.h" | 10 #include "unicode/dcfmtsym.h" | 
| 11 #include "unicode/decimfmt.h" | 11 #include "unicode/decimfmt.h" | 
| 12 #include "unicode/locid.h" | 12 #include "unicode/locid.h" | 
| 13 #include "unicode/uclean.h" | 13 #include "unicode/uclean.h" | 
| 14 #include "util.h" | 14 #include "util.h" | 
| 15 #include <stdio.h> | 15 #include <stdio.h> | 
| 16 #include <stdlib.h> | 16 #include <stdlib.h> | 
| 17 #include <string.h> | 17 #include <string.h> | 
| 18 | 18 | 
| 19 #define LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0])) |  | 
| 20 |  | 
| 21 extern "C" void capi(); | 19 extern "C" void capi(); | 
| 22 void cppapi(); | 20 void cppapi(); | 
| 23 | 21 | 
| 24 static void | 22 static void | 
| 25 showCurrencyFormatting(UBool useICU26API); | 23 showCurrencyFormatting(UBool useICU26API); | 
| 26 | 24 | 
| 27 int main(int argc, char **argv) { | 25 int main(int argc, char **argv) { | 
| 28     printf("%s output is in UTF-8\n", argv[0]); | 26     printf("%s output is in UTF-8\n", argv[0]); | 
| 29 | 27 | 
| 30     printf("C++ API\n"); | 28     printf("C++ API\n"); | 
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 146         UChar symbol[16]; | 144         UChar symbol[16]; | 
| 147     } currencyMap[]={ | 145     } currencyMap[]={ | 
| 148         { "USD", 2, 0.0, { 0x24, 0 } }, | 146         { "USD", 2, 0.0, { 0x24, 0 } }, | 
| 149         { "GBP", 2, 0.0, { 0xa3, 0 } }, | 147         { "GBP", 2, 0.0, { 0xa3, 0 } }, | 
| 150         { "EUR", 2, 0.0, { 0x20ac, 0 } }, | 148         { "EUR", 2, 0.0, { 0x20ac, 0 } }, | 
| 151         { "JPY", 0, 0.0, { 0xa5, 0 } } | 149         { "JPY", 0, 0.0, { 0xa5, 0 } } | 
| 152     }; | 150     }; | 
| 153 | 151 | 
| 154     int32_t i; | 152     int32_t i; | 
| 155 | 153 | 
| 156     for(i=0; i<LENGTHOF(currencyMap); ++i) { | 154     for(i=0; i<UPRV_LENGTHOF(currencyMap); ++i) { | 
| 157         if(strcmp(currency, currencyMap[i].currency)==0) { | 155         if(strcmp(currency, currencyMap[i].currency)==0) { | 
| 158             break; | 156             break; | 
| 159         } | 157         } | 
| 160     } | 158     } | 
| 161     if(i==LENGTHOF(currencyMap)) { | 159     if(i==UPRV_LENGTHOF(currencyMap)) { | 
| 162         // a more specific error code would be useful in a real application | 160         // a more specific error code would be useful in a real application | 
| 163         errorCode=U_UNSUPPORTED_ERROR; | 161         errorCode=U_UNSUPPORTED_ERROR; | 
| 164         return; | 162         return; | 
| 165     } | 163     } | 
| 166 | 164 | 
| 167     // set the currency-related data into the caller's formatter | 165     // set the currency-related data into the caller's formatter | 
| 168 | 166 | 
| 169     nf.setMinimumFractionDigits(currencyMap[i].fractionDigits); | 167     nf.setMinimumFractionDigits(currencyMap[i].fractionDigits); | 
| 170     nf.setMaximumFractionDigits(currencyMap[i].fractionDigits); | 168     nf.setMaximumFractionDigits(currencyMap[i].fractionDigits); | 
| 171 | 169 | 
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 228     NumberFormat *nf; | 226     NumberFormat *nf; | 
| 229     int32_t i, j; | 227     int32_t i, j; | 
| 230 | 228 | 
| 231     UnicodeString output; | 229     UnicodeString output; | 
| 232 | 230 | 
| 233     UErrorCode errorCode; | 231     UErrorCode errorCode; | 
| 234 | 232 | 
| 235     // TODO: Using printf() here assumes that the runtime encoding is ASCII-frie
     ndly | 233     // TODO: Using printf() here assumes that the runtime encoding is ASCII-frie
     ndly | 
| 236     // and can therefore be mixed with UTF-8 | 234     // and can therefore be mixed with UTF-8 | 
| 237 | 235 | 
| 238     for(i=0; i<LENGTHOF(sampleLocaleIDs); ++i) { | 236     for(i=0; i<UPRV_LENGTHOF(sampleLocaleIDs); ++i) { | 
| 239         printf("show currency formatting (method for %s) in the locale \"%s\"\n"
     , | 237         printf("show currency formatting (method for %s) in the locale \"%s\"\n"
     , | 
| 240                 useICU26API ? "ICU 2.6" : "before ICU 2.6", | 238                 useICU26API ? "ICU 2.6" : "before ICU 2.6", | 
| 241                 sampleLocaleIDs[i]); | 239                 sampleLocaleIDs[i]); | 
| 242 | 240 | 
| 243         // get a currency formatter for this locale ID | 241         // get a currency formatter for this locale ID | 
| 244         errorCode=U_ZERO_ERROR; | 242         errorCode=U_ZERO_ERROR; | 
| 245         nf=NumberFormat::createCurrencyInstance(sampleLocaleIDs[i], errorCode); | 243         nf=NumberFormat::createCurrencyInstance(sampleLocaleIDs[i], errorCode); | 
| 246         if(U_FAILURE(errorCode)) { | 244         if(U_FAILURE(errorCode)) { | 
| 247             printf("NumberFormat::createCurrencyInstance(%s) failed - %s\n", | 245             printf("NumberFormat::createCurrencyInstance(%s) failed - %s\n", | 
| 248                     sampleLocaleIDs[i], u_errorName(errorCode)); | 246                     sampleLocaleIDs[i], u_errorName(errorCode)); | 
| 249             continue; | 247             continue; | 
| 250         } | 248         } | 
| 251 | 249 | 
| 252         for(j=0; j<LENGTHOF(sampleCurrencies); ++j) { | 250         for(j=0; j<UPRV_LENGTHOF(sampleCurrencies); ++j) { | 
| 253             printf("  - format currency \"%s\": ", sampleCurrencies[j]); | 251             printf("  - format currency \"%s\": ", sampleCurrencies[j]); | 
| 254 | 252 | 
| 255             // set the actual currency to be formatted | 253             // set the actual currency to be formatted | 
| 256             if(useICU26API) { | 254             if(useICU26API) { | 
| 257                 setNumberFormatCurrency_2_6(*nf, sampleCurrencies[j], errorCode)
     ; | 255                 setNumberFormatCurrency_2_6(*nf, sampleCurrencies[j], errorCode)
     ; | 
| 258             } else { | 256             } else { | 
| 259                 setNumberFormatCurrency_2_4(*nf, sampleCurrencies[j], errorCode)
     ; | 257                 setNumberFormatCurrency_2_4(*nf, sampleCurrencies[j], errorCode)
     ; | 
| 260             } | 258             } | 
| 261             if(U_FAILURE(errorCode)) { | 259             if(U_FAILURE(errorCode)) { | 
| 262                 printf("setNumberFormatCurrency(%s) failed - %s\n", | 260                 printf("setNumberFormatCurrency(%s) failed - %s\n", | 
| 263                         sampleCurrencies[j], u_errorName(errorCode)); | 261                         sampleCurrencies[j], u_errorName(errorCode)); | 
| 264                 continue; | 262                 continue; | 
| 265             } | 263             } | 
| 266 | 264 | 
| 267             // output=formatted currency value | 265             // output=formatted currency value | 
| 268             output.remove(); | 266             output.remove(); | 
| 269             nf->format(12345678.93, output); | 267             nf->format(12345678.93, output); | 
| 270             output+=(UChar)0x0a; // '\n' | 268             output+=(UChar)0x0a; // '\n' | 
| 271             uprintf(output); | 269             uprintf(output); | 
| 272         } | 270         } | 
| 273     } | 271     } | 
| 274 } | 272 } | 
| OLD | NEW | 
|---|