16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/******************************************************************** 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * COPYRIGHT: 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Copyright (c) 1997-2011, International Business Machines Corporation and 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * others. All Rights Reserved. 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Copyright (C) 2010 , Yahoo! Inc. 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ******************************************************************** 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * file name: umsg.h 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * encoding: US-ASCII 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * tab size: 8 (not used) 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * indentation:4 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Change history: 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 08/5/2001 Ram Added C wrappers for C++ API. 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ********************************************************************/ 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef UMSG_H 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define UMSG_H 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/utypes.h" 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if !UCONFIG_NO_FORMATTING 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/localpointer.h" 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/uloc.h" 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/parseerr.h" 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include <stdarg.h> 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \file 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \brief C API: MessageFormat 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <h2>MessageFormat C API </h2> 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p>MessageFormat prepares strings for display to users, 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * with optional arguments (variables/placeholders). 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The arguments can occur in any order, which is necessary for translation 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * into languages with different grammars. 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p>The opaque UMessageFormat type is a thin C wrapper around 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * a C++ MessageFormat. It is constructed from a <em>pattern</em> string 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * with arguments in {curly braces} which will be replaced by formatted values. 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p>Currently, the C API supports only numbered arguments. 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p>For details about the pattern syntax and behavior, 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * especially about the ASCII apostrophe vs. the 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * real apostrophe (single quote) character \htmlonly’\endhtmlonly (U+2019), 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * see the C++ MessageFormat class documentation. 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p>Here are some examples of C API usage: 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Example 1: 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <pre> 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \code 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UChar *result, *tzID, *str; 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UChar pattern[100]; 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * int32_t resultLengthOut, resultlength; 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UCalendar *cal; 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UDate d1; 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UDateFormat *def1; 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UErrorCode status = U_ZERO_ERROR; 636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * str=(UChar*)malloc(sizeof(UChar) * (strlen("disturbance in force") +1)); 656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * u_uastrcpy(str, "disturbance in force"); 666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * tzID=(UChar*)malloc(sizeof(UChar) * 4); 676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * u_uastrcpy(tzID, "PST"); 686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * cal=ucal_open(tzID, u_strlen(tzID), "en_US", UCAL_TRADITIONAL, &status); 696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * ucal_setDateTime(cal, 1999, UCAL_MARCH, 18, 0, 0, 0, &status); 706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * d1=ucal_getMillis(cal, &status); 716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * u_uastrcpy(pattern, "On {0, date, long}, there was a {1} on planet {2,number,integer}"); 726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * resultlength=0; 736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * resultLengthOut=u_formatMessage( "en_US", pattern, u_strlen(pattern), NULL, resultlength, &status, d1, str, 7); 746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * if(status==U_BUFFER_OVERFLOW_ERROR){ 756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * status=U_ZERO_ERROR; 766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * resultlength=resultLengthOut+1; 776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * result=(UChar*)realloc(result, sizeof(UChar) * resultlength); 786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * u_formatMessage( "en_US", pattern, u_strlen(pattern), result, resultlength, &status, d1, str, 7); 796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * } 806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * printf("%s\n", austrdup(result) );//austrdup( a function used to convert UChar* to char*) 816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * //output>: "On March 18, 1999, there was a disturbance in force on planet 7 826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \endcode 836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * </pre> 846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Typically, the message format will come from resources, and the 856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * arguments will be dynamically set at runtime. 866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <P> 876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Example 2: 886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <pre> 896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \code 906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UChar* str; 916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UErrorCode status = U_ZERO_ERROR; 926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UChar *result; 936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UChar pattern[100]; 946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * int32_t resultlength, resultLengthOut, i; 956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * double testArgs= { 100.0, 1.0, 0.0}; 966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * str=(UChar*)malloc(sizeof(UChar) * 10); 986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * u_uastrcpy(str, "MyDisk"); 996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * u_uastrcpy(pattern, "The disk {1} contains {0,choice,0#no files|1#one file|1<{0,number,integer} files}"); 1006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * for(i=0; i<3; i++){ 1016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * resultlength=0; 1026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * resultLengthOut=u_formatMessage( "en_US", pattern, u_strlen(pattern), NULL, resultlength, &status, testArgs[i], str); 1036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * if(status==U_BUFFER_OVERFLOW_ERROR){ 1046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * status=U_ZERO_ERROR; 1056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * resultlength=resultLengthOut+1; 1066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * result=(UChar*)malloc(sizeof(UChar) * resultlength); 1076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * u_formatMessage( "en_US", pattern, u_strlen(pattern), result, resultlength, &status, testArgs[i], str); 1086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * } 1096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * printf("%s\n", austrdup(result) ); //austrdup( a function used to convert UChar* to char*) 1106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * free(result); 1116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * } 1126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * // output, with different testArgs: 1136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * // output: The disk "MyDisk" contains 100 files. 1146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * // output: The disk "MyDisk" contains one file. 1156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * // output: The disk "MyDisk" contains no files. 1166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \endcode 1176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * </pre> 1186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 1196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 1206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Example 3: 1216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <pre> 1226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \code 1236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UChar* str; 1246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UChar* str1; 1256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UErrorCode status = U_ZERO_ERROR; 1266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UChar *result; 1276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UChar pattern[100]; 1286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UChar expected[100]; 1296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * int32_t resultlength,resultLengthOut; 1306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * str=(UChar*)malloc(sizeof(UChar) * 25); 1326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * u_uastrcpy(str, "Kirti"); 1336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * str1=(UChar*)malloc(sizeof(UChar) * 25); 1346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * u_uastrcpy(str1, "female"); 1356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * log_verbose("Testing message format with Select test #1\n:"); 1366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * u_uastrcpy(pattern, "{0} est {1, select, female {all\\u00E9e} other {all\\u00E9}} \\u00E0 Paris."); 1376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * u_uastrcpy(expected, "Kirti est all\\u00E9e \\u00E0 Paris."); 1386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * resultlength=0; 1396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * resultLengthOut=u_formatMessage( "fr", pattern, u_strlen(pattern), NULL, resultlength, &status, str , str1); 1406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * if(status==U_BUFFER_OVERFLOW_ERROR) 1416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * { 1426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * status=U_ZERO_ERROR; 1436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * resultlength=resultLengthOut+1; 1446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * result=(UChar*)malloc(sizeof(UChar) * resultlength); 1456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * u_formatMessage( "fr", pattern, u_strlen(pattern), result, resultlength, &status, str , str1); 1466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * if(u_strcmp(result, expected)==0) 1476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * log_verbose("PASS: MessagFormat successful on Select test#1\n"); 1486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * else{ 1496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * log_err("FAIL: Error in MessageFormat on Select test#1\n GOT %s EXPECTED %s\n", austrdup(result), 1506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * austrdup(expected) ); 1516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * } 1526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * free(result); 1536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * } 1546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \endcode 1556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * </pre> 1566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 1596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Format a message for a locale. 1606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This function may perform re-ordering of the arguments depending on the 1616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * locale. For all numeric arguments, double is assumed unless the type is 1626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * explicitly integer. All choice format arguments must be of type double. 1636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param locale The locale for which the message will be formatted 1646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param pattern The pattern specifying the message's format 1656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param patternLength The length of pattern 1666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param result A pointer to a buffer to receive the formatted message. 1676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param resultLength The maximum size of result. 1686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status A pointer to an UErrorCode to receive any errors 1696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param ... A variable-length argument list containing the arguments specified 1706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * in pattern. 1716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return The total buffer size needed; if greater than resultLength, the 1726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * output was truncated. 1736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see u_parseMessage 1746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 1756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE int32_t U_EXPORT2 1776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgu_formatMessage(const char *locale, 1786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar *pattern, 1796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t patternLength, 1806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar *result, 1816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t resultLength, 1826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode *status, 1836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ...); 1846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 1866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Format a message for a locale. 1876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This function may perform re-ordering of the arguments depending on the 1886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * locale. For all numeric arguments, double is assumed unless the type is 1896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * explicitly integer. All choice format arguments must be of type double. 1906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param locale The locale for which the message will be formatted 1916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param pattern The pattern specifying the message's format 1926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param patternLength The length of pattern 1936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param result A pointer to a buffer to receive the formatted message. 1946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param resultLength The maximum size of result. 1956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param ap A variable-length argument list containing the arguments specified 1966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status A pointer to an UErrorCode to receive any errors 1976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * in pattern. 1986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return The total buffer size needed; if greater than resultLength, the 1996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * output was truncated. 2006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see u_parseMessage 2016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 2026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE int32_t U_EXPORT2 2046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgu_vformatMessage( const char *locale, 2056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar *pattern, 2066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t patternLength, 2076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar *result, 2086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t resultLength, 2096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org va_list ap, 2106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode *status); 2116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 2136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Parse a message. 2146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * For numeric arguments, this function will always use doubles. Integer types 2156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * should not be passed. 2166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This function is not able to parse all output from {@link #u_formatMessage }. 2176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param locale The locale for which the message is formatted 2186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param pattern The pattern specifying the message's format 2196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param patternLength The length of pattern 2206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param source The text to parse. 2216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param sourceLength The length of source, or -1 if null-terminated. 2226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status A pointer to an UErrorCode to receive any errors 2236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param ... A variable-length argument list containing the arguments 2246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * specified in pattern. 2256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see u_formatMessage 2266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 2276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE void U_EXPORT2 2296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgu_parseMessage( const char *locale, 2306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar *pattern, 2316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t patternLength, 2326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar *source, 2336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t sourceLength, 2346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode *status, 2356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ...); 2366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 2386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Parse a message. 2396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * For numeric arguments, this function will always use doubles. Integer types 2406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * should not be passed. 2416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This function is not able to parse all output from {@link #u_formatMessage }. 2426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param locale The locale for which the message is formatted 2436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param pattern The pattern specifying the message's format 2446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param patternLength The length of pattern 2456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param source The text to parse. 2466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param sourceLength The length of source, or -1 if null-terminated. 2476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param ap A variable-length argument list containing the arguments 2486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status A pointer to an UErrorCode to receive any errors 2496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * specified in pattern. 2506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see u_formatMessage 2516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 2526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE void U_EXPORT2 2546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgu_vparseMessage(const char *locale, 2556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar *pattern, 2566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t patternLength, 2576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar *source, 2586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t sourceLength, 2596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org va_list ap, 2606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode *status); 2616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 2636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Format a message for a locale. 2646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This function may perform re-ordering of the arguments depending on the 2656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * locale. For all numeric arguments, double is assumed unless the type is 2666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * explicitly integer. All choice format arguments must be of type double. 2676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param locale The locale for which the message will be formatted 2686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param pattern The pattern specifying the message's format 2696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param patternLength The length of pattern 2706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param result A pointer to a buffer to receive the formatted message. 2716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param resultLength The maximum size of result. 2726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status A pointer to an UErrorCode to receive any errors 2736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param ... A variable-length argument list containing the arguments specified 2746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * in pattern. 2756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param parseError A pointer to UParseError to receive information about errors 2766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * occurred during parsing. 2776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return The total buffer size needed; if greater than resultLength, the 2786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * output was truncated. 2796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see u_parseMessage 2806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 2816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE int32_t U_EXPORT2 2836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgu_formatMessageWithError( const char *locale, 2846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar *pattern, 2856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t patternLength, 2866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar *result, 2876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t resultLength, 2886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UParseError *parseError, 2896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode *status, 2906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ...); 2916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 2936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Format a message for a locale. 2946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This function may perform re-ordering of the arguments depending on the 2956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * locale. For all numeric arguments, double is assumed unless the type is 2966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * explicitly integer. All choice format arguments must be of type double. 2976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param locale The locale for which the message will be formatted 2986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param pattern The pattern specifying the message's format 2996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param patternLength The length of pattern 3006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param result A pointer to a buffer to receive the formatted message. 3016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param resultLength The maximum size of result. 3026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param parseError A pointer to UParseError to receive information about errors 3036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * occurred during parsing. 3046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param ap A variable-length argument list containing the arguments specified 3056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status A pointer to an UErrorCode to receive any errors 3066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * in pattern. 3076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return The total buffer size needed; if greater than resultLength, the 3086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * output was truncated. 3096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 3106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 3116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE int32_t U_EXPORT2 3126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgu_vformatMessageWithError( const char *locale, 3136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar *pattern, 3146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t patternLength, 3156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar *result, 3166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t resultLength, 3176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UParseError* parseError, 3186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org va_list ap, 3196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode *status); 3206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 3226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Parse a message. 3236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * For numeric arguments, this function will always use doubles. Integer types 3246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * should not be passed. 3256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This function is not able to parse all output from {@link #u_formatMessage }. 3266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param locale The locale for which the message is formatted 3276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param pattern The pattern specifying the message's format 3286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param patternLength The length of pattern 3296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param source The text to parse. 3306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param sourceLength The length of source, or -1 if null-terminated. 3316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param parseError A pointer to UParseError to receive information about errors 3326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * occurred during parsing. 3336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status A pointer to an UErrorCode to receive any errors 3346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param ... A variable-length argument list containing the arguments 3356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * specified in pattern. 3366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see u_formatMessage 3376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 3386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 3396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE void U_EXPORT2 3406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgu_parseMessageWithError(const char *locale, 3416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar *pattern, 3426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t patternLength, 3436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar *source, 3446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t sourceLength, 3456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UParseError *parseError, 3466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode *status, 3476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ...); 3486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 3506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Parse a message. 3516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * For numeric arguments, this function will always use doubles. Integer types 3526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * should not be passed. 3536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This function is not able to parse all output from {@link #u_formatMessage }. 3546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param locale The locale for which the message is formatted 3556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param pattern The pattern specifying the message's format 3566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param patternLength The length of pattern 3576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param source The text to parse. 3586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param sourceLength The length of source, or -1 if null-terminated. 3596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param ap A variable-length argument list containing the arguments 3606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param parseError A pointer to UParseError to receive information about errors 3616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * occurred during parsing. 3626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status A pointer to an UErrorCode to receive any errors 3636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * specified in pattern. 3646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see u_formatMessage 3656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 3666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 3676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE void U_EXPORT2 3686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgu_vparseMessageWithError(const char *locale, 3696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar *pattern, 3706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t patternLength, 3716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar *source, 3726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t sourceLength, 3736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org va_list ap, 3746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UParseError *parseError, 3756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* status); 3766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/*----------------------- New experimental API --------------------------- */ 3786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 3796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The message format object 3806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 3816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 3826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgtypedef void* UMessageFormat; 3836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 3866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Open a message formatter with given pattern and for the given locale. 3876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param pattern A pattern specifying the format to use. 3886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param patternLength Length of the pattern to use 3896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param locale The locale for which the messages are formatted. 3906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param parseError A pointer to UParseError struct to receive any errors 3916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * occured during parsing. Can be NULL. 3926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status A pointer to an UErrorCode to receive any errors. 3936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return A pointer to a UMessageFormat to use for formatting 3946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * messages, or 0 if an error occurred. 3956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 3966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 3976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE UMessageFormat* U_EXPORT2 3986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgumsg_open( const UChar *pattern, 3996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t patternLength, 4006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char *locale, 4016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UParseError *parseError, 4026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode *status); 4036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 4056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Close a UMessageFormat. 4066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Once closed, a UMessageFormat may no longer be used. 4076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param format The formatter to close. 4086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 4096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 4106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE void U_EXPORT2 4116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgumsg_close(UMessageFormat* format); 4126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if U_SHOW_CPLUSPLUS_API 4146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_NAMESPACE_BEGIN 4166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 4186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \class LocalUMessageFormatPointer 4196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * "Smart pointer" class, closes a UMessageFormat via umsg_close(). 4206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * For most methods see the LocalPointerBase base class. 4216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 4226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see LocalPointerBase 4236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see LocalPointer 4246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 4.4 4256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 4266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_DEFINE_LOCAL_OPEN_POINTER(LocalUMessageFormatPointer, UMessageFormat, umsg_close); 4276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_NAMESPACE_END 4296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 4316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 4336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Open a copy of a UMessageFormat. 4346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This function performs a deep copy. 4356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param fmt The formatter to copy 4366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status A pointer to an UErrorCode to receive any errors. 4376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return A pointer to a UDateFormat identical to fmt. 4386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 4396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 4406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE UMessageFormat U_EXPORT2 4416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgumsg_clone(const UMessageFormat *fmt, 4426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode *status); 4436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 4456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Sets the locale. This locale is used for fetching default number or date 4466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * format information. 4476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param fmt The formatter to set 4486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param locale The locale the formatter should use. 4496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 4506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 4516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE void U_EXPORT2 4526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgumsg_setLocale(UMessageFormat *fmt, 4536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char* locale); 4546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 4566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Gets the locale. This locale is used for fetching default number or date 4576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * format information. 4586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param fmt The formatter to querry 4596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return the locale. 4606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 4616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 4626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE const char* U_EXPORT2 4636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgumsg_getLocale(const UMessageFormat *fmt); 4646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 4666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Sets the pattern. 4676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param fmt The formatter to use 4686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param pattern The pattern to be applied. 4696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param patternLength Length of the pattern to use 4706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param parseError Struct to receive information on position 4716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * of error if an error is encountered.Can be NULL. 4726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status Output param set to success/failure code on 4736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * exit. If the pattern is invalid, this will be 4746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * set to a failure result. 4756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 4766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 4776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE void U_EXPORT2 4786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgumsg_applyPattern( UMessageFormat *fmt, 4796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar* pattern, 4806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t patternLength, 4816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UParseError* parseError, 4826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* status); 4836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 4856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Gets the pattern. 4866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param fmt The formatter to use 4876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param result A pointer to a buffer to receive the pattern. 4886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param resultLength The maximum size of result. 4896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status Output param set to success/failure code on 4906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * exit. If the pattern is invalid, this will be 4916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * set to a failure result. 4926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return the pattern of the format 4936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 4946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 4956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE int32_t U_EXPORT2 4966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgumsg_toPattern(const UMessageFormat *fmt, 4976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar* result, 4986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t resultLength, 4996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* status); 5006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 5016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 5026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Format a message for a locale. 5036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This function may perform re-ordering of the arguments depending on the 5046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * locale. For all numeric arguments, double is assumed unless the type is 5056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * explicitly integer. All choice format arguments must be of type double. 5066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param fmt The formatter to use 5076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param result A pointer to a buffer to receive the formatted message. 5086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param resultLength The maximum size of result. 5096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status A pointer to an UErrorCode to receive any errors 5106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param ... A variable-length argument list containing the arguments 5116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * specified in pattern. 5126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return The total buffer size needed; if greater than resultLength, 5136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the output was truncated. 5146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 5156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 5166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE int32_t U_EXPORT2 5176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgumsg_format( const UMessageFormat *fmt, 5186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar *result, 5196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t resultLength, 5206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode *status, 5216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ...); 5226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 5236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 5246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Format a message for a locale. 5256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This function may perform re-ordering of the arguments depending on the 5266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * locale. For all numeric arguments, double is assumed unless the type is 5276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * explicitly integer. All choice format arguments must be of type double. 5286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param fmt The formatter to use 5296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param result A pointer to a buffer to receive the formatted message. 5306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param resultLength The maximum size of result. 5316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param ap A variable-length argument list containing the arguments 5326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status A pointer to an UErrorCode to receive any errors 5336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * specified in pattern. 5346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return The total buffer size needed; if greater than resultLength, 5356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the output was truncated. 5366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 5376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 5386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE int32_t U_EXPORT2 5396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgumsg_vformat( const UMessageFormat *fmt, 5406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar *result, 5416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t resultLength, 5426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org va_list ap, 5436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode *status); 5446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 5456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 5466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Parse a message. 5476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * For numeric arguments, this function will always use doubles. Integer types 5486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * should not be passed. 5496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This function is not able to parse all output from {@link #umsg_format }. 5506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param fmt The formatter to use 5516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param source The text to parse. 5526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param sourceLength The length of source, or -1 if null-terminated. 5536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param count Output param to receive number of elements returned. 5546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status A pointer to an UErrorCode to receive any errors 5556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param ... A variable-length argument list containing the arguments 5566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * specified in pattern. 5576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 5586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 5596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE void U_EXPORT2 5606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgumsg_parse( const UMessageFormat *fmt, 5616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar *source, 5626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t sourceLength, 5636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t *count, 5646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode *status, 5656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ...); 5666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 5676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 5686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Parse a message. 5696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * For numeric arguments, this function will always use doubles. Integer types 5706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * should not be passed. 5716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This function is not able to parse all output from {@link #umsg_format }. 5726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param fmt The formatter to use 5736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param source The text to parse. 5746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param sourceLength The length of source, or -1 if null-terminated. 5756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param count Output param to receive number of elements returned. 5766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param ap A variable-length argument list containing the arguments 5776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status A pointer to an UErrorCode to receive any errors 5786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * specified in pattern. 5796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see u_formatMessage 5806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 5816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 5826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE void U_EXPORT2 5836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgumsg_vparse(const UMessageFormat *fmt, 5846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar *source, 5856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t sourceLength, 5866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t *count, 5876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org va_list ap, 5886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode *status); 5896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 5906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 5916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 5926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Convert an 'apostrophe-friendly' pattern into a standard 5936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * pattern. Standard patterns treat all apostrophes as 5946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * quotes, which is problematic in some languages, e.g. 5956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * French, where apostrophe is commonly used. This utility 5966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * assumes that only an unpaired apostrophe immediately before 5976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * a brace is a true quote. Other unpaired apostrophes are paired, 5986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * and the resulting standard pattern string is returned. 5996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 6006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p><b>Note</b> it is not guaranteed that the returned pattern 6016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * is indeed a valid pattern. The only effect is to convert 6026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * between patterns having different quoting semantics. 6036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 6046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param pattern the 'apostrophe-friendly' patttern to convert 6056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param patternLength the length of pattern, or -1 if unknown and pattern is null-terminated 6066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param dest the buffer for the result, or NULL if preflight only 6076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param destCapacity the length of the buffer, or 0 if preflighting 6086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param ec the error code 6096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return the length of the resulting text, not including trailing null 6106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * if buffer has room for the trailing null, it is provided, otherwise 6116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * not 6126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 3.4 6136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 6146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE int32_t U_EXPORT2 6156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgumsg_autoQuoteApostrophe(const UChar* pattern, 6166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t patternLength, 6176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar* dest, 6186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t destCapacity, 6196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* ec); 6206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 6216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif /* #if !UCONFIG_NO_FORMATTING */ 6226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 6236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 624