Bump to version 0.9.4
[platform/upstream/libunistring.git] / lib / unistdio.h
1 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
2 /* Elementary Unicode string functions.
3    Copyright (C) 2002, 2005-2007, 2009-2014 Free Software Foundation, Inc.
4
5    This program is free software: you can redistribute it and/or modify it
6    under the terms of the GNU Lesser General Public License as published
7    by the Free Software Foundation; either version 3 of the License, or
8    (at your option) any later version.
9
10    This program is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
14
15    You should have received a copy of the GNU Lesser General Public License
16    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
17
18 #ifndef _UNISTDIO_H
19 #define _UNISTDIO_H
20
21 #include "unitypes.h"
22
23 /* Get size_t.  */
24 #include <stddef.h>
25
26 /* Get FILE.  */
27 #include <stdio.h>
28
29 /* Get va_list.  */
30 #include <stdarg.h>
31
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35
36 /* These work like the printf function family.
37    In the format string:
38    The format directive 'U' takes an UTF-8 string (const uint8_t *).
39    The format directive 'lU' takes an UTF-16 string (const uint16_t *).
40    The format directive 'llU' takes an UTF-32 string (const uint32_t *).
41
42    The prefix (ulc_, u8_, u16_, u16_) indicates the type of the resulting
43    string.  The prefix 'ulc' stands for "locale encoded".
44
45    An infix 'v' indicates that a va_list is passed instead of multiple
46    arguments.
47
48    The functions *sprintf have a 'buf' argument that is assumed to be large
49    enough.  (DANGEROUS!  Overflowing the buffer will crash the program.)
50    The functions *snprintf have a 'buf' argument that is assumed to be 'size'
51    units large.  (DANGEROUS!  The resulting string might be truncated in the
52    middle of a multibyte character.)
53    The functions *asprintf have a 'resultp' argument.  The result will be
54    freshly allocated and stored in *resultp.
55    The functions *asnprintf have a (resultbuf, lengthp) argument pair.  If
56    resultbuf is not NULL and the result fits into *lengthp units, it is put
57    in resultbuf, and resultbuf is returned.  Otherwise, a freshly allocated
58    string is returned.  In both cases, *lengthp is set to the length (number
59    of units) of the returned string.  In case of error, NULL is returned and
60    errno is set.
61  */
62
63 /* ASCII format string, result in locale dependent encoded 'char *'.  */
64 extern int
65        ulc_sprintf (char *buf,
66                     const char *format, ...);
67 extern int
68        ulc_snprintf (char *buf, size_t size,
69                      const char *format, ...);
70 extern int
71        ulc_asprintf (char **resultp,
72                      const char *format, ...);
73 extern char *
74        ulc_asnprintf (char *resultbuf, size_t *lengthp,
75                       const char *format, ...);
76 extern int
77        ulc_vsprintf (char *buf,
78                      const char *format, va_list ap);
79 extern int
80        ulc_vsnprintf (char *buf, size_t size,
81                       const char *format, va_list ap);
82 extern int
83        ulc_vasprintf (char **resultp,
84                       const char *format, va_list ap);
85 extern char *
86        ulc_vasnprintf (char *resultbuf, size_t *lengthp,
87                        const char *format, va_list ap);
88
89 /* ASCII format string, result in UTF-8 format.  */
90 extern int
91        u8_sprintf (uint8_t *buf,
92                    const char *format, ...);
93 extern int
94        u8_snprintf (uint8_t *buf, size_t size,
95                     const char *format, ...);
96 extern int
97        u8_asprintf (uint8_t **resultp,
98                     const char *format, ...);
99 extern uint8_t *
100        u8_asnprintf (uint8_t *resultbuf, size_t *lengthp,
101                      const char *format, ...);
102 extern int
103        u8_vsprintf (uint8_t *buf,
104                     const char *format, va_list ap);
105 extern int
106        u8_vsnprintf (uint8_t *buf, size_t size,
107                      const char *format, va_list ap);
108 extern int
109        u8_vasprintf (uint8_t **resultp,
110                      const char *format, va_list ap);
111 extern uint8_t *
112        u8_vasnprintf (uint8_t *resultbuf, size_t *lengthp,
113                       const char *format, va_list ap);
114
115 /* UTF-8 format string, result in UTF-8 format.  */
116 extern int
117        u8_u8_sprintf (uint8_t *buf,
118                       const uint8_t *format, ...);
119 extern int
120        u8_u8_snprintf (uint8_t *buf, size_t size,
121                        const uint8_t *format, ...);
122 extern int
123        u8_u8_asprintf (uint8_t **resultp,
124                        const uint8_t *format, ...);
125 extern uint8_t *
126        u8_u8_asnprintf (uint8_t *resultbuf, size_t *lengthp,
127                         const uint8_t *format, ...);
128 extern int
129        u8_u8_vsprintf (uint8_t *buf,
130                        const uint8_t *format, va_list ap);
131 extern int
132        u8_u8_vsnprintf (uint8_t *buf, size_t size,
133                         const uint8_t *format, va_list ap);
134 extern int
135        u8_u8_vasprintf (uint8_t **resultp,
136                         const uint8_t *format, va_list ap);
137 extern uint8_t *
138        u8_u8_vasnprintf (uint8_t *resultbuf, size_t *lengthp,
139                          const uint8_t *format, va_list ap);
140
141 /* ASCII format string, result in UTF-16 format.  */
142 extern int
143        u16_sprintf (uint16_t *buf,
144                     const char *format, ...);
145 extern int
146        u16_snprintf (uint16_t *buf, size_t size,
147                      const char *format, ...);
148 extern int
149        u16_asprintf (uint16_t **resultp,
150                      const char *format, ...);
151 extern uint16_t *
152        u16_asnprintf (uint16_t *resultbuf, size_t *lengthp,
153                       const char *format, ...);
154 extern int
155        u16_vsprintf (uint16_t *buf,
156                      const char *format, va_list ap);
157 extern int
158        u16_vsnprintf (uint16_t *buf, size_t size,
159                       const char *format, va_list ap);
160 extern int
161        u16_vasprintf (uint16_t **resultp,
162                       const char *format, va_list ap);
163 extern uint16_t *
164        u16_vasnprintf (uint16_t *resultbuf, size_t *lengthp,
165                        const char *format, va_list ap);
166
167 /* UTF-16 format string, result in UTF-16 format.  */
168 extern int
169        u16_u16_sprintf (uint16_t *buf,
170                         const uint16_t *format, ...);
171 extern int
172        u16_u16_snprintf (uint16_t *buf, size_t size,
173                          const uint16_t *format, ...);
174 extern int
175        u16_u16_asprintf (uint16_t **resultp,
176                          const uint16_t *format, ...);
177 extern uint16_t *
178        u16_u16_asnprintf (uint16_t *resultbuf, size_t *lengthp,
179                           const uint16_t *format, ...);
180 extern int
181        u16_u16_vsprintf (uint16_t *buf,
182                          const uint16_t *format, va_list ap);
183 extern int
184        u16_u16_vsnprintf (uint16_t *buf, size_t size,
185                           const uint16_t *format, va_list ap);
186 extern int
187        u16_u16_vasprintf (uint16_t **resultp,
188                           const uint16_t *format, va_list ap);
189 extern uint16_t *
190        u16_u16_vasnprintf (uint16_t *resultbuf, size_t *lengthp,
191                            const uint16_t *format, va_list ap);
192
193 /* ASCII format string, result in UTF-32 format.  */
194 extern int
195        u32_sprintf (uint32_t *buf,
196                     const char *format, ...);
197 extern int
198        u32_snprintf (uint32_t *buf, size_t size,
199                      const char *format, ...);
200 extern int
201        u32_asprintf (uint32_t **resultp,
202                      const char *format, ...);
203 extern uint32_t *
204        u32_asnprintf (uint32_t *resultbuf, size_t *lengthp,
205                       const char *format, ...);
206 extern int
207        u32_vsprintf (uint32_t *buf,
208                      const char *format, va_list ap);
209 extern int
210        u32_vsnprintf (uint32_t *buf, size_t size,
211                       const char *format, va_list ap);
212 extern int
213        u32_vasprintf (uint32_t **resultp,
214                       const char *format, va_list ap);
215 extern uint32_t *
216        u32_vasnprintf (uint32_t *resultbuf, size_t *lengthp,
217                        const char *format, va_list ap);
218
219 /* UTF-32 format string, result in UTF-32 format.  */
220 extern int
221        u32_u32_sprintf (uint32_t *buf,
222                         const uint32_t *format, ...);
223 extern int
224        u32_u32_snprintf (uint32_t *buf, size_t size,
225                          const uint32_t *format, ...);
226 extern int
227        u32_u32_asprintf (uint32_t **resultp,
228                          const uint32_t *format, ...);
229 extern uint32_t *
230        u32_u32_asnprintf (uint32_t *resultbuf, size_t *lengthp,
231                           const uint32_t *format, ...);
232 extern int
233        u32_u32_vsprintf (uint32_t *buf,
234                          const uint32_t *format, va_list ap);
235 extern int
236        u32_u32_vsnprintf (uint32_t *buf, size_t size,
237                           const uint32_t *format, va_list ap);
238 extern int
239        u32_u32_vasprintf (uint32_t **resultp,
240                           const uint32_t *format, va_list ap);
241 extern uint32_t *
242        u32_u32_vasnprintf (uint32_t *resultbuf, size_t *lengthp,
243                            const uint32_t *format, va_list ap);
244
245 /* ASCII format string, output to FILE in locale dependent encoding.  */
246 extern int
247        ulc_fprintf (FILE *stream,
248                     const char *format, ...);
249 extern int
250        ulc_vfprintf (FILE *stream,
251                      const char *format, va_list ap);
252
253 #ifdef __cplusplus
254 }
255 #endif
256
257 #endif /* _UNISTDIO_H */