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>&nbsp;</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>&nbsp;</td><td>&nbsp;</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