Sun, 02 Nov 2025 18:04:35 +0100
difference shall not check already present items in the destination - fixes #753
| 
599
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
1 | /* | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
2 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
3 | * | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
4 | * Copyright 2021 Mike Becker, Olaf Wintermann All rights reserved. | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
5 | * | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
6 | * Redistribution and use in source and binary forms, with or without | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
7 | * modification, are permitted provided that the following conditions are met: | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
8 | * | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
9 | * 1. Redistributions of source code must retain the above copyright | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
10 | * notice, this list of conditions and the following disclaimer. | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
11 | * | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
12 | * 2. Redistributions in binary form must reproduce the above copyright | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
13 | * notice, this list of conditions and the following disclaimer in the | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
14 | * documentation and/or other materials provided with the distribution. | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
15 | * | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
16 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
17 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
18 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
19 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
20 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
25 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
26 | * POSSIBILITY OF SUCH DAMAGE. | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
27 | */ | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
28 | /** | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
29 | * @file printf.h | 
| 
1424
 
563033aa998c
fixes tons of typos and grammar issues across the documentation - fixes #667
 
Mike Becker <universe@uap-core.de> 
parents: 
1285 
diff
changeset
 | 
30 | * @brief Wrapper for write-functions with a printf-like interface. | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
31 | * @author Mike Becker | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
32 | * @author Olaf Wintermann | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
33 | * @copyright 2-Clause BSD License | 
| 
599
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
34 | */ | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
35 | |
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
36 | #ifndef UCX_PRINTF_H | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
37 | #define UCX_PRINTF_H | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
38 | |
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
39 | #include "common.h" | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
40 | #include "string.h" | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
41 | #include <stdarg.h> | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
42 | |
| 
985
 
68754c7de906
major refactoring of attributes
 
Mike Becker <universe@uap-core.de> 
parents: 
926 
diff
changeset
 | 
43 | /** | 
| 
 
68754c7de906
major refactoring of attributes
 
Mike Becker <universe@uap-core.de> 
parents: 
926 
diff
changeset
 | 
44 | * Attribute for printf-like functions. | 
| 
 
68754c7de906
major refactoring of attributes
 
Mike Becker <universe@uap-core.de> 
parents: 
926 
diff
changeset
 | 
45 | * @param fmt_idx index of the format string parameter | 
| 
 
68754c7de906
major refactoring of attributes
 
Mike Becker <universe@uap-core.de> 
parents: 
926 
diff
changeset
 | 
46 | * @param arg_idx index of the first formatting argument | 
| 
 
68754c7de906
major refactoring of attributes
 
Mike Becker <universe@uap-core.de> 
parents: 
926 
diff
changeset
 | 
47 | */ | 
| 
 
68754c7de906
major refactoring of attributes
 
Mike Becker <universe@uap-core.de> 
parents: 
926 
diff
changeset
 | 
48 | #define cx_attr_printf(fmt_idx, arg_idx) \ | 
| 
 
68754c7de906
major refactoring of attributes
 
Mike Becker <universe@uap-core.de> 
parents: 
926 
diff
changeset
 | 
49 | __attribute__((__format__(printf, fmt_idx, arg_idx))) | 
| 
 
68754c7de906
major refactoring of attributes
 
Mike Becker <universe@uap-core.de> 
parents: 
926 
diff
changeset
 | 
50 | |
| 
599
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
51 | #ifdef __cplusplus | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
52 | extern "C" { | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
53 | #endif | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
54 | |
| 
805
 
26500fc24058
add constant for reading out printf sbo size - relates to #343
 
Mike Becker <universe@uap-core.de> 
parents: 
759 
diff
changeset
 | 
55 | |
| 
 
26500fc24058
add constant for reading out printf sbo size - relates to #343
 
Mike Becker <universe@uap-core.de> 
parents: 
759 
diff
changeset
 | 
56 | /** | 
| 
 
26500fc24058
add constant for reading out printf sbo size - relates to #343
 
Mike Becker <universe@uap-core.de> 
parents: 
759 
diff
changeset
 | 
57 | * The maximum string length that fits into stack memory. | 
| 
 
26500fc24058
add constant for reading out printf sbo size - relates to #343
 
Mike Becker <universe@uap-core.de> 
parents: 
759 
diff
changeset
 | 
58 | */ | 
| 
1426
 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 
Mike Becker <universe@uap-core.de> 
parents: 
1424 
diff
changeset
 | 
59 | CX_EXPORT extern const unsigned cx_printf_sbo_size; | 
| 
805
 
26500fc24058
add constant for reading out printf sbo size - relates to #343
 
Mike Becker <universe@uap-core.de> 
parents: 
759 
diff
changeset
 | 
60 | |
| 
599
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
61 | /** | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
62 | * A @c fprintf like function which writes the output to a stream by | 
| 
599
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
63 | * using a write_func. | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
64 | * | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
65 | * @param stream the stream the data is written to | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
66 | * @param wfc the write function | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
67 | * @param fmt format string | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
68 | * @param ... additional arguments | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
69 | * @return the total number of bytes written or an error code from stdlib printf implementation | 
| 
599
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
70 | */ | 
| 
1426
 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 
Mike Becker <universe@uap-core.de> 
parents: 
1424 
diff
changeset
 | 
71 | cx_attr_nonnull_arg(1, 2, 3) cx_attr_printf(3, 4) cx_attr_cstr_arg(3) | 
| 
 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 
Mike Becker <universe@uap-core.de> 
parents: 
1424 
diff
changeset
 | 
72 | CX_EXPORT int cx_fprintf(void *stream, cx_write_func wfc, const char *fmt, ...); | 
| 
599
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
73 | |
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
74 | /** | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
75 | * A @c vfprintf like function which writes the output to a stream by | 
| 
599
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
76 | * using a write_func. | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
77 | * | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
78 | * @param stream the stream the data is written to | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
79 | * @param wfc the write function | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
80 | * @param fmt format string | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
81 | * @param ap argument list | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
82 | * @return the total number of bytes written or an error code from stdlib printf implementation | 
| 
599
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
83 | * @see cx_fprintf() | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
84 | */ | 
| 
1426
 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 
Mike Becker <universe@uap-core.de> 
parents: 
1424 
diff
changeset
 | 
85 | cx_attr_nonnull cx_attr_cstr_arg(3) | 
| 
 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 
Mike Becker <universe@uap-core.de> 
parents: 
1424 
diff
changeset
 | 
86 | CX_EXPORT int cx_vfprintf(void *stream, cx_write_func wfc, const char *fmt, va_list ap); | 
| 
599
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
87 | |
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
88 | /** | 
| 
1424
 
563033aa998c
fixes tons of typos and grammar issues across the documentation - fixes #667
 
Mike Becker <universe@uap-core.de> 
parents: 
1285 
diff
changeset
 | 
89 | * An @c asprintf like function which allocates space for a string | 
| 
599
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
90 | * the result is written to. | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
91 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
92 | * @note The resulting string is guaranteed to be zero-terminated, | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
93 | * unless there was an error, in which case the string's pointer | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
94 | * will be @c NULL. | 
| 
599
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
95 | * | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
96 | * @param allocator the CxAllocator used for allocating the string | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
97 | * @param fmt format string | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
98 | * @param ... additional arguments | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
99 | * @return the formatted string | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
100 | * @see cx_strfree_a() | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
101 | */ | 
| 
1426
 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 
Mike Becker <universe@uap-core.de> 
parents: 
1424 
diff
changeset
 | 
102 | cx_attr_nonnull_arg(1, 2) cx_attr_printf(2, 3) cx_attr_cstr_arg(2) | 
| 
 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 
Mike Becker <universe@uap-core.de> 
parents: 
1424 
diff
changeset
 | 
103 | CX_EXPORT cxmutstr cx_asprintf_a(const CxAllocator *allocator, const char *fmt, ...); | 
| 
599
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
104 | |
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
105 | /** | 
| 
1424
 
563033aa998c
fixes tons of typos and grammar issues across the documentation - fixes #667
 
Mike Becker <universe@uap-core.de> 
parents: 
1285 
diff
changeset
 | 
106 | * An @c asprintf like function which allocates space for a string | 
| 
599
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
107 | * the result is written to. | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
108 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
109 | * @note The resulting string is guaranteed to be zero-terminated, | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
110 | * unless there was an error, in which case the string's pointer | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
111 | * will be @c NULL. | 
| 
599
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
112 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
113 | * @param fmt (@c char*) format string | 
| 
599
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
114 | * @param ... additional arguments | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
115 | * @return (@c cxmutstr) the formatted string | 
| 
599
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
116 | * @see cx_strfree() | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
117 | */ | 
| 
1426
 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 
Mike Becker <universe@uap-core.de> 
parents: 
1424 
diff
changeset
 | 
118 | #define cx_asprintf(fmt, ...) cx_asprintf_a(cxDefaultAllocator, fmt, __VA_ARGS__) | 
| 
599
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
119 | |
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
120 | /** | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
121 | * A @c vasprintf like function which allocates space for a string | 
| 
599
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
122 | * the result is written to. | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
123 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
124 | * @note The resulting string is guaranteed to be zero-terminated, | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
125 | * unless there was an error, in which case the string's pointer | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
126 | * will be @c NULL. | 
| 
599
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
127 | * | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
128 | * @param allocator the CxAllocator used for allocating the string | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
129 | * @param fmt format string | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
130 | * @param ap argument list | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
131 | * @return the formatted string | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
132 | * @see cx_asprintf_a() | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
133 | */ | 
| 
1426
 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 
Mike Becker <universe@uap-core.de> 
parents: 
1424 
diff
changeset
 | 
134 | cx_attr_nonnull cx_attr_cstr_arg(2) | 
| 
 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 
Mike Becker <universe@uap-core.de> 
parents: 
1424 
diff
changeset
 | 
135 | CX_EXPORT cxmutstr cx_vasprintf_a(const CxAllocator *allocator, const char *fmt, va_list ap); | 
| 
599
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
136 | |
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
137 | /** | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
138 | * A @c vasprintf like function which allocates space for a string | 
| 
599
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
139 | * the result is written to. | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
140 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
141 | * @note The resulting string is guaranteed to be zero-terminated, | 
| 
1424
 
563033aa998c
fixes tons of typos and grammar issues across the documentation - fixes #667
 
Mike Becker <universe@uap-core.de> 
parents: 
1285 
diff
changeset
 | 
142 | * unless there was an error, in which case the string's pointer | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
143 | * will be @c NULL. | 
| 
599
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
144 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
145 | * @param fmt (@c char*) format string | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
146 | * @param ap (@c va_list) argument list | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
147 | * @return (@c cxmutstr) the formatted string | 
| 
599
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
148 | * @see cx_asprintf() | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
149 | */ | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
150 | #define cx_vasprintf(fmt, ap) cx_vasprintf_a(cxDefaultAllocator, fmt, ap) | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
151 | |
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
152 | /** | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
153 | * A @c printf like function which writes the output to a CxBuffer. | 
| 
599
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
154 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
155 | * @param buffer (@c CxBuffer*) a pointer to the buffer the data is written to | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
156 | * @param fmt (@c char*) the format string | 
| 
599
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
157 | * @param ... additional arguments | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
158 | * @return (@c int) the total number of bytes written or an error code from stdlib printf implementation | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
159 | * @see cx_fprintf() | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
160 | * @see cxBufferWrite() | 
| 
599
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
161 | */ | 
| 
1426
 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 
Mike Becker <universe@uap-core.de> 
parents: 
1424 
diff
changeset
 | 
162 | #define cx_bprintf(buffer, fmt, ...) cx_fprintf((void*)buffer, cxBufferWriteFunc, fmt, __VA_ARGS__) | 
| 
599
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
163 | |
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
164 | |
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
165 | /** | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
166 | * An @c sprintf like function which reallocates the string when the buffer is not large enough. | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
167 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
168 | * The size of the buffer will be updated in @p len when necessary. | 
| 
849
 
edb9f875b7f9
improves interface of cx_sprintf() variants
 
Mike Becker <universe@uap-core.de> 
parents: 
810 
diff
changeset
 | 
169 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
170 | * @note The resulting string, if successful, is guaranteed to be zero-terminated. | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
171 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
172 | * @param str (@c char**) a pointer to the string buffer | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
173 | * @param len (@c size_t*) a pointer to the length of the buffer | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
174 | * @param fmt (@c char*) the format string | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
175 | * @param ... additional arguments | 
| 
1424
 
563033aa998c
fixes tons of typos and grammar issues across the documentation - fixes #667
 
Mike Becker <universe@uap-core.de> 
parents: 
1285 
diff
changeset
 | 
176 | * @return (@c int) the length of the produced string or an error code from stdlib printf implementation | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
177 | */ | 
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
178 | #define cx_sprintf(str, len, fmt, ...) cx_sprintf_a(cxDefaultAllocator, str, len, fmt, __VA_ARGS__) | 
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
179 | |
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
180 | /** | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
181 | * An @c sprintf like function which reallocates the string when the buffer is not large enough. | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
182 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
183 | * The size of the buffer will be updated in @p len when necessary. | 
| 
849
 
edb9f875b7f9
improves interface of cx_sprintf() variants
 
Mike Becker <universe@uap-core.de> 
parents: 
810 
diff
changeset
 | 
184 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
185 | * @note The resulting string, if successful, is guaranteed to be zero-terminated. | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
186 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
187 | * @attention The original buffer MUST have been allocated with the same allocator! | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
188 | * | 
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
189 | * @param alloc the allocator to use | 
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
190 | * @param str a pointer to the string buffer | 
| 
849
 
edb9f875b7f9
improves interface of cx_sprintf() variants
 
Mike Becker <universe@uap-core.de> 
parents: 
810 
diff
changeset
 | 
191 | * @param len a pointer to the length of the buffer | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
192 | * @param fmt the format string | 
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
193 | * @param ... additional arguments | 
| 
1424
 
563033aa998c
fixes tons of typos and grammar issues across the documentation - fixes #667
 
Mike Becker <universe@uap-core.de> 
parents: 
1285 
diff
changeset
 | 
194 | * @return the length of the produced string or an error code from stdlib printf implementation | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
195 | */ | 
| 
1426
 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 
Mike Becker <universe@uap-core.de> 
parents: 
1424 
diff
changeset
 | 
196 | cx_attr_nonnull_arg(1, 2, 3, 4) cx_attr_printf(4, 5) cx_attr_cstr_arg(4) | 
| 
 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 
Mike Becker <universe@uap-core.de> 
parents: 
1424 
diff
changeset
 | 
197 | CX_EXPORT int cx_sprintf_a(const CxAllocator *alloc, char **str, size_t *len, const char *fmt, ...); | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
198 | |
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
199 | |
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
200 | /** | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
201 | * An @c sprintf like function which reallocates the string when the buffer is not large enough. | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
202 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
203 | * The size of the buffer will be updated in @p len when necessary. | 
| 
849
 
edb9f875b7f9
improves interface of cx_sprintf() variants
 
Mike Becker <universe@uap-core.de> 
parents: 
810 
diff
changeset
 | 
204 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
205 | * @note The resulting string, if successful, is guaranteed to be zero-terminated. | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
206 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
207 | * @param str (@c char**) a pointer to the string buffer | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
208 | * @param len (@c size_t*) a pointer to the length of the buffer | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
209 | * @param fmt (@c char*) the format string | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
210 | * @param ap (@c va_list) argument list | 
| 
1424
 
563033aa998c
fixes tons of typos and grammar issues across the documentation - fixes #667
 
Mike Becker <universe@uap-core.de> 
parents: 
1285 
diff
changeset
 | 
211 | * @return (@c int) the length of the produced string or an error code from stdlib printf implementation | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
212 | */ | 
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
213 | #define cx_vsprintf(str, len, fmt, ap) cx_vsprintf_a(cxDefaultAllocator, str, len, fmt, ap) | 
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
214 | |
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
215 | /** | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
216 | * An @c sprintf like function which reallocates the string when the buffer is not large enough. | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
217 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
218 | * The size of the buffer will be updated in @p len when necessary. | 
| 
849
 
edb9f875b7f9
improves interface of cx_sprintf() variants
 
Mike Becker <universe@uap-core.de> 
parents: 
810 
diff
changeset
 | 
219 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
220 | * @note The resulting string is guaranteed to be zero-terminated. | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
221 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
222 | * @attention The original buffer MUST have been allocated with the same allocator! | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
223 | * | 
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
224 | * @param alloc the allocator to use | 
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
225 | * @param str a pointer to the string buffer | 
| 
849
 
edb9f875b7f9
improves interface of cx_sprintf() variants
 
Mike Becker <universe@uap-core.de> 
parents: 
810 
diff
changeset
 | 
226 | * @param len a pointer to the length of the buffer | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
227 | * @param fmt the format string | 
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
228 | * @param ap argument list | 
| 
1424
 
563033aa998c
fixes tons of typos and grammar issues across the documentation - fixes #667
 
Mike Becker <universe@uap-core.de> 
parents: 
1285 
diff
changeset
 | 
229 | * @return the length of the produced string or an error code from stdlib printf implementation | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
230 | */ | 
| 
1426
 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 
Mike Becker <universe@uap-core.de> 
parents: 
1424 
diff
changeset
 | 
231 | cx_attr_nonnull cx_attr_cstr_arg(4) cx_attr_access_rw(2) cx_attr_access_rw(3) | 
| 
 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 
Mike Becker <universe@uap-core.de> 
parents: 
1424 
diff
changeset
 | 
232 | CX_EXPORT int cx_vsprintf_a(const CxAllocator *alloc, char **str, size_t *len, const char *fmt, va_list ap); | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
233 | |
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
234 | |
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
235 | /** | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
236 | * An @c sprintf like function which allocates a new string when the buffer is not large enough. | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
237 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
238 | * The size of the buffer will be updated in @p len when necessary. | 
| 
849
 
edb9f875b7f9
improves interface of cx_sprintf() variants
 
Mike Becker <universe@uap-core.de> 
parents: 
810 
diff
changeset
 | 
239 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
240 | * The location of the resulting string will @em always be stored to @p str. When the buffer | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
241 | * was sufficiently large, @p buf itself will be stored to the location of @p str. | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
242 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
243 | * @note The resulting string, if successful, is guaranteed to be zero-terminated. | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
244 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
245 | * @remark When a new string needed to be allocated, the contents of @p buf will be | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
246 | * poisoned after the call, because this function tries to produce the string in @p buf, first. | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
247 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
248 | * @param buf (@c char*) a pointer to the buffer | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
249 | * @param len (@c size_t*) a pointer to the length of the buffer | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
250 | * @param str (@c char**) a pointer where the location of the result shall be stored | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
251 | * @param fmt (@c char*) the format string | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
252 | * @param ... additional arguments | 
| 
1424
 
563033aa998c
fixes tons of typos and grammar issues across the documentation - fixes #667
 
Mike Becker <universe@uap-core.de> 
parents: 
1285 
diff
changeset
 | 
253 | * @return (@c int) the length of the produced string or an error code from stdlib printf implementation | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
254 | */ | 
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
255 | #define cx_sprintf_s(buf, len, str, fmt, ...) cx_sprintf_sa(cxDefaultAllocator, buf, len, str, fmt, __VA_ARGS__) | 
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
256 | |
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
257 | /** | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
258 | * An @c sprintf like function which allocates a new string when the buffer is not large enough. | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
259 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
260 | * The size of the buffer will be updated in @p len when necessary. | 
| 
849
 
edb9f875b7f9
improves interface of cx_sprintf() variants
 
Mike Becker <universe@uap-core.de> 
parents: 
810 
diff
changeset
 | 
261 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
262 | * The location of the resulting string will @em always be stored to @p str. When the buffer | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
263 | * was sufficiently large, @p buf itself will be stored to the location of @p str. | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
264 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
265 | * @note The resulting string, if successful, is guaranteed to be zero-terminated. | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
266 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
267 | * @remark When a new string needed to be allocated, the contents of @p buf will be | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
268 | * poisoned after the call, because this function tries to produce the string in @p buf, first. | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
269 | * | 
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
270 | * @param alloc the allocator to use | 
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
271 | * @param buf a pointer to the buffer | 
| 
849
 
edb9f875b7f9
improves interface of cx_sprintf() variants
 
Mike Becker <universe@uap-core.de> 
parents: 
810 
diff
changeset
 | 
272 | * @param len a pointer to the length of the buffer | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
273 | * @param str a pointer where the location of the result shall be stored | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
274 | * @param fmt the format string | 
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
275 | * @param ... additional arguments | 
| 
1424
 
563033aa998c
fixes tons of typos and grammar issues across the documentation - fixes #667
 
Mike Becker <universe@uap-core.de> 
parents: 
1285 
diff
changeset
 | 
276 | * @return the length of the produced string or an error code from stdlib printf implementation | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
277 | */ | 
| 
1426
 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 
Mike Becker <universe@uap-core.de> 
parents: 
1424 
diff
changeset
 | 
278 | cx_attr_nonnull_arg(1, 2, 4, 5) cx_attr_printf(5, 6) cx_attr_cstr_arg(5) | 
| 
 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 
Mike Becker <universe@uap-core.de> 
parents: 
1424 
diff
changeset
 | 
279 | cx_attr_access_rw(2) cx_attr_access_rw(3) cx_attr_access_rw(4) | 
| 
 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 
Mike Becker <universe@uap-core.de> 
parents: 
1424 
diff
changeset
 | 
280 | CX_EXPORT int cx_sprintf_sa(const CxAllocator *alloc, char *buf, size_t *len, char **str, const char *fmt, ...); | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
281 | |
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
282 | /** | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
283 | * An @c sprintf like function which allocates a new string when the buffer is not large enough. | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
284 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
285 | * The size of the buffer will be updated in @p len when necessary. | 
| 
849
 
edb9f875b7f9
improves interface of cx_sprintf() variants
 
Mike Becker <universe@uap-core.de> 
parents: 
810 
diff
changeset
 | 
286 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
287 | * The location of the resulting string will @em always be stored to @p str. When the buffer | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
288 | * was sufficiently large, @p buf itself will be stored to the location of @p str. | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
289 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
290 | * @note The resulting string is guaranteed to be zero-terminated. | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
291 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
292 | * @remark When a new string needed to be allocated, the contents of @p buf will be | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
293 | * poisoned after the call, because this function tries to produce the string in @p buf, first. | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
294 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
295 | * @param buf (@c char*) a pointer to the buffer | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
296 | * @param len (@c size_t*) a pointer to the length of the buffer | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
297 | * @param str (@c char**) a pointer where the location of the result shall be stored | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
298 | * @param fmt (@c char*) the format string | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
299 | * @param ap (@c va_list) argument list | 
| 
1424
 
563033aa998c
fixes tons of typos and grammar issues across the documentation - fixes #667
 
Mike Becker <universe@uap-core.de> 
parents: 
1285 
diff
changeset
 | 
300 | * @return (@c int) the length of the produced string or an error code from stdlib printf implementation | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
301 | */ | 
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
302 | #define cx_vsprintf_s(buf, len, str, fmt, ap) cx_vsprintf_sa(cxDefaultAllocator, buf, len, str, fmt, ap) | 
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
303 | |
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
304 | /** | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
305 | * An @c sprintf like function which allocates a new string when the buffer is not large enough. | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
306 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
307 | * The size of the buffer will be updated in @p len when necessary. | 
| 
849
 
edb9f875b7f9
improves interface of cx_sprintf() variants
 
Mike Becker <universe@uap-core.de> 
parents: 
810 
diff
changeset
 | 
308 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
309 | * The location of the resulting string will @em always be stored to @p str. When the buffer | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
310 | * was sufficiently large, @p buf itself will be stored to the location of @p str. | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
311 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
312 | * @note The resulting string is guaranteed to be zero-terminated. | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
313 | * | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
314 | * @remark When a new string needed to be allocated, the contents of @p buf will be | 
| 
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
315 | * poisoned after the call, because this function tries to produce the string in @p buf, first. | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
316 | * | 
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
317 | * @param alloc the allocator to use | 
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
318 | * @param buf a pointer to the buffer | 
| 
849
 
edb9f875b7f9
improves interface of cx_sprintf() variants
 
Mike Becker <universe@uap-core.de> 
parents: 
810 
diff
changeset
 | 
319 | * @param len a pointer to the length of the buffer | 
| 
1105
 
5c16dc362684
refine docs for printf.h - issue #548
 
Mike Becker <universe@uap-core.de> 
parents: 
985 
diff
changeset
 | 
320 | * @param str a pointer where the location of the result shall be stored | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
321 | * @param fmt the format string | 
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
322 | * @param ap argument list | 
| 
1424
 
563033aa998c
fixes tons of typos and grammar issues across the documentation - fixes #667
 
Mike Becker <universe@uap-core.de> 
parents: 
1285 
diff
changeset
 | 
323 | * @return the length of the produced string or an error code from stdlib printf implementation | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
324 | */ | 
| 
1426
 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 
Mike Becker <universe@uap-core.de> 
parents: 
1424 
diff
changeset
 | 
325 | cx_attr_nonnull cx_attr_cstr_arg(5) | 
| 
 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 
Mike Becker <universe@uap-core.de> 
parents: 
1424 
diff
changeset
 | 
326 | CX_EXPORT int cx_vsprintf_sa(const CxAllocator *alloc, char *buf, size_t *len, char **str, const char *fmt, va_list ap); | 
| 
810
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
327 | |
| 
 
85859399a0cc
add cx_sprintf() variants - fixes #353
 
Mike Becker <universe@uap-core.de> 
parents: 
805 
diff
changeset
 | 
328 | |
| 
599
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
329 | #ifdef __cplusplus | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
330 | } // extern "C" | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
331 | #endif | 
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
332 | |
| 
 
6536a9a75b71
#222 add printf-like functions
 
Mike Becker <universe@uap-core.de> 
parents:  
diff
changeset
 | 
333 | #endif //UCX_PRINTF_H |