VirtualBox

source: vbox/trunk/include/iprt/nocrt/string.h@ 96070

Last change on this file since 96070 was 96013, checked in by vboxsync, 3 years ago

include/iprt/nocrt: More prototypes & some fixes. bugref:10261

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id Revision
File size: 10.6 KB
Line 
1/** @file
2 * IPRT / No-CRT - string.h.
3 */
4
5/*
6 * Copyright (C) 2006-2022 Oracle Corporation
7 *
8 * This file is part of VirtualBox Open Source Edition (OSE), as
9 * available from http://www.virtualbox.org. This file is free software;
10 * you can redistribute it and/or modify it under the terms of the GNU
11 * General Public License (GPL) as published by the Free Software
12 * Foundation, in version 2 as it comes in the "COPYING" file of the
13 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
14 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
15 *
16 * The contents of this file may alternatively be used under the terms
17 * of the Common Development and Distribution License Version 1.0
18 * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
19 * VirtualBox OSE distribution, in which case the provisions of the
20 * CDDL are applicable instead of those of the GPL.
21 *
22 * You may elect to license modified versions of this file under the
23 * terms and conditions of either the GPL or the CDDL or both.
24 */
25
26#ifndef IPRT_INCLUDED_nocrt_string_h
27#define IPRT_INCLUDED_nocrt_string_h
28#ifndef RT_WITHOUT_PRAGMA_ONCE
29# pragma once
30#endif
31
32#include <iprt/types.h>
33
34/* Dummy for now, fix when/if needed. */
35typedef struct RT_NOCRT(mbstate_t)
36{
37 unsigned long whatever;
38} RT_NOCRT(mbstate_t);
39
40
41RT_C_DECLS_BEGIN
42
43void *RT_NOCRT(memchr)(const void *pv, int ch, size_t cb);
44int RT_NOCRT(memcmp)(const void *pv1, const void *pv2, size_t cb);
45void *RT_NOCRT(memcpy)(void *pvDst, const void *pvSrc, size_t cb);
46void *RT_NOCRT(mempcpy)(void *pvDst, const void *pvSrc, size_t cb);
47void *RT_NOCRT(memrchr)(const void *pv, int ch, size_t cb);
48void *RT_NOCRT(memmove)(void *pvDst, const void *pvSrc, size_t cb);
49void *RT_NOCRT(memset)(void *pvDst, int ch, size_t cb);
50
51char *RT_NOCRT(strcat)(char *pszDst, const char *pszSrc);
52char *RT_NOCRT(strncat)(char *pszDst, const char *pszSrc, size_t cch);
53char *RT_NOCRT(strchr)(const char *psz, int ch);
54char *RT_NOCRT(strrchr)(const char *psz, int ch);
55int RT_NOCRT(strcmp)(const char *psz1, const char *psz2);
56int RT_NOCRT(strncmp)(const char *psz1, const char *psz2, size_t cch);
57int RT_NOCRT(stricmp)(const char *psz1, const char *psz2);
58int RT_NOCRT(strnicmp)(const char *psz1, const char *psz2, size_t cch);
59int RT_NOCRT(strcmpcase)(const char *psz1, const char *psz2, size_t cch);
60int RT_NOCRT(strcoll)(const char *psz1, const char *psz2);
61char *RT_NOCRT(strcpy)(char *pszDst, const char *pszSrc);
62char *RT_NOCRT(strncpy)(char *pszDst, const char *pszSrc, size_t cch);
63char *RT_NOCRT(strcat)(char *pszDst, const char *pszSrc);
64char *RT_NOCRT(strncat)(char *pszDst, const char *pszSrc, size_t cch);
65size_t RT_NOCRT(strlen)(const char *psz);
66size_t RT_NOCRT(strnlen)(const char *psz, size_t cch);
67size_t RT_NOCRT(strspn)(const char *psz, const char *pszBreakChars);
68size_t RT_NOCRT(strcspn)(const char *psz, const char *pszBreakChars);
69char *RT_NOCRT(strpbrk)(const char *psz, const char *pszBreakChars);
70char *RT_NOCRT(strstr)(const char *psz, const char *pszSub);
71char *RT_NOCRT(strtok)(char *psz, const char *pszDelim);
72char *RT_NOCRT(strtok_r)(char *psz, const char *pszDelim, char **ppszSave);
73#if 0 /* C++11: */
74char *RT_NOCRT(strtok_s)(char *psz, /*rsize_t*/ size_t cchMax, const char *pszDelim, char **ppszSave);
75#else /* Microsoft: */
76char *RT_NOCRT(strtok_s)(char *psz, const char *pszDelim, char **ppszSave);
77#endif
78size_t RT_NOCRT(strxfrm)(char *pszDst, const char *pszSrc, size_t cch);
79
80size_t RT_NOCRT(wcslen)(const wchar_t *pwsz);
81wchar_t *RT_NOCRT(wcscat)(wchar_t *pwszDst, const wchar_t *pwszSrc);
82wchar_t *RT_NOCRT(wcschr)(const wchar_t *pwsz, wchar_t wc);
83wchar_t *RT_NOCRT(wcscpy)(wchar_t *pwszDst, const wchar_t *pwszSrc);
84int RT_NOCRT(wcsicmp)(const wchar_t *pwsz1, const wchar_t *pwsz2);
85size_t RT_NOCRT(wcstombs)(char *pszDst, const wchar_t *pszSrc, size_t cbDst);
86
87
88/* Underscored versions for MSC compatibility (mesa #defines regular to _regular
89 a lot, which is why we really need these prototypes). */
90void *RT_NOCRT(_memchr)(const void *pv, int ch, size_t cb);
91int RT_NOCRT(_memcmp)(const void *pv1, const void *pv2, size_t cb);
92void *RT_NOCRT(_memcpy)(void *pvDst, const void *pvSrc, size_t cb);
93void *RT_NOCRT(_mempcpy)(void *pvDst, const void *pvSrc, size_t cb);
94void *RT_NOCRT(_memrchr)(const void *pv, int ch, size_t cb);
95void *RT_NOCRT(_memmove)(void *pvDst, const void *pvSrc, size_t cb);
96void *RT_NOCRT(_memset)(void *pvDst, int ch, size_t cb);
97
98char *RT_NOCRT(_strcat)(char *pszDst, const char *pszSrc);
99char *RT_NOCRT(_strncat)(char *pszDst, const char *pszSrc, size_t cch);
100char *RT_NOCRT(_strchr)(const char *psz, int ch);
101char *RT_NOCRT(_strrchr)(const char *psz, int ch);
102int RT_NOCRT(_strcmp)(const char *psz1, const char *psz2);
103int RT_NOCRT(_strncmp)(const char *psz1, const char *psz2, size_t cch);
104int RT_NOCRT(_stricmp)(const char *psz1, const char *psz2);
105int RT_NOCRT(_strnicmp)(const char *psz1, const char *psz2, size_t cch);
106int RT_NOCRT(_strcmpcase)(const char *psz1, const char *psz2, size_t cch);
107int RT_NOCRT(_strcoll)(const char *psz1, const char *psz2);
108char *RT_NOCRT(_strcpy)(char *pszDst, const char *pszSrc);
109char *RT_NOCRT(_strncpy)(char *pszDst, const char *pszSrc, size_t cch);
110char *RT_NOCRT(_strcat)(char *pszDst, const char *pszSrc);
111char *RT_NOCRT(_strncat)(char *pszDst, const char *pszSrc, size_t cch);
112size_t RT_NOCRT(_strlen)(const char *psz);
113size_t RT_NOCRT(_strnlen)(const char *psz, size_t cch);
114size_t RT_NOCRT(_strspn)(const char *psz, const char *pszBreakChars);
115size_t RT_NOCRT(_strcspn)(const char *psz, const char *pszBreakChars);
116char *RT_NOCRT(_strpbrk)(const char *psz, const char *pszBreakChars);
117char *RT_NOCRT(_strstr)(const char *psz, const char *pszSub);
118char *RT_NOCRT(_strtok)(char *psz, const char *pszDelim);
119char *RT_NOCRT(_strtok_r)(char *psz, const char *pszDelim, char **ppszSave);
120#if 0 /* C++11: */
121char *RT_NOCRT(_strtok_s)(char *psz, /*rsize_t*/ size_t cchMax, const char *pszDelim, char **ppszSave);
122#else /* Microsoft: */
123char *RT_NOCRT(_strtok_s)(char *psz, const char *pszDelim, char **ppszSave);
124#endif
125size_t RT_NOCRT(_strxfrm)(char *pszDst, const char *pszSrc, size_t cch);
126
127size_t RT_NOCRT(_wcslen)(const wchar_t *pwsz);
128wchar_t *RT_NOCRT(_wcscat)(wchar_t *pwszDst, const wchar_t *pwszSrc);
129wchar_t *RT_NOCRT(_wcschr)(const wchar_t *pwsz, wchar_t wc);
130wchar_t *RT_NOCRT(_wcscpy)(wchar_t *pwszDst, const wchar_t *pwszSrc);
131int RT_NOCRT(_wcsicmp)(const wchar_t *pwsz1, const wchar_t *pwsz2);
132size_t RT_NOCRT(_wcstombs)(char *pszDst, const wchar_t *pszSrc, size_t cbDst);
133
134
135#if !defined(RT_WITHOUT_NOCRT_WRAPPERS) && !defined(RT_WITHOUT_NOCRT_WRAPPER_ALIASES)
136# define memchr RT_NOCRT(memchr)
137# define memcmp RT_NOCRT(memcmp)
138# define memcpy RT_NOCRT(memcpy)
139# define mempcpy RT_NOCRT(mempcpy)
140# define memrchr RT_NOCRT(memrchr)
141# define memmove RT_NOCRT(memmove)
142# define memset RT_NOCRT(memset)
143
144# define strcat RT_NOCRT(strcat)
145# define strncat RT_NOCRT(strncat)
146# define strchr RT_NOCRT(strchr)
147# define strrchr RT_NOCRT(strrchr)
148# define strcmp RT_NOCRT(strcmp)
149# define strncmp RT_NOCRT(strncmp)
150# define stricmp RT_NOCRT(stricmp)
151# define strnicmp RT_NOCRT(strnicmp)
152# define strcmpcase RT_NOCRT(strcmpcase)
153# define strcoll RT_NOCRT(strcoll)
154# define strcpy RT_NOCRT(strcpy)
155# define strncpy RT_NOCRT(strncpy)
156# define strcat RT_NOCRT(strcat)
157# define strncat RT_NOCRT(strncat)
158# define strlen RT_NOCRT(strlen)
159# define strnlen RT_NOCRT(strnlen)
160# define strspn RT_NOCRT(strspn)
161# define strcspn RT_NOCRT(strcspn)
162# define strpbrk RT_NOCRT(strpbrk)
163# define strstr RT_NOCRT(strstr)
164# define strtok RT_NOCRT(strtok)
165# define strtok_r RT_NOCRT(strtok_r)
166# define strtok_s RT_NOCRT(strtok_s)
167# define strxfrm RT_NOCRT(strxfrm)
168
169# define wcslen RT_NOCRT(wcslen)
170# define wcscat RT_NOCRT(wcscat)
171# define wcschr RT_NOCRT(wcschr)
172# define wcscpy RT_NOCRT(wcscpy)
173# define wcsicmp RT_NOCRT(wcsicmp)
174# define wcstombs RT_NOCRT(wcstombs)
175
176/* Underscored: */
177# define _memchr RT_NOCRT(memchr)
178# define _memcmp RT_NOCRT(memcmp)
179# define _memcpy RT_NOCRT(memcpy)
180# define _mempcpy RT_NOCRT(mempcpy)
181# define _memrchr RT_NOCRT(memrchr)
182# define _memmove RT_NOCRT(memmove)
183# define _memset RT_NOCRT(memset)
184
185# define _strcat RT_NOCRT(strcat)
186# define _strncat RT_NOCRT(strncat)
187# define _strchr RT_NOCRT(strchr)
188# define _strrchr RT_NOCRT(strrchr)
189# define _strcmp RT_NOCRT(strcmp)
190# define _strncmp RT_NOCRT(strncmp)
191# define _stricmp RT_NOCRT(stricmp)
192# define _strnicmp RT_NOCRT(strnicmp)
193# define _strcmpcase RT_NOCRT(strcmpcase)
194# define _strcoll RT_NOCRT(strcoll)
195# define _strcpy RT_NOCRT(strcpy)
196# define _strncpy RT_NOCRT(strncpy)
197# define _strcat RT_NOCRT(strcat)
198# define _strncat RT_NOCRT(strncat)
199# define _strlen RT_NOCRT(strlen)
200# define _strnlen RT_NOCRT(strnlen)
201# define _strspn RT_NOCRT(strspn)
202# define _strcspn RT_NOCRT(strcspn)
203# define _strpbrk RT_NOCRT(strpbrk)
204# define _strstr RT_NOCRT(strstr)
205# define _strtok RT_NOCRT(strtok)
206# define _strtok_r RT_NOCRT(strtok_r)
207# define _strtok_s RT_NOCRT(strtok_s)
208# define _strxfrm RT_NOCRT(strxfrm)
209
210# define _wcslen RT_NOCRT(wcslen)
211# define _wcscat RT_NOCRT(wcscat)
212# define _wcschr RT_NOCRT(wcschr)
213# define _wcscpy RT_NOCRT(wcscpy)
214# define _wcsicmp RT_NOCRT(wcsicmp)
215# define _wcstombs RT_NOCRT(wcstombs)
216#endif
217
218
219#ifdef IPRT_NO_CRT_FOR_3RD_PARTY
220/*
221 * Only for external libraries and such.
222 */
223
224const char *RT_NOCRT(strerror)(int iErrNo);
225char *RT_NOCRT(strdup)(const char *pszSrc);
226
227/* Underscored: */
228const char *RT_NOCRT(_strerror)(int iErrNo);
229char *RT_NOCRT(_strdup)(const char *pszSrc);
230
231# if !defined(RT_WITHOUT_NOCRT_WRAPPERS) && !defined(RT_WITHOUT_NOCRT_WRAPPER_ALIASES)
232# define strerror RT_NOCRT(strerror)
233# define strdup RT_NOCRT(strdup)
234
235/* Underscored: */
236# define _strerror RT_NOCRT(strerror)
237# define _strdup RT_NOCRT(strdup)
238# endif
239
240#endif /* IPRT_NO_CRT_FOR_3RD_PARTY */
241
242RT_C_DECLS_END
243
244#endif /* !IPRT_INCLUDED_nocrt_string_h */
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette