diff options
Diffstat (limited to 'src/libs/dutil/WixToolset.DUtil/inc/strutil.h')
-rw-r--r-- | src/libs/dutil/WixToolset.DUtil/inc/strutil.h | 316 |
1 files changed, 316 insertions, 0 deletions
diff --git a/src/libs/dutil/WixToolset.DUtil/inc/strutil.h b/src/libs/dutil/WixToolset.DUtil/inc/strutil.h new file mode 100644 index 00000000..1cff9ab8 --- /dev/null +++ b/src/libs/dutil/WixToolset.DUtil/inc/strutil.h | |||
@@ -0,0 +1,316 @@ | |||
1 | #pragma once | ||
2 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
3 | |||
4 | |||
5 | #ifdef __cplusplus | ||
6 | extern "C" { | ||
7 | #endif | ||
8 | |||
9 | #define ReleaseStr(pwz) if (pwz) { StrFree(pwz); } | ||
10 | #define ReleaseNullStr(pwz) if (pwz) { StrFree(pwz); pwz = NULL; } | ||
11 | #define ReleaseBSTR(bstr) if (bstr) { ::SysFreeString(bstr); } | ||
12 | #define ReleaseNullBSTR(bstr) if (bstr) { ::SysFreeString(bstr); bstr = NULL; } | ||
13 | #define ReleaseStrArray(rg, c) { if (rg) { StrArrayFree(rg, c); } } | ||
14 | #define ReleaseNullStrArray(rg, c) { if (rg) { StrArrayFree(rg, c); c = 0; rg = NULL; } } | ||
15 | #define ReleaseNullStrSecure(pwz) if (pwz) { StrSecureZeroFreeString(pwz); pwz = NULL; } | ||
16 | |||
17 | #define DeclareConstBSTR(bstr_const, wz) const WCHAR bstr_const[] = { 0x00, 0x00, sizeof(wz)-sizeof(WCHAR), 0x00, wz } | ||
18 | #define UseConstBSTR(bstr_const) const_cast<BSTR>(bstr_const + 4) | ||
19 | |||
20 | HRESULT DAPI StrAlloc( | ||
21 | __deref_out_ecount_part(cch, 0) LPWSTR* ppwz, | ||
22 | __in SIZE_T cch | ||
23 | ); | ||
24 | HRESULT DAPI StrAllocSecure( | ||
25 | __deref_out_ecount_part(cch, 0) LPWSTR* ppwz, | ||
26 | __in SIZE_T cch | ||
27 | ); | ||
28 | HRESULT DAPI StrTrimCapacity( | ||
29 | __deref_out_z LPWSTR* ppwz | ||
30 | ); | ||
31 | HRESULT DAPI StrTrimWhitespace( | ||
32 | __deref_out_z LPWSTR* ppwz, | ||
33 | __in_z LPCWSTR wzSource | ||
34 | ); | ||
35 | HRESULT DAPI StrAnsiAlloc( | ||
36 | __deref_out_ecount_part(cch, 0) LPSTR* ppz, | ||
37 | __in SIZE_T cch | ||
38 | ); | ||
39 | HRESULT DAPI StrAnsiTrimCapacity( | ||
40 | __deref_out_z LPSTR* ppz | ||
41 | ); | ||
42 | HRESULT DAPI StrAnsiTrimWhitespace( | ||
43 | __deref_out_z LPSTR* ppz, | ||
44 | __in_z LPCSTR szSource | ||
45 | ); | ||
46 | HRESULT DAPI StrAllocString( | ||
47 | __deref_out_ecount_z(cchSource+1) LPWSTR* ppwz, | ||
48 | __in_z LPCWSTR wzSource, | ||
49 | __in SIZE_T cchSource | ||
50 | ); | ||
51 | HRESULT DAPI StrAllocStringSecure( | ||
52 | __deref_out_ecount_z(cchSource + 1) LPWSTR* ppwz, | ||
53 | __in_z LPCWSTR wzSource, | ||
54 | __in SIZE_T cchSource | ||
55 | ); | ||
56 | HRESULT DAPI StrAnsiAllocString( | ||
57 | __deref_out_ecount_z(cchSource+1) LPSTR* ppsz, | ||
58 | __in_z LPCWSTR wzSource, | ||
59 | __in SIZE_T cchSource, | ||
60 | __in UINT uiCodepage | ||
61 | ); | ||
62 | HRESULT DAPI StrAllocStringAnsi( | ||
63 | __deref_out_ecount_z(cchSource+1) LPWSTR* ppwz, | ||
64 | __in_z LPCSTR szSource, | ||
65 | __in SIZE_T cchSource, | ||
66 | __in UINT uiCodepage | ||
67 | ); | ||
68 | HRESULT DAPI StrAnsiAllocStringAnsi( | ||
69 | __deref_out_ecount_z(cchSource+1) LPSTR* ppsz, | ||
70 | __in_z LPCSTR szSource, | ||
71 | __in SIZE_T cchSource | ||
72 | ); | ||
73 | HRESULT DAPI StrAllocPrefix( | ||
74 | __deref_out_z LPWSTR* ppwz, | ||
75 | __in_z LPCWSTR wzPrefix, | ||
76 | __in SIZE_T cchPrefix | ||
77 | ); | ||
78 | HRESULT DAPI StrAllocConcat( | ||
79 | __deref_out_z LPWSTR* ppwz, | ||
80 | __in_z LPCWSTR wzSource, | ||
81 | __in SIZE_T cchSource | ||
82 | ); | ||
83 | HRESULT DAPI StrAllocConcatSecure( | ||
84 | __deref_out_z LPWSTR* ppwz, | ||
85 | __in_z LPCWSTR wzSource, | ||
86 | __in SIZE_T cchSource | ||
87 | ); | ||
88 | HRESULT DAPI StrAnsiAllocConcat( | ||
89 | __deref_out_z LPSTR* ppz, | ||
90 | __in_z LPCSTR pzSource, | ||
91 | __in SIZE_T cchSource | ||
92 | ); | ||
93 | HRESULT __cdecl StrAllocFormatted( | ||
94 | __deref_out_z LPWSTR* ppwz, | ||
95 | __in __format_string LPCWSTR wzFormat, | ||
96 | ... | ||
97 | ); | ||
98 | HRESULT __cdecl StrAllocConcatFormatted( | ||
99 | __deref_out_z LPWSTR* ppwz, | ||
100 | __in __format_string LPCWSTR wzFormat, | ||
101 | ... | ||
102 | ); | ||
103 | HRESULT __cdecl StrAllocConcatFormattedSecure( | ||
104 | __deref_out_z LPWSTR* ppwz, | ||
105 | __in __format_string LPCWSTR wzFormat, | ||
106 | ... | ||
107 | ); | ||
108 | HRESULT __cdecl StrAllocFormattedSecure( | ||
109 | __deref_out_z LPWSTR* ppwz, | ||
110 | __in __format_string LPCWSTR wzFormat, | ||
111 | ... | ||
112 | ); | ||
113 | HRESULT __cdecl StrAnsiAllocFormatted( | ||
114 | __deref_out_z LPSTR* ppsz, | ||
115 | __in __format_string LPCSTR szFormat, | ||
116 | ... | ||
117 | ); | ||
118 | HRESULT DAPI StrAllocFormattedArgs( | ||
119 | __deref_out_z LPWSTR* ppwz, | ||
120 | __in __format_string LPCWSTR wzFormat, | ||
121 | __in va_list args | ||
122 | ); | ||
123 | HRESULT DAPI StrAllocFormattedArgsSecure( | ||
124 | __deref_out_z LPWSTR* ppwz, | ||
125 | __in __format_string LPCWSTR wzFormat, | ||
126 | __in va_list args | ||
127 | ); | ||
128 | HRESULT DAPI StrAnsiAllocFormattedArgs( | ||
129 | __deref_out_z LPSTR* ppsz, | ||
130 | __in __format_string LPCSTR szFormat, | ||
131 | __in va_list args | ||
132 | ); | ||
133 | HRESULT DAPI StrAllocFromError( | ||
134 | __inout LPWSTR *ppwzMessage, | ||
135 | __in HRESULT hrError, | ||
136 | __in_opt HMODULE hModule, | ||
137 | ... | ||
138 | ); | ||
139 | |||
140 | HRESULT DAPI StrMaxLength( | ||
141 | __in LPCVOID p, | ||
142 | __out SIZE_T* pcbch | ||
143 | ); | ||
144 | HRESULT DAPI StrSize( | ||
145 | __in LPCVOID p, | ||
146 | __out SIZE_T* pcbb | ||
147 | ); | ||
148 | |||
149 | HRESULT DAPI StrFree( | ||
150 | __in LPVOID p | ||
151 | ); | ||
152 | |||
153 | |||
154 | HRESULT DAPI StrReplaceStringAll( | ||
155 | __inout LPWSTR* ppwzOriginal, | ||
156 | __in_z LPCWSTR wzOldSubString, | ||
157 | __in_z LPCWSTR wzNewSubString | ||
158 | ); | ||
159 | HRESULT DAPI StrReplaceString( | ||
160 | __inout LPWSTR* ppwzOriginal, | ||
161 | __inout DWORD* pdwStartIndex, | ||
162 | __in_z LPCWSTR wzOldSubString, | ||
163 | __in_z LPCWSTR wzNewSubString | ||
164 | ); | ||
165 | |||
166 | HRESULT DAPI StrHexEncode( | ||
167 | __in_ecount(cbSource) const BYTE* pbSource, | ||
168 | __in SIZE_T cbSource, | ||
169 | __out_ecount(cchDest) LPWSTR wzDest, | ||
170 | __in SIZE_T cchDest | ||
171 | ); | ||
172 | HRESULT DAPI StrAllocHexEncode( | ||
173 | __in_ecount(cbSource) const BYTE* pbSource, | ||
174 | __in SIZE_T cbSource, | ||
175 | __deref_out_ecount_z(2*(cbSource+1)) LPWSTR* ppwzDest | ||
176 | ); | ||
177 | HRESULT DAPI StrHexDecode( | ||
178 | __in_z LPCWSTR wzSource, | ||
179 | __out_bcount(cbDest) BYTE* pbDest, | ||
180 | __in SIZE_T cbDest | ||
181 | ); | ||
182 | HRESULT DAPI StrAllocHexDecode( | ||
183 | __in_z LPCWSTR wzSource, | ||
184 | __out_bcount(*pcbDest) BYTE** ppbDest, | ||
185 | __out_opt DWORD* pcbDest | ||
186 | ); | ||
187 | |||
188 | HRESULT DAPI StrAllocBase85Encode( | ||
189 | __in_bcount_opt(cbSource) const BYTE* pbSource, | ||
190 | __in SIZE_T cbSource, | ||
191 | __deref_out_z LPWSTR* pwzDest | ||
192 | ); | ||
193 | HRESULT DAPI StrAllocBase85Decode( | ||
194 | __in_z LPCWSTR wzSource, | ||
195 | __deref_out_bcount(*pcbDest) BYTE** ppbDest, | ||
196 | __out SIZE_T* pcbDest | ||
197 | ); | ||
198 | |||
199 | HRESULT DAPI MultiSzLen( | ||
200 | __in_ecount(*pcch) __nullnullterminated LPCWSTR pwzMultiSz, | ||
201 | __out SIZE_T* pcch | ||
202 | ); | ||
203 | HRESULT DAPI MultiSzPrepend( | ||
204 | __deref_inout_ecount(*pcchMultiSz) __nullnullterminated LPWSTR* ppwzMultiSz, | ||
205 | __inout_opt SIZE_T* pcchMultiSz, | ||
206 | __in __nullnullterminated LPCWSTR pwzInsert | ||
207 | ); | ||
208 | HRESULT DAPI MultiSzFindSubstring( | ||
209 | __in __nullnullterminated LPCWSTR pwzMultiSz, | ||
210 | __in __nullnullterminated LPCWSTR pwzSubstring, | ||
211 | __out_opt DWORD_PTR* pdwIndex, | ||
212 | __deref_opt_out __nullnullterminated LPCWSTR* ppwzFoundIn | ||
213 | ); | ||
214 | HRESULT DAPI MultiSzFindString( | ||
215 | __in __nullnullterminated LPCWSTR pwzMultiSz, | ||
216 | __in __nullnullterminated LPCWSTR pwzString, | ||
217 | __out_opt DWORD_PTR* pdwIndex, | ||
218 | __deref_opt_out __nullnullterminated LPCWSTR* ppwzFound | ||
219 | ); | ||
220 | HRESULT DAPI MultiSzRemoveString( | ||
221 | __deref_inout __nullnullterminated LPWSTR* ppwzMultiSz, | ||
222 | __in DWORD_PTR dwIndex | ||
223 | ); | ||
224 | HRESULT DAPI MultiSzInsertString( | ||
225 | __deref_inout __nullnullterminated LPWSTR* ppwzMultiSz, | ||
226 | __inout_opt SIZE_T* pcchMultiSz, | ||
227 | __in DWORD_PTR dwIndex, | ||
228 | __in_z LPCWSTR pwzInsert | ||
229 | ); | ||
230 | HRESULT DAPI MultiSzReplaceString( | ||
231 | __deref_inout __nullnullterminated LPWSTR* ppwzMultiSz, | ||
232 | __in DWORD_PTR dwIndex, | ||
233 | __in_z LPCWSTR pwzString | ||
234 | ); | ||
235 | |||
236 | LPCWSTR DAPI wcsistr( | ||
237 | __in_z LPCWSTR wzString, | ||
238 | __in_z LPCWSTR wzCharSet | ||
239 | ); | ||
240 | |||
241 | HRESULT DAPI StrStringToInt16( | ||
242 | __in_z LPCWSTR wzIn, | ||
243 | __in DWORD cchIn, | ||
244 | __out SHORT* psOut | ||
245 | ); | ||
246 | HRESULT DAPI StrStringToUInt16( | ||
247 | __in_z LPCWSTR wzIn, | ||
248 | __in DWORD cchIn, | ||
249 | __out USHORT* pusOut | ||
250 | ); | ||
251 | HRESULT DAPI StrStringToInt32( | ||
252 | __in_z LPCWSTR wzIn, | ||
253 | __in DWORD cchIn, | ||
254 | __out INT* piOut | ||
255 | ); | ||
256 | HRESULT DAPI StrStringToUInt32( | ||
257 | __in_z LPCWSTR wzIn, | ||
258 | __in DWORD cchIn, | ||
259 | __out UINT* puiOut | ||
260 | ); | ||
261 | HRESULT DAPI StrStringToInt64( | ||
262 | __in_z LPCWSTR wzIn, | ||
263 | __in DWORD cchIn, | ||
264 | __out LONGLONG* pllOut | ||
265 | ); | ||
266 | HRESULT DAPI StrStringToUInt64( | ||
267 | __in_z LPCWSTR wzIn, | ||
268 | __in DWORD cchIn, | ||
269 | __out ULONGLONG* pullOut | ||
270 | ); | ||
271 | void DAPI StrStringToUpper( | ||
272 | __inout_z LPWSTR wzIn | ||
273 | ); | ||
274 | void DAPI StrStringToLower( | ||
275 | __inout_z LPWSTR wzIn | ||
276 | ); | ||
277 | HRESULT DAPI StrAllocStringToUpperInvariant( | ||
278 | __deref_out_z LPWSTR* pscz, | ||
279 | __in_z LPCWSTR wzSource, | ||
280 | __in SIZE_T cchSource | ||
281 | ); | ||
282 | HRESULT DAPI StrAllocStringToLowerInvariant( | ||
283 | __deref_out_z LPWSTR* pscz, | ||
284 | __in_z LPCWSTR wzSource, | ||
285 | __in SIZE_T cchSource | ||
286 | ); | ||
287 | |||
288 | HRESULT DAPI StrArrayAllocString( | ||
289 | __deref_inout_ecount_opt(*pcStrArray) LPWSTR **prgsczStrArray, | ||
290 | __inout LPUINT pcStrArray, | ||
291 | __in_z LPCWSTR wzSource, | ||
292 | __in SIZE_T cchSource | ||
293 | ); | ||
294 | |||
295 | HRESULT DAPI StrArrayFree( | ||
296 | __in_ecount(cStrArray) LPWSTR *rgsczStrArray, | ||
297 | __in UINT cStrArray | ||
298 | ); | ||
299 | |||
300 | HRESULT DAPI StrSplitAllocArray( | ||
301 | __deref_inout_ecount_opt(*pcStrArray) LPWSTR **prgsczStrArray, | ||
302 | __inout LPUINT pcStrArray, | ||
303 | __in_z LPCWSTR wzSource, | ||
304 | __in_z LPCWSTR wzDelim | ||
305 | ); | ||
306 | |||
307 | HRESULT DAPI StrSecureZeroString( | ||
308 | __in LPWSTR pwz | ||
309 | ); | ||
310 | HRESULT DAPI StrSecureZeroFreeString( | ||
311 | __in LPWSTR pwz | ||
312 | ); | ||
313 | |||
314 | #ifdef __cplusplus | ||
315 | } | ||
316 | #endif | ||