1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* 2b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru****************************************************************************** 3b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 4fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius* Copyright (C) 1998-2014, International Business Machines 5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Corporation and others. All Rights Reserved. 6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru****************************************************************************** 8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* File ustdio.h 10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Modification History: 12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Date Name Description 14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 10/16/98 stephen Creation. 15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 11/06/98 stephen Modified per code review. 16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 03/12/99 stephen Modified for new C API. 17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 07/19/99 stephen Minor doc update. 18b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 02/01/01 george Added sprintf & sscanf with all of its variants 19b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru****************************************************************************** 20b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 22b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#ifndef USTDIO_H 23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define USTDIO_H 24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include <stdio.h> 26b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include <stdarg.h> 27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 28b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/utypes.h" 29b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/ucnv.h" 30b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/utrans.h" 3150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/localpointer.h" 328393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#include "unicode/unum.h" 33b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 34b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* 35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TODO 36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru The following is a small list as to what is currently wrong/suggestions for 37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ustdio. 38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 39b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Make sure that * in the scanf format specification works for all formats. 40b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Each UFILE takes up at least 2KB. 41b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Look into adding setvbuf() for configurable buffers. 42b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This library does buffering. The OS should do this for us already. Check on 43b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru this, and remove it from this library, if this is the case. Double buffering 44b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru wastes a lot of time and space. 45b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test stdin and stdout with the u_f* functions 46b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Testing should be done for reading and writing multi-byte encodings, 47b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru and make sure that a character that is contained across buffer boundries 48b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru works even for incomplete characters. 49b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Make sure that the last character is flushed when the file/string is closed. 50b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * snprintf should follow the C99 standard for the return value, which is 51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return the number of characters (excluding the trailing '\0') 52b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru which would have been written to the destination string regardless 53b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru of available space. This is like pre-flighting. 54b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Everything that uses %s should do what operator>> does for UnicodeString. 55b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru It should convert one byte at a time, and once a character is 56b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru converted then check to see if it's whitespace or in the scanset. 57b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru If it's whitespace or in the scanset, put all the bytes back (do nothing 58b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for sprintf/sscanf). 59b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If bad string data is encountered, make sure that the function fails 60b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru without memory leaks and the unconvertable characters are valid 61b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru substitution or are escaped characters. 62b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * u_fungetc() can't unget a character when it's at the beginning of the 63b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru internal conversion buffer. For example, read the buffer size # of 64b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru characters, and then ungetc to get the previous character that was 65b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru at the end of the last buffer. 66b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * u_fflush() and u_fclose should return an int32_t like C99 functions. 67b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 0 is returned if the operation was successful and EOF otherwise. 68b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * u_fsettransliterator does not support U_READ side of transliteration. 69b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The format specifier should limit the size of a format or honor it in 70b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru order to prevent buffer overruns. (e.g. %256.256d). 71b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * u_fread and u_fwrite don't exist. They're needed for reading and writing 72b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru data structures without any conversion. 73b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * u_file_read and u_file_write are used for writing strings. u_fgets and 74b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru u_fputs or u_fread and u_fwrite should be used to do this. 75b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The width parameter for all scanf formats, including scanset, needs 76b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru better testing. This prevents buffer overflows. 77b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Figure out what is suppose to happen when a codepage is changed midstream. 78b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Maybe a flush or a rewind are good enough. 79b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Make sure that a UFile opened with "rw" can be used after using 80b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru u_fflush with a u_frewind. 81b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * scanf(%i) should detect what type of number to use. 82b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Add more testing of the alternate format, %# 83b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Look at newline handling of fputs/puts 84b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Think more about codeunit/codepoint error handling/support in %S,%s,%C,%c,%[] 85b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Complete the file documentation with proper doxygen formatting. 86b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru See http://oss.software.ibm.com/pipermail/icu/2003-July/005647.html 87b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 88b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 89b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 90b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \file 91b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \brief C API: Unicode stdio-like API 92b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 93b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <h2>Unicode stdio-like C API</h2> 94b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 95b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <p>This API provides an stdio-like API wrapper around ICU's other 96b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * formatting and parsing APIs. It is meant to ease the transition of adding 97b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Unicode support to a preexisting applications using stdio. The following 98b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * is a small list of noticable differences between stdio and ICU I/O's 99b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * ustdio implementation.</p> 100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <ul> 102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <li>Locale specific formatting and parsing is only done with file IO.</li> 103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <li>u_fstropen can be used to simulate file IO with strings. 104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This is similar to the iostream API, and it allows locale specific 105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * formatting and parsing to be used.</li> 106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <li>This API provides uniform formatting and parsing behavior between 107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * platforms (unlike the standard stdio implementations found on various 108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * platforms).</li> 109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <li>This API is better suited for text data handling than binary data 110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * handling when compared to the typical stdio implementation.</li> 111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <li>You can specify a Transliterator while using the file IO.</li> 112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <li>You can specify a file's codepage separately from the default 113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * system codepage.</li> 114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * </ul> 115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <h2>Formatting and Parsing Specification</h2> 117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * General printf format:<br> 119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * %[format modifier][width][.precision][type modifier][format] 120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * General scanf format:<br> 122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * %[*][format modifier][width][type modifier][format] 123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<table cellspacing="3"> 125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>format</td><td>default<br>printf<br>type</td><td>default<br>scanf<br>type</td><td>description</td></tr> 126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%E</td><td>double</td><td>float</td><td>Scientific with an uppercase exponent</td></tr> 127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%e</td><td>double</td><td>float</td><td>Scientific with a lowercase exponent</td></tr> 128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%G</td><td>double</td><td>float</td><td>Use %E or %f for best format</td></tr> 129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%g</td><td>double</td><td>float</td><td>Use %e or %f for best format</td></tr> 130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%f</td><td>double</td><td>float</td><td>Simple floating point without the exponent</td></tr> 131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%X</td><td>int32_t</td><td>int32_t</td><td>ustdio special uppercase hex radix formatting</td></tr> 132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%x</td><td>int32_t</td><td>int32_t</td><td>ustdio special lowercase hex radix formatting</td></tr> 133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%d</td><td>int32_t</td><td>int32_t</td><td>Decimal format</td></tr> 134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%i</td><td>int32_t</td><td>int32_t</td><td>Same as %d</td></tr> 135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%n</td><td>int32_t</td><td>int32_t</td><td>count (write the number of UTF-16 codeunits read/written)</td></tr> 136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%o</td><td>int32_t</td><td>int32_t</td><td>ustdio special octal radix formatting</td></tr> 137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%u</td><td>uint32_t</td><td>uint32_t</td><td>Decimal format</td></tr> 138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%p</td><td>void *</td><td>void *</td><td>Prints the pointer value</td></tr> 139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%s</td><td>char *</td><td>char *</td><td>Use default converter or specified converter from fopen</td></tr> 140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%c</td><td>char</td><td>char</td><td>Use default converter or specified converter from fopen<br> 141b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruWhen width is specified for scanf, this acts like a non-NULL-terminated char * string.<br> 142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruBy default, only one char is written.</td></tr> 143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%S</td><td>UChar *</td><td>UChar *</td><td>Null terminated UTF-16 string</td></tr> 144b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%C</td><td>UChar</td><td>UChar</td><td>16-bit Unicode code unit<br> 145b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruWhen width is specified for scanf, this acts like a non-NULL-terminated UChar * string<br> 146b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruBy default, only one codepoint is written.</td></tr> 147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%[]</td><td> </td><td>UChar *</td><td>Null terminated UTF-16 string which contains the filtered set of characters specified by the UnicodeSet</td></tr> 148b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%%</td><td> </td><td> </td><td>Show a percent sign</td></tr> 149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru</table> 150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruFormat modifiers 152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<table> 153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>modifier</td><td>formats</td><td>type</td><td>comments</td></tr> 154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%h</td><td>%d, %i, %o, %x</td><td>int16_t</td><td>short format</td></tr> 155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%h</td><td>%u</td><td>uint16_t</td><td>short format</td></tr> 156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%h</td><td>c</td><td>char</td><td><b>(Unimplemented)</b> Use invariant converter</td></tr> 157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%h</td><td>s</td><td>char *</td><td><b>(Unimplemented)</b> Use invariant converter</td></tr> 158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%h</td><td>C</td><td>char</td><td><b>(Unimplemented)</b> 8-bit Unicode code unit</td></tr> 159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%h</td><td>S</td><td>char *</td><td><b>(Unimplemented)</b> Null terminated UTF-8 string</td></tr> 160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%l</td><td>%d, %i, %o, %x</td><td>int32_t</td><td>long format (no effect)</td></tr> 161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%l</td><td>%u</td><td>uint32_t</td><td>long format (no effect)</td></tr> 162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%l</td><td>c</td><td>N/A</td><td><b>(Unimplemented)</b> Reserved for future implementation</td></tr> 163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%l</td><td>s</td><td>N/A</td><td><b>(Unimplemented)</b> Reserved for future implementation</td></tr> 164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%l</td><td>C</td><td>UChar32</td><td><b>(Unimplemented)</b> 32-bit Unicode code unit</td></tr> 165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%l</td><td>S</td><td>UChar32 *</td><td><b>(Unimplemented)</b> Null terminated UTF-32 string</td></tr> 166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%ll</td><td>%d, %i, %o, %x</td><td>int64_t</td><td>long long format</td></tr> 167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%ll</td><td>%u</td><td>uint64_t</td><td><b>(Unimplemented)</b> long long format</td></tr> 168b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%-</td><td><i>all</i></td><td>N/A</td><td>Left justify</td></tr> 169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%+</td><td>%d, %i, %o, %x, %e, %f, %g, %E, %G</td><td>N/A</td><td>Always show the plus or minus sign. Needs data for plus sign.</td></tr> 170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>% </td><td>%d, %i, %o, %x, %e, %f, %g, %E, %G</td><td>N/A</td><td>Instead of a "+" output a blank character for positive numbers.</td></tr> 171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%#</td><td>%d, %i, %o, %x, %e, %f, %g, %E, %G</td><td>N/A</td><td>Precede octal value with 0, hex with 0x and show the 172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru decimal point for floats.</td></tr> 173b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%<i>n</i></td><td><i>all</i></td><td>N/A</td><td>Width of input/output. num is an actual number from 0 to 174b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru some large number.</td></tr> 175b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<tr><td>%.<i>n</i></td><td>%e, %f, %g, %E, %F, %G</td><td>N/A</td><td>Significant digits precision. num is an actual number from 176b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 0 to some large number.<br>If * is used in printf, then the precision is passed in as an argument before the number to be formatted.</td></tr> 177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru</table> 178b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 179b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruprintf modifier 180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%* int32_t Next argument after this one specifies the width 181b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 182b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruscanf modifier 183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%* N/A This field is scanned, but not stored 184b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 185b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<p>If you are using this C API instead of the ustream.h API for C++, 186b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruyou can use one of the following u_fprintf examples to display a UnicodeString.</p> 187b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 188b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru<pre><code> 189b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UFILE *out = u_finit(stdout, NULL, NULL); 190b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString string1("string 1"); 191b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString string2("string 2"); 192b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru u_fprintf(out, "%S\n", string1.getTerminatedBuffer()); 193b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru u_fprintf(out, "%.*S\n", string2.length(), string2.getBuffer()); 194b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru u_fclose(out); 195b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru</code></pre> 196b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 197b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 198b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 199b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 200b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 201b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * When an end of file is encountered, this value can be returned. 202b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see u_fgetc 203b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable 3.0 204b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 205b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define U_EOF 0xFFFF 206b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 207b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** Forward declaration of a Unicode-aware file @stable 3.0 */ 208b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querutypedef struct UFILE UFILE; 209b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 210b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 211b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Enum for which direction of stream a transliterator applies to. 212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see u_fsettransliterator 213b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 214b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 215b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querutypedef enum { 216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru U_READ = 1, 217b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru U_WRITE = 2, 218b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru U_READWRITE =3 /* == (U_READ | U_WRITE) */ 219b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} UFileDirection; 220b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 221b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 222b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Open a UFILE. 223b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * A UFILE is a wrapper around a FILE* that is locale and codepage aware. 224b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * That is, data written to a UFILE will be formatted using the conventions 225b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * specified by that UFILE's Locale; this data will be in the character set 226b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * specified by that UFILE's codepage. 227b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param filename The name of the file to open. 228b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param perm The read/write permission for the UFILE; one of "r", "w", "rw" 229b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param locale The locale whose conventions will be used to format 230b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * and parse output. If this parameter is NULL, the default locale will 231b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * be used. 232b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param codepage The codepage in which data will be written to and 233b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * read from the file. If this paramter is NULL the system default codepage 234b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * will be used. 235b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A new UFILE, or NULL if an error occurred. 236b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 237b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 23850294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE UFILE* U_EXPORT2 239b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_fopen(const char *filename, 240b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *perm, 241b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *locale, 242b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *codepage); 243b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 244b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 24550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Open a UFILE on top of an existing FILE* stream. The FILE* stream 24650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * ownership remains with the caller. To have the UFILE take over 24750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * ownership and responsibility for the FILE* stream, use the 24850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * function u_fadopt. 24950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param f The FILE* to which this UFILE will attach and use. 250b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param locale The locale whose conventions will be used to format 251b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * and parse output. If this parameter is NULL, the default locale will 252b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * be used. 253b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param codepage The codepage in which data will be written to and 254b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * read from the file. If this paramter is NULL, data will be written and 255b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * read using the default codepage for <TT>locale</TT>, unless <TT>locale</TT> 256b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * is NULL, in which case the system default codepage will be used. 257b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A new UFILE, or NULL if an error occurred. 258b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 259b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 26050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE UFILE* U_EXPORT2 261b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_finit(FILE *f, 262b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *locale, 263b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *codepage); 264b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 265b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 26650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Open a UFILE on top of an existing FILE* stream. The FILE* stream 26750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * ownership is transferred to the new UFILE. It will be closed when the 26850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * UFILE is closed. 26950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param f The FILE* which this UFILE will take ownership of. 27050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param locale The locale whose conventions will be used to format 27150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * and parse output. If this parameter is NULL, the default locale will 27250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * be used. 27350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param codepage The codepage in which data will be written to and 27450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * read from the file. If this paramter is NULL, data will be written and 27550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * read using the default codepage for <TT>locale</TT>, unless <TT>locale</TT> 27650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * is NULL, in which case the system default codepage will be used. 27750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @return A new UFILE, or NULL if an error occurred. If an error occurs 27850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * the ownership of the FILE* stream remains with the caller. 27927f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable ICU 4.4 28050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 28127f654740f2a26ad62a5c155af9199af9e69b889clairehoU_STABLE UFILE* U_EXPORT2 28250294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehou_fadopt(FILE *f, 28350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho const char *locale, 28450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho const char *codepage); 28550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 28650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/** 287b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Create a UFILE that can be used for localized formatting or parsing. 288b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The u_sprintf and u_sscanf functions do not read or write numbers for a 289b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * specific locale. The ustdio.h file functions can be used on this UFILE. 290b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The string is usable once u_fclose or u_fflush has been called on the 291b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * returned UFILE. 292b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param stringBuf The string used for reading or writing. 293b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param capacity The number of code units available for use in stringBuf 294b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param locale The locale whose conventions will be used to format 295b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * and parse output. If this parameter is NULL, the default locale will 296b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * be used. 297b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A new UFILE, or NULL if an error occurred. 298b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 299b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 30050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE UFILE* U_EXPORT2 301b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_fstropen(UChar *stringBuf, 302b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t capacity, 303b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *locale); 304b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 305b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 30627f654740f2a26ad62a5c155af9199af9e69b889claireho * Close a UFILE. Implies u_fflush first. 307b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param file The UFILE to close. 308b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 30927f654740f2a26ad62a5c155af9199af9e69b889claireho * @see u_fflush 310b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 31150294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE void U_EXPORT2 312b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_fclose(UFILE *file); 313b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 31450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#if U_SHOW_CPLUSPLUS_API 31550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 31650294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_NAMESPACE_BEGIN 31750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 31850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/** 31950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * \class LocalUFILEPointer 32050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * "Smart pointer" class, closes a UFILE via u_fclose(). 32150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * For most methods see the LocalPointerBase base class. 32250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * 32350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @see LocalPointerBase 32450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @see LocalPointer 32527f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable ICU 4.4 32650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 32750294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_DEFINE_LOCAL_OPEN_POINTER(LocalUFILEPointer, UFILE, u_fclose); 32850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 32950294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_NAMESPACE_END 33050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 33150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif 33250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 333b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 334b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Tests if the UFILE is at the end of the file stream. 335b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param f The UFILE from which to read. 336b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return Returns TRUE after the first read operation that attempts to 337b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * read past the end of the file. It returns FALSE if the current position is 338b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * not end of file. 339b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 340b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 34150294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE UBool U_EXPORT2 342b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_feof(UFILE *f); 343b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 344b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 345b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Flush output of a UFILE. Implies a flush of 346b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * converter/transliterator state. (That is, a logical break is 347b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * made in the output stream - for example if a different type of 348b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * output is desired.) The underlying OS level file is also flushed. 34927f654740f2a26ad62a5c155af9199af9e69b889claireho * Note that for a stateful encoding, the converter may write additional 35027f654740f2a26ad62a5c155af9199af9e69b889claireho * bytes to return the stream to default state. 351b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param file The UFILE to flush. 352b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 353b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 35450294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE void U_EXPORT2 355b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_fflush(UFILE *file); 356b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 357b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 358b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Rewind the file pointer to the beginning of the file. 359b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param file The UFILE to rewind. 360b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 361b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 36250294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE void 363b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_frewind(UFILE *file); 364b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 365b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 366b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Get the FILE* associated with a UFILE. 367b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param f The UFILE 3688393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @return A FILE*, owned by the UFILE. (The FILE <EM>must not</EM> be modified or closed) 369b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 370b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 37150294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE FILE* U_EXPORT2 372b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_fgetfile(UFILE *f); 373b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 374b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_FORMATTING 375b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 376b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 377b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Get the locale whose conventions are used to format and parse output. 378b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This is the same locale passed in the preceding call to<TT>u_fsetlocale</TT> 379b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * or <TT>u_fopen</TT>. 380b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param file The UFILE to set. 381b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The locale whose conventions are used to format and parse output. 382b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 383b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 38450294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE const char* U_EXPORT2 385b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_fgetlocale(UFILE *file); 386b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 387b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 388b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Set the locale whose conventions will be used to format and parse output. 389b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param locale The locale whose conventions will be used to format 390b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * and parse output. 391b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param file The UFILE to query. 392b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return NULL if successful, otherwise a negative number. 393b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 394b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 39550294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE int32_t U_EXPORT2 396b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_fsetlocale(UFILE *file, 397b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *locale); 398b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 399b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif 400b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 401b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 402b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Get the codepage in which data is written to and read from the UFILE. 403b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This is the same codepage passed in the preceding call to 404b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <TT>u_fsetcodepage</TT> or <TT>u_fopen</TT>. 405b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param file The UFILE to query. 406b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The codepage in which data is written to and read from the UFILE, 407b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * or NULL if an error occurred. 408b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 409b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 41050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE const char* U_EXPORT2 411b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_fgetcodepage(UFILE *file); 412b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 413b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 414b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Set the codepage in which data will be written to and read from the UFILE. 415b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * All Unicode data written to the UFILE will be converted to this codepage 416b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * before it is written to the underlying FILE*. It it generally a bad idea to 417b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * mix codepages within a file. This should only be called right 418b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * after opening the <TT>UFile</TT>, or after calling <TT>u_frewind</TT>. 419b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param codepage The codepage in which data will be written to 42050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * and read from the file. For example <TT>"latin-1"</TT> or <TT>"ibm-943"</TT>. 421b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * A value of NULL means the default codepage for the UFILE's current 422b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * locale will be used. 423b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param file The UFILE to set. 424b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return 0 if successful, otherwise a negative number. 425b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see u_frewind 426b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 427b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 42850294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE int32_t U_EXPORT2 429b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_fsetcodepage(const char *codepage, 430b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UFILE *file); 431b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 432b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 433b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 434b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Returns an alias to the converter being used for this file. 435b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param f The UFILE to get the value from 4368393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @return alias to the converter (The converter <EM>must not</EM> be modified or closed) 437b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 438b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 43950294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE UConverter* U_EXPORT2 u_fgetConverter(UFILE *f); 440b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 441b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_FORMATTING 4428393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius/** 4438393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Returns an alias to the number formatter being used for this file. 4448393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @param f The UFILE to get the value from 4458393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @return alias to the number formatter (The formatter <EM>must not</EM> be modified or closed) 446fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51 4478393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius*/ 448fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius U_STABLE const UNumberFormat* U_EXPORT2 u_fgetNumberFormat(UFILE *f); 449b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 450b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* Output functions */ 451b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 452b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 453103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Write formatted data to <TT>stdout</TT>. 454103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param patternSpecification A pattern specifying how <TT>u_printf</TT> will 455103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * interpret the variable arguments received and format the data. 456103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return The number of Unicode characters written to <TT>stdout</TT> 4578393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @stable ICU 49 458103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 4598393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig CorneliusU_STABLE int32_t U_EXPORT2 460103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusu_printf(const char *patternSpecification, 461103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius ... ); 462103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 463103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius/** 464b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Write formatted data to a UFILE. 465b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param f The UFILE to which to write. 466b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param patternSpecification A pattern specifying how <TT>u_fprintf</TT> will 467b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * interpret the variable arguments received and format the data. 468b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The number of Unicode characters written to <TT>f</TT>. 469b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 470b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 47150294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE int32_t U_EXPORT2 472b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_fprintf(UFILE *f, 473b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *patternSpecification, 474b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ... ); 475b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 476b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 477b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Write formatted data to a UFILE. 478b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This is identical to <TT>u_fprintf</TT>, except that it will 479b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <EM>not</EM> call <TT>va_start</TT> and <TT>va_end</TT>. 480b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param f The UFILE to which to write. 481b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param patternSpecification A pattern specifying how <TT>u_fprintf</TT> will 482b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * interpret the variable arguments received and format the data. 483b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param ap The argument list to use. 484b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The number of Unicode characters written to <TT>f</TT>. 485b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see u_fprintf 486b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 487b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 48850294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE int32_t U_EXPORT2 489b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_vfprintf(UFILE *f, 490b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *patternSpecification, 491b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru va_list ap); 492b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 493b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 494103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Write formatted data to <TT>stdout</TT>. 495103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param patternSpecification A pattern specifying how <TT>u_printf_u</TT> will 496103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * interpret the variable arguments received and format the data. 497103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return The number of Unicode characters written to <TT>stdout</TT> 4988393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @stable ICU 49 499103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 5008393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig CorneliusU_STABLE int32_t U_EXPORT2 501103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusu_printf_u(const UChar *patternSpecification, 502103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius ... ); 503103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 504103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius/** 505103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Get a UFILE for <TT>stdout</TT>. 506103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return UFILE that writes to <TT>stdout</TT> 5078393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @stable ICU 49 508103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 5098393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig CorneliusU_STABLE UFILE * U_EXPORT2 51054dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusu_get_stdout(void); 511103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 512103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius/** 513b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Write formatted data to a UFILE. 514b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param f The UFILE to which to write. 515b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param patternSpecification A pattern specifying how <TT>u_fprintf</TT> will 516b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * interpret the variable arguments received and format the data. 517b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The number of Unicode characters written to <TT>f</TT>. 518b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 519b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 52050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE int32_t U_EXPORT2 521b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_fprintf_u(UFILE *f, 522b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *patternSpecification, 523b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ... ); 524b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 525b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 526b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Write formatted data to a UFILE. 527b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This is identical to <TT>u_fprintf_u</TT>, except that it will 528b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <EM>not</EM> call <TT>va_start</TT> and <TT>va_end</TT>. 529b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param f The UFILE to which to write. 530b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param patternSpecification A pattern specifying how <TT>u_fprintf</TT> will 531b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * interpret the variable arguments received and format the data. 532b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param ap The argument list to use. 533b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The number of Unicode characters written to <TT>f</TT>. 534b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see u_fprintf_u 535b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 536b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 53750294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE int32_t U_EXPORT2 538b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_vfprintf_u(UFILE *f, 539b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *patternSpecification, 540b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru va_list ap); 541b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif 542b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 543b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Write a Unicode to a UFILE. The null (U+0000) terminated UChar* 544b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <TT>s</TT> will be written to <TT>f</TT>, excluding the NULL terminator. 545b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * A newline will be added to <TT>f</TT>. 546b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param s The UChar* to write. 547b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param f The UFILE to which to write. 548b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A non-negative number if successful, EOF otherwise. 549b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see u_file_write 550b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 551b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 55250294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE int32_t U_EXPORT2 553b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_fputs(const UChar *s, 554b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UFILE *f); 555b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 556b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 557b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Write a UChar to a UFILE. 558b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param uc The UChar to write. 559b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param f The UFILE to which to write. 560b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The character written if successful, EOF otherwise. 561b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 562b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 56350294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE UChar32 U_EXPORT2 564b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_fputc(UChar32 uc, 565b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UFILE *f); 566b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 567b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 568b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Write Unicode to a UFILE. 569b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The ustring passed in will be converted to the UFILE's underlying 570b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * codepage before it is written. 571b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param ustring A pointer to the Unicode data to write. 572b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param count The number of Unicode characters to write 573b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param f The UFILE to which to write. 574b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The number of Unicode characters written. 575b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see u_fputs 576b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 577b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 57850294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE int32_t U_EXPORT2 579b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_file_write(const UChar *ustring, 580b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t count, 581b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UFILE *f); 582b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 583b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 584b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* Input functions */ 585b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_FORMATTING 586b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 587b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 588b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Read formatted data from a UFILE. 589b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param f The UFILE from which to read. 590b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param patternSpecification A pattern specifying how <TT>u_fscanf</TT> will 591b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * interpret the variable arguments received and parse the data. 592b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The number of items successfully converted and assigned, or EOF 593b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * if an error occurred. 594b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 595b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 59650294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE int32_t U_EXPORT2 597b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_fscanf(UFILE *f, 598b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *patternSpecification, 599b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ... ); 600b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 601b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 602b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Read formatted data from a UFILE. 603b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This is identical to <TT>u_fscanf</TT>, except that it will 604b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <EM>not</EM> call <TT>va_start</TT> and <TT>va_end</TT>. 605b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param f The UFILE from which to read. 606b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param patternSpecification A pattern specifying how <TT>u_fscanf</TT> will 607b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * interpret the variable arguments received and parse the data. 608b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param ap The argument list to use. 609b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The number of items successfully converted and assigned, or EOF 610b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * if an error occurred. 611b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see u_fscanf 612b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 613b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 61450294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE int32_t U_EXPORT2 615b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_vfscanf(UFILE *f, 616b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *patternSpecification, 617b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru va_list ap); 618b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 619b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 620b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Read formatted data from a UFILE. 621b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param f The UFILE from which to read. 622b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param patternSpecification A pattern specifying how <TT>u_fscanf</TT> will 623b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * interpret the variable arguments received and parse the data. 624b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The number of items successfully converted and assigned, or EOF 625b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * if an error occurred. 626b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 627b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 62850294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE int32_t U_EXPORT2 629b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_fscanf_u(UFILE *f, 630b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *patternSpecification, 631b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ... ); 632b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 633b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 634b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Read formatted data from a UFILE. 635b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This is identical to <TT>u_fscanf_u</TT>, except that it will 636b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <EM>not</EM> call <TT>va_start</TT> and <TT>va_end</TT>. 637b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param f The UFILE from which to read. 638b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param patternSpecification A pattern specifying how <TT>u_fscanf</TT> will 639b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * interpret the variable arguments received and parse the data. 640b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param ap The argument list to use. 641b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The number of items successfully converted and assigned, or EOF 642b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * if an error occurred. 643b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see u_fscanf_u 644b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 645b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 64650294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE int32_t U_EXPORT2 647b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_vfscanf_u(UFILE *f, 648b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *patternSpecification, 649b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru va_list ap); 650b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif 651b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 652b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 653b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Read one line of text into a UChar* string from a UFILE. The newline 654b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * at the end of the line is read into the string. The string is always 655b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * null terminated 656b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param f The UFILE from which to read. 657b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param n The maximum number of characters - 1 to read. 658b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param s The UChar* to receive the read data. Characters will be 659b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * stored successively in <TT>s</TT> until a newline or EOF is 660b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * reached. A null character (U+0000) will be appended to <TT>s</TT>. 661b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A pointer to <TT>s</TT>, or NULL if no characters were available. 662b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 663b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 66450294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE UChar* U_EXPORT2 665b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_fgets(UChar *s, 666b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t n, 667b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UFILE *f); 668b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 669b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 670b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Read a UChar from a UFILE. It is recommended that <TT>u_fgetcx</TT> 671b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * used instead for proper parsing functions, but sometimes reading 672b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * code units is needed instead of codepoints. 673b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 674b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param f The UFILE from which to read. 675b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The UChar value read, or U+FFFF if no character was available. 676b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 677b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 67850294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE UChar U_EXPORT2 679b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_fgetc(UFILE *f); 680b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 681b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 682b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Read a UChar32 from a UFILE. 683b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 684b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param f The UFILE from which to read. 685b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The UChar32 value read, or U_EOF if no character was 686b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * available, or U+FFFFFFFF if an ill-formed character was 687b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * encountered. 688b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see u_unescape() 689b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 690b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 69150294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE UChar32 U_EXPORT2 692b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_fgetcx(UFILE *f); 693b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 694b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 695b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Unget a UChar from a UFILE. 696b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If this function is not the first to operate on <TT>f</TT> after a call 697b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * to <TT>u_fgetc</TT>, the results are undefined. 698b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If this function is passed a character that was not recieved from the 699b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * previous <TT>u_fgetc</TT> or <TT>u_fgetcx</TT> call, the results are undefined. 700b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param c The UChar to put back on the stream. 701b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param f The UFILE to receive <TT>c</TT>. 702b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The UChar32 value put back if successful, U_EOF otherwise. 703b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 704b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 70550294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE UChar32 U_EXPORT2 706b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_fungetc(UChar32 c, 707b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UFILE *f); 708b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 709b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 710b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Read Unicode from a UFILE. 711b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Bytes will be converted from the UFILE's underlying codepage, with 712b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * subsequent conversion to Unicode. The data will not be NULL terminated. 713b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param chars A pointer to receive the Unicode data. 714b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param count The number of Unicode characters to read. 715b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param f The UFILE from which to read. 716b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The number of Unicode characters read. 717b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 718b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 71950294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE int32_t U_EXPORT2 720b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_file_read(UChar *chars, 721b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t count, 722b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UFILE *f); 723b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 724b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_TRANSLITERATION 725b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 726b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 727b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Set a transliterator on the UFILE. The transliterator will be owned by the 728b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UFILE. 729b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param file The UFILE to set transliteration on 730b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param adopt The UTransliterator to set. Can be NULL, which will 731b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * mean that no transliteration is used. 732b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param direction either U_READ, U_WRITE, or U_READWRITE - sets 733b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * which direction the transliterator is to be applied to. If 734b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * U_READWRITE, the "Read" transliteration will be in the inverse 735b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * direction. 736b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status ICU error code. 737b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The previously set transliterator, owned by the 738b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * caller. If U_READWRITE is specified, only the WRITE transliterator 739b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * is returned. In most cases, the caller should call utrans_close() 740b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * on the result of this function. 741b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 742b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 74350294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE UTransliterator* U_EXPORT2 744b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_fsettransliterator(UFILE *file, UFileDirection direction, 745b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UTransliterator *adopt, UErrorCode *status); 746b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 747b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif 748b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 749b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 750b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* Output string functions */ 751b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_FORMATTING 752b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 753b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 754b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 755b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Write formatted data to a Unicode string. 756b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 757b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param buffer The Unicode String to which to write. 758b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param patternSpecification A pattern specifying how <TT>u_sprintf</TT> will 759b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * interpret the variable arguments received and format the data. 760b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The number of Unicode code units written to <TT>buffer</TT>. This 761b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * does not include the terminating null character. 762b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 763b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 76450294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE int32_t U_EXPORT2 765b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_sprintf(UChar *buffer, 766b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *patternSpecification, 767b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ... ); 768b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 769b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 770b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Write formatted data to a Unicode string. When the number of code units 771b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * required to store the data exceeds <TT>count</TT>, then <TT>count</TT> code 772b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * units of data are stored in <TT>buffer</TT> and a negative value is 773b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * returned. When the number of code units required to store the data equals 774b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <TT>count</TT>, the string is not null terminated and <TT>count</TT> is 775b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * returned. 776b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 777b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param buffer The Unicode String to which to write. 778b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param count The number of code units to read. 779b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param patternSpecification A pattern specifying how <TT>u_sprintf</TT> will 780b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * interpret the variable arguments received and format the data. 781c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * @return The number of Unicode characters that would have been written to 782c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * <TT>buffer</TT> had count been sufficiently large. This does not include 783c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * the terminating null character. 784b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 785b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 78650294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE int32_t U_EXPORT2 787b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_snprintf(UChar *buffer, 788b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t count, 789b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *patternSpecification, 790b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ... ); 791b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 792b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 793b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Write formatted data to a Unicode string. 794b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This is identical to <TT>u_sprintf</TT>, except that it will 795b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <EM>not</EM> call <TT>va_start</TT> and <TT>va_end</TT>. 796b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 797b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param buffer The Unicode string to which to write. 798b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param patternSpecification A pattern specifying how <TT>u_sprintf</TT> will 799b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * interpret the variable arguments received and format the data. 800b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param ap The argument list to use. 801b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The number of Unicode characters written to <TT>buffer</TT>. 802b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see u_sprintf 803b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 804b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 80550294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE int32_t U_EXPORT2 806b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_vsprintf(UChar *buffer, 807b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *patternSpecification, 808b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru va_list ap); 809b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 810b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 811b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Write formatted data to a Unicode string. 812b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This is identical to <TT>u_snprintf</TT>, except that it will 813b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <EM>not</EM> call <TT>va_start</TT> and <TT>va_end</TT>.<br><br> 814b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * When the number of code units required to store the data exceeds 815b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <TT>count</TT>, then <TT>count</TT> code units of data are stored in 816b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <TT>buffer</TT> and a negative value is returned. When the number of code 817b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * units required to store the data equals <TT>count</TT>, the string is not 818b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * null terminated and <TT>count</TT> is returned. 819b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 820b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param buffer The Unicode string to which to write. 821b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param count The number of code units to read. 822b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param patternSpecification A pattern specifying how <TT>u_sprintf</TT> will 823b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * interpret the variable arguments received and format the data. 824b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param ap The argument list to use. 825c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * @return The number of Unicode characters that would have been written to 826c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * <TT>buffer</TT> had count been sufficiently large. 827b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see u_sprintf 828b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 829b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 83050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE int32_t U_EXPORT2 831b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_vsnprintf(UChar *buffer, 832b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t count, 833b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *patternSpecification, 834b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru va_list ap); 835b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 836b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 837b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Write formatted data to a Unicode string. 838b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 839b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param buffer The Unicode string to which to write. 840b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param patternSpecification A pattern specifying how <TT>u_sprintf</TT> will 841b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * interpret the variable arguments received and format the data. 842b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The number of Unicode characters written to <TT>buffer</TT>. 843b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 844b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 84550294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE int32_t U_EXPORT2 846b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_sprintf_u(UChar *buffer, 847b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *patternSpecification, 848b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ... ); 849b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 850b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 851b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Write formatted data to a Unicode string. When the number of code units 852b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * required to store the data exceeds <TT>count</TT>, then <TT>count</TT> code 853b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * units of data are stored in <TT>buffer</TT> and a negative value is 854b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * returned. When the number of code units required to store the data equals 855b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <TT>count</TT>, the string is not null terminated and <TT>count</TT> is 856b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * returned. 857b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 858b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param buffer The Unicode string to which to write. 859b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param count The number of code units to read. 860b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param patternSpecification A pattern specifying how <TT>u_sprintf</TT> will 861b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * interpret the variable arguments received and format the data. 862c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * @return The number of Unicode characters that would have been written to 863c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * <TT>buffer</TT> had count been sufficiently large. 864b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 865b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 86650294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE int32_t U_EXPORT2 867b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_snprintf_u(UChar *buffer, 868b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t count, 869b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *patternSpecification, 870b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ... ); 871b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 872b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 873b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Write formatted data to a Unicode string. 874b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This is identical to <TT>u_sprintf_u</TT>, except that it will 875b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <EM>not</EM> call <TT>va_start</TT> and <TT>va_end</TT>. 876b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 877b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param buffer The Unicode string to which to write. 878b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param patternSpecification A pattern specifying how <TT>u_sprintf</TT> will 879b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * interpret the variable arguments received and format the data. 880b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param ap The argument list to use. 881b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The number of Unicode characters written to <TT>f</TT>. 882b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see u_sprintf_u 883b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 884b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 88550294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE int32_t U_EXPORT2 886b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_vsprintf_u(UChar *buffer, 887b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *patternSpecification, 888b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru va_list ap); 889b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 890b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 891b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Write formatted data to a Unicode string. 892b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This is identical to <TT>u_snprintf_u</TT>, except that it will 893b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <EM>not</EM> call <TT>va_start</TT> and <TT>va_end</TT>. 894b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * When the number of code units required to store the data exceeds 895b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <TT>count</TT>, then <TT>count</TT> code units of data are stored in 896b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <TT>buffer</TT> and a negative value is returned. When the number of code 897b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * units required to store the data equals <TT>count</TT>, the string is not 898b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * null terminated and <TT>count</TT> is returned. 899b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 900b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param buffer The Unicode string to which to write. 901b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param count The number of code units to read. 902b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param patternSpecification A pattern specifying how <TT>u_sprintf</TT> will 903b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * interpret the variable arguments received and format the data. 904b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param ap The argument list to use. 905c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * @return The number of Unicode characters that would have been written to 906c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * <TT>f</TT> had count been sufficiently large. 907b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see u_sprintf_u 908b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 909b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 91050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE int32_t U_EXPORT2 911b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_vsnprintf_u(UChar *buffer, 912b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t count, 913b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *patternSpecification, 914b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru va_list ap); 915b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 916b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* Input string functions */ 917b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 918b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 919b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Read formatted data from a Unicode string. 920b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 921b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param buffer The Unicode string from which to read. 922b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param patternSpecification A pattern specifying how <TT>u_sscanf</TT> will 923b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * interpret the variable arguments received and parse the data. 924b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The number of items successfully converted and assigned, or EOF 925b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * if an error occurred. 926b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 927b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 92850294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE int32_t U_EXPORT2 929b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_sscanf(const UChar *buffer, 930b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *patternSpecification, 931b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ... ); 932b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 933b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 934b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Read formatted data from a Unicode string. 935b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This is identical to <TT>u_sscanf</TT>, except that it will 936b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <EM>not</EM> call <TT>va_start</TT> and <TT>va_end</TT>. 937b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 938b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param buffer The Unicode string from which to read. 939b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param patternSpecification A pattern specifying how <TT>u_sscanf</TT> will 940b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * interpret the variable arguments received and parse the data. 941b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param ap The argument list to use. 942b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The number of items successfully converted and assigned, or EOF 943b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * if an error occurred. 944b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see u_sscanf 945b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 946b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 94750294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE int32_t U_EXPORT2 948b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_vsscanf(const UChar *buffer, 949b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *patternSpecification, 950b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru va_list ap); 951b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 952b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 953b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Read formatted data from a Unicode string. 954b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 955b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param buffer The Unicode string from which to read. 956b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param patternSpecification A pattern specifying how <TT>u_sscanf</TT> will 957b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * interpret the variable arguments received and parse the data. 958b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The number of items successfully converted and assigned, or EOF 959b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * if an error occurred. 960b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 961b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 96250294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE int32_t U_EXPORT2 963b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_sscanf_u(const UChar *buffer, 964b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *patternSpecification, 965b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ... ); 966b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 967b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 968b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Read formatted data from a Unicode string. 969b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This is identical to <TT>u_sscanf_u</TT>, except that it will 970b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <EM>not</EM> call <TT>va_start</TT> and <TT>va_end</TT>. 971b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 972b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param buffer The Unicode string from which to read. 973b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param patternSpecification A pattern specifying how <TT>u_sscanf</TT> will 974b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * interpret the variable arguments received and parse the data. 975b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param ap The argument list to use. 976b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The number of items successfully converted and assigned, or EOF 977b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * if an error occurred. 978b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see u_sscanf_u 979b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 3.0 980b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 98150294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_STABLE int32_t U_EXPORT2 982b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_vsscanf_u(const UChar *buffer, 983b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *patternSpecification, 984b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru va_list ap); 985b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 986b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif 987b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif 988b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 989b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 990