VirtualBox

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

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

include/iprt/nocrt: Some early & incomplete ostream code. bugref:10261

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id Revision
File size: 11.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);
79long RT_NOCRT(strtol)(const char *pszDst, char **ppszNext, int iBase);
80long long RT_NOCRT(strtoll)(const char *pszDst, char **ppszNext, int iBase);
81unsigned long RT_NOCRT(strtoul)(const char *pszDst, char **ppszNext, int iBase);
82unsigned long long RT_NOCRT(strtoull)(const char *pszDst, char **ppszNext, int iBase);
83
84size_t RT_NOCRT(wcslen)(const wchar_t *pwsz);
85wchar_t *RT_NOCRT(wcscat)(wchar_t *pwszDst, const wchar_t *pwszSrc);
86wchar_t *RT_NOCRT(wcschr)(const wchar_t *pwszDst, wchar_t wc);
87wchar_t *RT_NOCRT(wcscpy)(wchar_t *pwszDst, const wchar_t *pwszSrc);
88int RT_NOCRT(wcsicmp)(const wchar_t *pwsz1, const wchar_t *pwsz2);
89size_t RT_NOCRT(wcstombs)(char *pszDst, const wchar_t *pszSrc, size_t cbDst);
90
91
92/* Underscored versions for MSC compatibility (mesa #defines regular to _regular
93 a lot, which is why we really need these prototypes). */
94void *RT_NOCRT(_memchr)(const void *pv, int ch, size_t cb);
95int RT_NOCRT(_memcmp)(const void *pv1, const void *pv2, size_t cb);
96void *RT_NOCRT(_memcpy)(void *pvDst, const void *pvSrc, size_t cb);
97void *RT_NOCRT(_mempcpy)(void *pvDst, const void *pvSrc, size_t cb);
98void *RT_NOCRT(_memrchr)(const void *pv, int ch, size_t cb);
99void *RT_NOCRT(_memmove)(void *pvDst, const void *pvSrc, size_t cb);
100void *RT_NOCRT(_memset)(void *pvDst, int ch, size_t cb);
101
102char *RT_NOCRT(_strcat)(char *pszDst, const char *pszSrc);
103char *RT_NOCRT(_strncat)(char *pszDst, const char *pszSrc, size_t cch);
104char *RT_NOCRT(_strchr)(const char *psz, int ch);
105char *RT_NOCRT(_strrchr)(const char *psz, int ch);
106int RT_NOCRT(_strcmp)(const char *psz1, const char *psz2);
107int RT_NOCRT(_strncmp)(const char *psz1, const char *psz2, size_t cch);
108int RT_NOCRT(_stricmp)(const char *psz1, const char *psz2);
109int RT_NOCRT(_strnicmp)(const char *psz1, const char *psz2, size_t cch);
110int RT_NOCRT(_strcmpcase)(const char *psz1, const char *psz2, size_t cch);
111int RT_NOCRT(_strcoll)(const char *psz1, const char *psz2);
112char *RT_NOCRT(_strcpy)(char *pszDst, const char *pszSrc);
113char *RT_NOCRT(_strncpy)(char *pszDst, const char *pszSrc, size_t cch);
114char *RT_NOCRT(_strcat)(char *pszDst, const char *pszSrc);
115char *RT_NOCRT(_strncat)(char *pszDst, const char *pszSrc, size_t cch);
116size_t RT_NOCRT(_strlen)(const char *psz);
117size_t RT_NOCRT(_strnlen)(const char *psz, size_t cch);
118size_t RT_NOCRT(_strspn)(const char *psz, const char *pszBreakChars);
119size_t RT_NOCRT(_strcspn)(const char *psz, const char *pszBreakChars);
120char *RT_NOCRT(_strpbrk)(const char *psz, const char *pszBreakChars);
121char *RT_NOCRT(_strstr)(const char *psz, const char *pszSub);
122char *RT_NOCRT(_strtok)(char *psz, const char *pszDelim);
123char *RT_NOCRT(_strtok_r)(char *psz, const char *pszDelim, char **ppszSave);
124#if 0 /* C++11: */
125char *RT_NOCRT(_strtok_s)(char *psz, /*rsize_t*/ size_t cchMax, const char *pszDelim, char **ppszSave);
126#else /* Microsoft: */
127char *RT_NOCRT(_strtok_s)(char *psz, const char *pszDelim, char **ppszSave);
128#endif
129size_t RT_NOCRT(_strxfrm)(char *pszDst, const char *pszSrc, size_t cch);
130long RT_NOCRT(_strtol)(const char *pszDst, char **ppszNext, int iBase);
131long long RT_NOCRT(_strtoll)(const char *pszDst, char **ppszNext, int iBase);
132unsigned long RT_NOCRT(_strtoul)(const char *pszDst, char **ppszNext, int iBase);
133unsigned long long RT_NOCRT(_strtoull)(const char *pszDst, char **ppszNext, int iBase);
134
135size_t RT_NOCRT(_wcslen)(const wchar_t *pwsz);
136wchar_t *RT_NOCRT(_wcscat)(wchar_t *pwszDst, const wchar_t *pwszSrc);
137wchar_t *RT_NOCRT(_wcschr)(const wchar_t *pwszDst, wchar_t wc);
138wchar_t *RT_NOCRT(_wcscpy)(wchar_t *pwszDst, const wchar_t *pwszSrc);
139int RT_NOCRT(_wcsicmp)(const wchar_t *pwsz1, const wchar_t *pwsz2);
140size_t RT_NOCRT(_wcstombs)(char *pszDst, const wchar_t *pszSrc, size_t cbDst);
141
142
143#if !defined(RT_WITHOUT_NOCRT_WRAPPERS) && !defined(RT_WITHOUT_NOCRT_WRAPPER_ALIASES)
144# define memchr RT_NOCRT(memchr)
145# define memcmp RT_NOCRT(memcmp)
146# define memcpy RT_NOCRT(memcpy)
147# define mempcpy RT_NOCRT(mempcpy)
148# define memrchr RT_NOCRT(memrchr)
149# define memmove RT_NOCRT(memmove)
150# define memset RT_NOCRT(memset)
151
152# define strcat RT_NOCRT(strcat)
153# define strncat RT_NOCRT(strncat)
154# define strchr RT_NOCRT(strchr)
155# define strrchr RT_NOCRT(strrchr)
156# define strcmp RT_NOCRT(strcmp)
157# define strncmp RT_NOCRT(strncmp)
158# define stricmp RT_NOCRT(stricmp)
159# define strnicmp RT_NOCRT(strnicmp)
160# define strcmpcase RT_NOCRT(strcmpcase)
161# define strcoll RT_NOCRT(strcoll)
162# define strcpy RT_NOCRT(strcpy)
163# define strncpy RT_NOCRT(strncpy)
164# define strcat RT_NOCRT(strcat)
165# define strncat RT_NOCRT(strncat)
166# define strlen RT_NOCRT(strlen)
167# define strnlen RT_NOCRT(strnlen)
168# define strspn RT_NOCRT(strspn)
169# define strcspn RT_NOCRT(strcspn)
170# define strpbrk RT_NOCRT(strpbrk)
171# define strstr RT_NOCRT(strstr)
172# define strtok RT_NOCRT(strtok)
173# define strtok_r RT_NOCRT(strtok_r)
174# define strtok_s RT_NOCRT(strtok_s)
175# define strxfrm RT_NOCRT(strxfrm)
176# define strtol RT_NOCRT(strtol)
177# define strtoll RT_NOCRT(strtoll)
178# define strtoul RT_NOCRT(strtoul)
179# define strtoull RT_NOCRT(strtoull)
180
181# define wcslen RT_NOCRT(wcslen)
182# define wcscat RT_NOCRT(wcscat)
183# define wcschr RT_NOCRT(wcschr)
184# define wcscpy RT_NOCRT(wcscpy)
185# define wcsicmp RT_NOCRT(wcsicmp)
186# define wcstombs RT_NOCRT(wcstombs)
187
188/* Underscored: */
189# define _memchr RT_NOCRT(memchr)
190# define _memcmp RT_NOCRT(memcmp)
191# define _memcpy RT_NOCRT(memcpy)
192# define _mempcpy RT_NOCRT(mempcpy)
193# define _memrchr RT_NOCRT(memrchr)
194# define _memmove RT_NOCRT(memmove)
195# define _memset RT_NOCRT(memset)
196
197# define _strcat RT_NOCRT(strcat)
198# define _strncat RT_NOCRT(strncat)
199# define _strchr RT_NOCRT(strchr)
200# define _strrchr RT_NOCRT(strrchr)
201# define _strcmp RT_NOCRT(strcmp)
202# define _strncmp RT_NOCRT(strncmp)
203# define _stricmp RT_NOCRT(stricmp)
204# define _strnicmp RT_NOCRT(strnicmp)
205# define _strcmpcase RT_NOCRT(strcmpcase)
206# define _strcoll RT_NOCRT(strcoll)
207# define _strcpy RT_NOCRT(strcpy)
208# define _strncpy RT_NOCRT(strncpy)
209# define _strcat RT_NOCRT(strcat)
210# define _strncat RT_NOCRT(strncat)
211# define _strlen RT_NOCRT(strlen)
212# define _strnlen RT_NOCRT(strnlen)
213# define _strspn RT_NOCRT(strspn)
214# define _strcspn RT_NOCRT(strcspn)
215# define _strpbrk RT_NOCRT(strpbrk)
216# define _strstr RT_NOCRT(strstr)
217# define _strtok RT_NOCRT(strtok)
218# define _strtok_r RT_NOCRT(strtok_r)
219# define _strtok_s RT_NOCRT(strtok_s)
220# define _strxfrm RT_NOCRT(strxfrm)
221# define _strtol RT_NOCRT(strtol)
222# define _strtoll RT_NOCRT(strtoll)
223# define _strtoul RT_NOCRT(strtoul)
224# define _strtoull RT_NOCRT(strtoull)
225
226# define _wcslen RT_NOCRT(wcslen)
227# define _wcscat RT_NOCRT(wcscat)
228# define _wcschr RT_NOCRT(wcschr)
229# define _wcscpy RT_NOCRT(wcscpy)
230# define _wcsicmp RT_NOCRT(wcsicmp)
231# define _wcstombs RT_NOCRT(wcstombs)
232#endif
233
234
235#ifdef IPRT_NO_CRT_FOR_3RD_PARTY
236/*
237 * Only for external libraries and such.
238 */
239
240const char *RT_NOCRT(strerror)(int iErrNo);
241char *RT_NOCRT(strdup)(const char *pszSrc);
242
243/* Underscored: */
244const char *RT_NOCRT(_strerror)(int iErrNo);
245char *RT_NOCRT(_strdup)(const char *pszSrc);
246
247# if !defined(RT_WITHOUT_NOCRT_WRAPPERS) && !defined(RT_WITHOUT_NOCRT_WRAPPER_ALIASES)
248# define strerror RT_NOCRT(strerror)
249# define strdup RT_NOCRT(strdup)
250
251/* Underscored: */
252# define _strerror RT_NOCRT(strerror)
253# define _strdup RT_NOCRT(strdup)
254# endif
255
256#endif /* IPRT_NO_CRT_FOR_3RD_PARTY */
257
258RT_C_DECLS_END
259
260#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