67 * @param wfc the write function |
66 * @param wfc the write function |
68 * @param fmt format string |
67 * @param fmt format string |
69 * @param ... additional arguments |
68 * @param ... additional arguments |
70 * @return the total number of bytes written or an error code from stdlib printf implementation |
69 * @return the total number of bytes written or an error code from stdlib printf implementation |
71 */ |
70 */ |
72 cx_attr_nonnull_arg(1, 2, 3) |
71 cx_attr_nonnull_arg(1, 2, 3) cx_attr_printf(3, 4) cx_attr_cstr_arg(3) |
73 cx_attr_printf(3, 4) |
72 CX_EXPORT int cx_fprintf(void *stream, cx_write_func wfc, const char *fmt, ...); |
74 cx_attr_cstr_arg(3) |
|
75 cx_attr_export |
|
76 int cx_fprintf( |
|
77 void *stream, |
|
78 cx_write_func wfc, |
|
79 const char *fmt, |
|
80 ... |
|
81 ); |
|
82 |
73 |
83 /** |
74 /** |
84 * A @c vfprintf like function which writes the output to a stream by |
75 * A @c vfprintf like function which writes the output to a stream by |
85 * using a write_func. |
76 * using a write_func. |
86 * |
77 * |
89 * @param fmt format string |
80 * @param fmt format string |
90 * @param ap argument list |
81 * @param ap argument list |
91 * @return the total number of bytes written or an error code from stdlib printf implementation |
82 * @return the total number of bytes written or an error code from stdlib printf implementation |
92 * @see cx_fprintf() |
83 * @see cx_fprintf() |
93 */ |
84 */ |
94 cx_attr_nonnull |
85 cx_attr_nonnull cx_attr_cstr_arg(3) |
95 cx_attr_cstr_arg(3) |
86 CX_EXPORT int cx_vfprintf(void *stream, cx_write_func wfc, const char *fmt, va_list ap); |
96 cx_attr_export |
|
97 int cx_vfprintf( |
|
98 void *stream, |
|
99 cx_write_func wfc, |
|
100 const char *fmt, |
|
101 va_list ap |
|
102 ); |
|
103 |
87 |
104 /** |
88 /** |
105 * An @c asprintf like function which allocates space for a string |
89 * An @c asprintf like function which allocates space for a string |
106 * the result is written to. |
90 * the result is written to. |
107 * |
91 * |
113 * @param fmt format string |
97 * @param fmt format string |
114 * @param ... additional arguments |
98 * @param ... additional arguments |
115 * @return the formatted string |
99 * @return the formatted string |
116 * @see cx_strfree_a() |
100 * @see cx_strfree_a() |
117 */ |
101 */ |
118 cx_attr_nonnull_arg(1, 2) |
102 cx_attr_nonnull_arg(1, 2) cx_attr_printf(2, 3) cx_attr_cstr_arg(2) |
119 cx_attr_printf(2, 3) |
103 CX_EXPORT cxmutstr cx_asprintf_a(const CxAllocator *allocator, const char *fmt, ...); |
120 cx_attr_cstr_arg(2) |
|
121 cx_attr_export |
|
122 cxmutstr cx_asprintf_a( |
|
123 const CxAllocator *allocator, |
|
124 const char *fmt, |
|
125 ... |
|
126 ); |
|
127 |
104 |
128 /** |
105 /** |
129 * An @c asprintf like function which allocates space for a string |
106 * An @c asprintf like function which allocates space for a string |
130 * the result is written to. |
107 * the result is written to. |
131 * |
108 * |
136 * @param fmt (@c char*) format string |
113 * @param fmt (@c char*) format string |
137 * @param ... additional arguments |
114 * @param ... additional arguments |
138 * @return (@c cxmutstr) the formatted string |
115 * @return (@c cxmutstr) the formatted string |
139 * @see cx_strfree() |
116 * @see cx_strfree() |
140 */ |
117 */ |
141 #define cx_asprintf(fmt, ...) \ |
118 #define cx_asprintf(fmt, ...) cx_asprintf_a(cxDefaultAllocator, fmt, __VA_ARGS__) |
142 cx_asprintf_a(cxDefaultAllocator, fmt, __VA_ARGS__) |
|
143 |
119 |
144 /** |
120 /** |
145 * A @c vasprintf like function which allocates space for a string |
121 * A @c vasprintf like function which allocates space for a string |
146 * the result is written to. |
122 * the result is written to. |
147 * |
123 * |
153 * @param fmt format string |
129 * @param fmt format string |
154 * @param ap argument list |
130 * @param ap argument list |
155 * @return the formatted string |
131 * @return the formatted string |
156 * @see cx_asprintf_a() |
132 * @see cx_asprintf_a() |
157 */ |
133 */ |
158 cx_attr_nonnull |
134 cx_attr_nonnull cx_attr_cstr_arg(2) |
159 cx_attr_cstr_arg(2) |
135 CX_EXPORT cxmutstr cx_vasprintf_a(const CxAllocator *allocator, const char *fmt, va_list ap); |
160 cx_attr_export |
|
161 cxmutstr cx_vasprintf_a( |
|
162 const CxAllocator *allocator, |
|
163 const char *fmt, |
|
164 va_list ap |
|
165 ); |
|
166 |
136 |
167 /** |
137 /** |
168 * A @c vasprintf like function which allocates space for a string |
138 * A @c vasprintf like function which allocates space for a string |
169 * the result is written to. |
139 * the result is written to. |
170 * |
140 * |
187 * @param ... additional arguments |
157 * @param ... additional arguments |
188 * @return (@c int) the total number of bytes written or an error code from stdlib printf implementation |
158 * @return (@c int) the total number of bytes written or an error code from stdlib printf implementation |
189 * @see cx_fprintf() |
159 * @see cx_fprintf() |
190 * @see cxBufferWrite() |
160 * @see cxBufferWrite() |
191 */ |
161 */ |
192 #define cx_bprintf(buffer, fmt, ...) cx_fprintf((void*)buffer, \ |
162 #define cx_bprintf(buffer, fmt, ...) cx_fprintf((void*)buffer, cxBufferWriteFunc, fmt, __VA_ARGS__) |
193 cxBufferWriteFunc, fmt, __VA_ARGS__) |
|
194 |
163 |
195 |
164 |
196 /** |
165 /** |
197 * An @c sprintf like function which reallocates the string when the buffer is not large enough. |
166 * An @c sprintf like function which reallocates the string when the buffer is not large enough. |
198 * |
167 * |
222 * @param len a pointer to the length of the buffer |
191 * @param len a pointer to the length of the buffer |
223 * @param fmt the format string |
192 * @param fmt the format string |
224 * @param ... additional arguments |
193 * @param ... additional arguments |
225 * @return the length of the produced string or an error code from stdlib printf implementation |
194 * @return the length of the produced string or an error code from stdlib printf implementation |
226 */ |
195 */ |
227 cx_attr_nonnull_arg(1, 2, 3, 4) |
196 cx_attr_nonnull_arg(1, 2, 3, 4) cx_attr_printf(4, 5) cx_attr_cstr_arg(4) |
228 cx_attr_printf(4, 5) |
197 CX_EXPORT int cx_sprintf_a(const CxAllocator *alloc, char **str, size_t *len, const char *fmt, ...); |
229 cx_attr_cstr_arg(4) |
|
230 cx_attr_export |
|
231 int cx_sprintf_a( |
|
232 const CxAllocator *alloc, |
|
233 char **str, |
|
234 size_t *len, |
|
235 const char *fmt, |
|
236 ... |
|
237 ); |
|
238 |
198 |
239 |
199 |
240 /** |
200 /** |
241 * An @c sprintf like function which reallocates the string when the buffer is not large enough. |
201 * An @c sprintf like function which reallocates the string when the buffer is not large enough. |
242 * |
202 * |
266 * @param len a pointer to the length of the buffer |
226 * @param len a pointer to the length of the buffer |
267 * @param fmt the format string |
227 * @param fmt the format string |
268 * @param ap argument list |
228 * @param ap argument list |
269 * @return the length of the produced string or an error code from stdlib printf implementation |
229 * @return the length of the produced string or an error code from stdlib printf implementation |
270 */ |
230 */ |
271 cx_attr_nonnull |
231 cx_attr_nonnull cx_attr_cstr_arg(4) cx_attr_access_rw(2) cx_attr_access_rw(3) |
272 cx_attr_cstr_arg(4) |
232 CX_EXPORT int cx_vsprintf_a(const CxAllocator *alloc, char **str, size_t *len, const char *fmt, va_list ap); |
273 cx_attr_access_rw(2) |
|
274 cx_attr_access_rw(3) |
|
275 cx_attr_export |
|
276 int cx_vsprintf_a( |
|
277 const CxAllocator *alloc, |
|
278 char **str, |
|
279 size_t *len, |
|
280 const char *fmt, |
|
281 va_list ap |
|
282 ); |
|
283 |
233 |
284 |
234 |
285 /** |
235 /** |
286 * An @c sprintf like function which allocates a new string when the buffer is not large enough. |
236 * An @c sprintf like function which allocates a new string when the buffer is not large enough. |
287 * |
237 * |
323 * @param str a pointer where the location of the result shall be stored |
273 * @param str a pointer where the location of the result shall be stored |
324 * @param fmt the format string |
274 * @param fmt the format string |
325 * @param ... additional arguments |
275 * @param ... additional arguments |
326 * @return the length of the produced string or an error code from stdlib printf implementation |
276 * @return the length of the produced string or an error code from stdlib printf implementation |
327 */ |
277 */ |
328 cx_attr_nonnull_arg(1, 2, 4, 5) |
278 cx_attr_nonnull_arg(1, 2, 4, 5) cx_attr_printf(5, 6) cx_attr_cstr_arg(5) |
329 cx_attr_printf(5, 6) |
279 cx_attr_access_rw(2) cx_attr_access_rw(3) cx_attr_access_rw(4) |
330 cx_attr_cstr_arg(5) |
280 CX_EXPORT int cx_sprintf_sa(const CxAllocator *alloc, char *buf, size_t *len, char **str, const char *fmt, ...); |
331 cx_attr_access_rw(2) |
|
332 cx_attr_access_rw(3) |
|
333 cx_attr_access_rw(4) |
|
334 cx_attr_export |
|
335 int cx_sprintf_sa( |
|
336 const CxAllocator *alloc, |
|
337 char *buf, |
|
338 size_t *len, |
|
339 char **str, |
|
340 const char *fmt, |
|
341 ... |
|
342 ); |
|
343 |
281 |
344 /** |
282 /** |
345 * An @c sprintf like function which allocates a new string when the buffer is not large enough. |
283 * An @c sprintf like function which allocates a new string when the buffer is not large enough. |
346 * |
284 * |
347 * The size of the buffer will be updated in @p len when necessary. |
285 * The size of the buffer will be updated in @p len when necessary. |
382 * @param str a pointer where the location of the result shall be stored |
320 * @param str a pointer where the location of the result shall be stored |
383 * @param fmt the format string |
321 * @param fmt the format string |
384 * @param ap argument list |
322 * @param ap argument list |
385 * @return the length of the produced string or an error code from stdlib printf implementation |
323 * @return the length of the produced string or an error code from stdlib printf implementation |
386 */ |
324 */ |
387 cx_attr_nonnull |
325 cx_attr_nonnull cx_attr_cstr_arg(5) |
388 cx_attr_cstr_arg(5) |
326 CX_EXPORT int cx_vsprintf_sa(const CxAllocator *alloc, char *buf, size_t *len, char **str, const char *fmt, va_list ap); |
389 cx_attr_export |
|
390 int cx_vsprintf_sa( |
|
391 const CxAllocator *alloc, |
|
392 char *buf, |
|
393 size_t *len, |
|
394 char **str, |
|
395 const char *fmt, |
|
396 va_list ap |
|
397 ); |
|
398 |
327 |
399 |
328 |
400 #ifdef __cplusplus |
329 #ifdef __cplusplus |
401 } // extern "C" |
330 } // extern "C" |
402 #endif |
331 #endif |