aboutsummaryrefslogtreecommitdiff
path: root/src/libs/dutil/WixToolset.DUtil/inc/strutil.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/dutil/WixToolset.DUtil/inc/strutil.h')
-rw-r--r--src/libs/dutil/WixToolset.DUtil/inc/strutil.h316
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
6extern "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
20HRESULT DAPI StrAlloc(
21 __deref_out_ecount_part(cch, 0) LPWSTR* ppwz,
22 __in SIZE_T cch
23 );
24HRESULT DAPI StrAllocSecure(
25 __deref_out_ecount_part(cch, 0) LPWSTR* ppwz,
26 __in SIZE_T cch
27 );
28HRESULT DAPI StrTrimCapacity(
29 __deref_out_z LPWSTR* ppwz
30 );
31HRESULT DAPI StrTrimWhitespace(
32 __deref_out_z LPWSTR* ppwz,
33 __in_z LPCWSTR wzSource
34 );
35HRESULT DAPI StrAnsiAlloc(
36 __deref_out_ecount_part(cch, 0) LPSTR* ppz,
37 __in SIZE_T cch
38 );
39HRESULT DAPI StrAnsiTrimCapacity(
40 __deref_out_z LPSTR* ppz
41 );
42HRESULT DAPI StrAnsiTrimWhitespace(
43 __deref_out_z LPSTR* ppz,
44 __in_z LPCSTR szSource
45 );
46HRESULT DAPI StrAllocString(
47 __deref_out_ecount_z(cchSource+1) LPWSTR* ppwz,
48 __in_z LPCWSTR wzSource,
49 __in SIZE_T cchSource
50 );
51HRESULT DAPI StrAllocStringSecure(
52 __deref_out_ecount_z(cchSource + 1) LPWSTR* ppwz,
53 __in_z LPCWSTR wzSource,
54 __in SIZE_T cchSource
55 );
56HRESULT 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 );
62HRESULT 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 );
68HRESULT DAPI StrAnsiAllocStringAnsi(
69 __deref_out_ecount_z(cchSource+1) LPSTR* ppsz,
70 __in_z LPCSTR szSource,
71 __in SIZE_T cchSource
72 );
73HRESULT DAPI StrAllocPrefix(
74 __deref_out_z LPWSTR* ppwz,
75 __in_z LPCWSTR wzPrefix,
76 __in SIZE_T cchPrefix
77 );
78HRESULT DAPI StrAllocConcat(
79 __deref_out_z LPWSTR* ppwz,
80 __in_z LPCWSTR wzSource,
81 __in SIZE_T cchSource
82 );
83HRESULT DAPI StrAllocConcatSecure(
84 __deref_out_z LPWSTR* ppwz,
85 __in_z LPCWSTR wzSource,
86 __in SIZE_T cchSource
87 );
88HRESULT DAPI StrAnsiAllocConcat(
89 __deref_out_z LPSTR* ppz,
90 __in_z LPCSTR pzSource,
91 __in SIZE_T cchSource
92 );
93HRESULT __cdecl StrAllocFormatted(
94 __deref_out_z LPWSTR* ppwz,
95 __in __format_string LPCWSTR wzFormat,
96 ...
97 );
98HRESULT __cdecl StrAllocConcatFormatted(
99 __deref_out_z LPWSTR* ppwz,
100 __in __format_string LPCWSTR wzFormat,
101 ...
102 );
103HRESULT __cdecl StrAllocConcatFormattedSecure(
104 __deref_out_z LPWSTR* ppwz,
105 __in __format_string LPCWSTR wzFormat,
106 ...
107 );
108HRESULT __cdecl StrAllocFormattedSecure(
109 __deref_out_z LPWSTR* ppwz,
110 __in __format_string LPCWSTR wzFormat,
111 ...
112 );
113HRESULT __cdecl StrAnsiAllocFormatted(
114 __deref_out_z LPSTR* ppsz,
115 __in __format_string LPCSTR szFormat,
116 ...
117 );
118HRESULT DAPI StrAllocFormattedArgs(
119 __deref_out_z LPWSTR* ppwz,
120 __in __format_string LPCWSTR wzFormat,
121 __in va_list args
122 );
123HRESULT DAPI StrAllocFormattedArgsSecure(
124 __deref_out_z LPWSTR* ppwz,
125 __in __format_string LPCWSTR wzFormat,
126 __in va_list args
127 );
128HRESULT DAPI StrAnsiAllocFormattedArgs(
129 __deref_out_z LPSTR* ppsz,
130 __in __format_string LPCSTR szFormat,
131 __in va_list args
132 );
133HRESULT DAPI StrAllocFromError(
134 __inout LPWSTR *ppwzMessage,
135 __in HRESULT hrError,
136 __in_opt HMODULE hModule,
137 ...
138 );
139
140HRESULT DAPI StrMaxLength(
141 __in LPCVOID p,
142 __out SIZE_T* pcbch
143 );
144HRESULT DAPI StrSize(
145 __in LPCVOID p,
146 __out SIZE_T* pcbb
147 );
148
149HRESULT DAPI StrFree(
150 __in LPVOID p
151 );
152
153
154HRESULT DAPI StrReplaceStringAll(
155 __inout LPWSTR* ppwzOriginal,
156 __in_z LPCWSTR wzOldSubString,
157 __in_z LPCWSTR wzNewSubString
158 );
159HRESULT DAPI StrReplaceString(
160 __inout LPWSTR* ppwzOriginal,
161 __inout DWORD* pdwStartIndex,
162 __in_z LPCWSTR wzOldSubString,
163 __in_z LPCWSTR wzNewSubString
164 );
165
166HRESULT 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 );
172HRESULT 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 );
177HRESULT DAPI StrHexDecode(
178 __in_z LPCWSTR wzSource,
179 __out_bcount(cbDest) BYTE* pbDest,
180 __in SIZE_T cbDest
181 );
182HRESULT DAPI StrAllocHexDecode(
183 __in_z LPCWSTR wzSource,
184 __out_bcount(*pcbDest) BYTE** ppbDest,
185 __out_opt DWORD* pcbDest
186 );
187
188HRESULT DAPI StrAllocBase85Encode(
189 __in_bcount_opt(cbSource) const BYTE* pbSource,
190 __in SIZE_T cbSource,
191 __deref_out_z LPWSTR* pwzDest
192 );
193HRESULT DAPI StrAllocBase85Decode(
194 __in_z LPCWSTR wzSource,
195 __deref_out_bcount(*pcbDest) BYTE** ppbDest,
196 __out SIZE_T* pcbDest
197);
198
199HRESULT DAPI MultiSzLen(
200 __in_ecount(*pcch) __nullnullterminated LPCWSTR pwzMultiSz,
201 __out SIZE_T* pcch
202 );
203HRESULT DAPI MultiSzPrepend(
204 __deref_inout_ecount(*pcchMultiSz) __nullnullterminated LPWSTR* ppwzMultiSz,
205 __inout_opt SIZE_T* pcchMultiSz,
206 __in __nullnullterminated LPCWSTR pwzInsert
207 );
208HRESULT 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 );
214HRESULT 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 );
220HRESULT DAPI MultiSzRemoveString(
221 __deref_inout __nullnullterminated LPWSTR* ppwzMultiSz,
222 __in DWORD_PTR dwIndex
223 );
224HRESULT 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 );
230HRESULT DAPI MultiSzReplaceString(
231 __deref_inout __nullnullterminated LPWSTR* ppwzMultiSz,
232 __in DWORD_PTR dwIndex,
233 __in_z LPCWSTR pwzString
234 );
235
236LPCWSTR DAPI wcsistr(
237 __in_z LPCWSTR wzString,
238 __in_z LPCWSTR wzCharSet
239 );
240
241HRESULT DAPI StrStringToInt16(
242 __in_z LPCWSTR wzIn,
243 __in DWORD cchIn,
244 __out SHORT* psOut
245 );
246HRESULT DAPI StrStringToUInt16(
247 __in_z LPCWSTR wzIn,
248 __in DWORD cchIn,
249 __out USHORT* pusOut
250 );
251HRESULT DAPI StrStringToInt32(
252 __in_z LPCWSTR wzIn,
253 __in DWORD cchIn,
254 __out INT* piOut
255 );
256HRESULT DAPI StrStringToUInt32(
257 __in_z LPCWSTR wzIn,
258 __in DWORD cchIn,
259 __out UINT* puiOut
260 );
261HRESULT DAPI StrStringToInt64(
262 __in_z LPCWSTR wzIn,
263 __in DWORD cchIn,
264 __out LONGLONG* pllOut
265 );
266HRESULT DAPI StrStringToUInt64(
267 __in_z LPCWSTR wzIn,
268 __in DWORD cchIn,
269 __out ULONGLONG* pullOut
270 );
271void DAPI StrStringToUpper(
272 __inout_z LPWSTR wzIn
273 );
274void DAPI StrStringToLower(
275 __inout_z LPWSTR wzIn
276 );
277HRESULT DAPI StrAllocStringToUpperInvariant(
278 __deref_out_z LPWSTR* pscz,
279 __in_z LPCWSTR wzSource,
280 __in SIZE_T cchSource
281 );
282HRESULT DAPI StrAllocStringToLowerInvariant(
283 __deref_out_z LPWSTR* pscz,
284 __in_z LPCWSTR wzSource,
285 __in SIZE_T cchSource
286 );
287
288HRESULT 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
295HRESULT DAPI StrArrayFree(
296 __in_ecount(cStrArray) LPWSTR *rgsczStrArray,
297 __in UINT cStrArray
298 );
299
300HRESULT 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
307HRESULT DAPI StrSecureZeroString(
308 __in LPWSTR pwz
309 );
310HRESULT DAPI StrSecureZeroFreeString(
311 __in LPWSTR pwz
312 );
313
314#ifdef __cplusplus
315}
316#endif