ReactOS 0.4.17-dev-116-ga4b6fe9
corecrt.h
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS CRT headers
3 * LICENSE: MIT (https://spdx.org/licenses/MIT)
4 * PURPOSE: Declarations used throughout the CoreCRT library.
5 * COPYRIGHT: Copyright (c) Microsoft Corporation. All rights reserved.
6 */
7
8#pragma once
9
10#include <crtdefs.h>
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
16#ifndef _CRTRESTRICT
17#define _CRTRESTRICT
18#endif
19
20#ifndef _CRT_SECURE_CPP_NOTHROW
21 #define _CRT_SECURE_CPP_NOTHROW throw()
22#endif
23
24#ifndef DEFINED_localeinfo_struct
25typedef struct localeinfo_struct
26{
30#define DEFINED_localeinfo_struct 1
31#endif
32
33#ifndef RC_INVOKED
34 #if defined __cplusplus && _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES
35
36 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(_ReturnType, _FuncName, _DstType, _Dst) \
37 extern "C++" \
38 { \
39 template <size_t _Size> \
40 inline \
41 _ReturnType __CRTDECL _FuncName(_DstType (&_Dst)[_Size]) _CRT_SECURE_CPP_NOTHROW \
42 { \
43 return _FuncName(_Dst, _Size); \
44 } \
45 }
46
47 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1) \
48 extern "C++" \
49 { \
50 template <size_t _Size> \
51 inline \
52 _ReturnType __CRTDECL _FuncName(_DstType (&_Dst)[_Size], _TType1 _TArg1) _CRT_SECURE_CPP_NOTHROW \
53 { \
54 return _FuncName(_Dst, _Size, _TArg1); \
55 } \
56 }
57
58 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \
59 extern "C++" \
60 { \
61 template <size_t _Size> \
62 inline \
63 _ReturnType __CRTDECL _FuncName(_DstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2) _CRT_SECURE_CPP_NOTHROW \
64 { \
65 return _FuncName(_Dst, _Size, _TArg1, _TArg2); \
66 } \
67 }
68
69 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) \
70 extern "C++" \
71 { \
72 template <size_t _Size> \
73 inline \
74 _ReturnType __CRTDECL _FuncName(_DstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3) _CRT_SECURE_CPP_NOTHROW \
75 { \
76 return _FuncName(_Dst, _Size, _TArg1, _TArg2, _TArg3); \
77 } \
78 }
79
80 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_4(_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3, _TType4, _TArg4) \
81 extern "C++" \
82 { \
83 template <size_t _Size> \
84 inline \
85 _ReturnType __CRTDECL _FuncName(_DstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3, _TType4 _TArg4) _CRT_SECURE_CPP_NOTHROW \
86 { \
87 return _FuncName(_Dst, _Size, _TArg1, _TArg2, _TArg3, _TArg4); \
88 } \
89 }
90
91 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_1(_ReturnType, _FuncName, _HType1, _HArg1, _DstType, _Dst, _TType1, _TArg1) \
92 extern "C++" \
93 { \
94 template <size_t _Size> \
95 inline \
96 _ReturnType __CRTDECL _FuncName(_HType1 _HArg1, _DstType (&_Dst)[_Size], _TType1 _TArg1) _CRT_SECURE_CPP_NOTHROW \
97 { \
98 return _FuncName(_HArg1, _Dst, _Size, _TArg1); \
99 } \
100 }
101
102 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_2(_ReturnType, _FuncName, _HType1, _HArg1, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \
103 extern "C++" \
104 { \
105 template <size_t _Size> \
106 inline \
107 _ReturnType __CRTDECL _FuncName(_HType1 _HArg1, _DstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2) _CRT_SECURE_CPP_NOTHROW \
108 { \
109 return _FuncName(_HArg1, _Dst, _Size, _TArg1, _TArg2); \
110 } \
111 }
112
113 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_3(_ReturnType, _FuncName, _HType1, _HArg1, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) \
114 extern "C++" \
115 { \
116 template <size_t _Size> \
117 inline \
118 _ReturnType __CRTDECL _FuncName(_HType1 _HArg1, _DstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3) _CRT_SECURE_CPP_NOTHROW \
119 { \
120 return _FuncName(_HArg1, _Dst, _Size, _TArg1, _TArg2, _TArg3); \
121 } \
122 }
123
124 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_2_0(_ReturnType, _FuncName, _HType1, _HArg1, _HType2, _HArg2, _DstType, _Dst) \
125 extern "C++" \
126 { \
127 template <size_t _Size> \
128 inline \
129 _ReturnType __CRTDECL _FuncName(_HType1 _HArg1, _HType2 _HArg2, _DstType (&_Dst)[_Size]) _CRT_SECURE_CPP_NOTHROW \
130 { \
131 return _FuncName(_HArg1, _HArg2, _Dst, _Size); \
132 } \
133 }
134
135 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1_ARGLIST(_ReturnType, _FuncName, _VFuncName, _DstType, _Dst, _TType1, _TArg1) \
136 extern "C++" \
137 { \
138 template <size_t _Size> \
139 inline \
140 _ReturnType __CRTDECL _FuncName(_DstType (&_Dst)[_Size], _TType1 _TArg1, ...) _CRT_SECURE_CPP_NOTHROW \
141 { \
142 va_list _ArgList; \
143 __crt_va_start(_ArgList, _TArg1); \
144 return _VFuncName(_Dst, _Size, _TArg1, _ArgList); \
145 } \
146 }
147
148 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_ARGLIST(_ReturnType, _FuncName, _VFuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \
149 extern "C++" \
150 { \
151 template <size_t _Size> \
152 inline \
153 _ReturnType __CRTDECL _FuncName(_DstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2, ...) _CRT_SECURE_CPP_NOTHROW \
154 { \
155 va_list _ArgList; \
156 __crt_va_start(_ArgList, _TArg2); \
157 return _VFuncName(_Dst, _Size, _TArg1, _TArg2, _ArgList); \
158 } \
159 }
160
161 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_SPLITPATH(_ReturnType, _FuncName, _DstType, _Src) \
162 extern "C++" \
163 { \
164 template <size_t _DriveSize, size_t _DirSize, size_t _NameSize, size_t _ExtSize> \
165 inline \
166 _ReturnType __CRTDECL _FuncName( \
167 _In_z_ _DstType const* _Src, \
168 _Post_z_ _DstType (&_Drive)[_DriveSize], \
169 _Post_z_ _DstType (&_Dir)[_DirSize], \
170 _Post_z_ _DstType (&_Name)[_NameSize], \
171 _Post_z_ _DstType (&_Ext)[_ExtSize] \
172 ) _CRT_SECURE_CPP_NOTHROW \
173 { \
174 return _FuncName(_Src, _Drive, _DriveSize, _Dir, _DirSize, _Name, _NameSize, _Ext, _ExtSize); \
175 } \
176 }
177
178 #else // ^^^ _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES ^^^ // vvv !_CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES vvv //
179
180 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(_ReturnType, _FuncName, _DstType, _Dst)
181 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1)
182 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2)
183 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3)
184 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_4(_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3, _TType4, _TArg4)
185 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_1(_ReturnType, _FuncName, _HType1, _HArg1, _DstType, _Dst, _TType1, _TArg1)
186 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_2(_ReturnType, _FuncName, _HType1, _HArg1, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2)
187 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_3(_ReturnType, _FuncName, _HType1, _HArg1, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3)
188 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_2_0(_ReturnType, _FuncName, _HType1, _HArg1, _HType2, _HArg2, _DstType, _Dst)
189 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1_ARGLIST(_ReturnType, _FuncName, _VFuncName, _DstType, _Dst, _TType1, _TArg1)
190 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_ARGLIST(_ReturnType, _FuncName, _VFuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2)
191 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_SPLITPATH(_ReturnType, _FuncName, _DstType, _Src)
192
193 #endif // !_CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES
194#endif
195
196#ifdef __cplusplus
197} // extern "C"
198#endif
struct localeinfo_struct _locale_tstruct
struct localeinfo_struct * _locale_t
Definition: string.c:106
pthreadlocinfo locinfo
Definition: corecrt.h:260
pthreadmbcinfo mbcinfo
Definition: corecrt.h:261