ReactOS  0.4.14-dev-1007-g90d795b
_reactos.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2010
3  * Jérôme Gardou
4  *
5  *
6  * This material is provided "as is", with absolutely no warranty expressed
7  * or implied. Any use is at your own risk.
8  *
9  * This file is in public domain.
10  */
11 
12 /*
13  * Purpose of this file :
14  *
15  * A list of COMPILER-SPECIFIC portion of STLport settings.
16  * This file is provided to help in manual configuration
17  * of STLport. This file is being included by stlcomp.h
18  * when STLport is unable to identify your compiler.
19  * Please remove the error diagnostic below before adjusting
20  * macros.
21  *
22  */
23 #ifndef _STLP_REACTOS_H
24 #define _STLP_REACTOS_H
25 
26 #if !defined (_STLP_COMPILER)
27 # ifdef _MSC_VER
28 # define _STLP_COMPILER "Microsoft Visual Studio C++"
29 # define _STLP_MSVC _MSC_VER
30 # define _STLP_MSVC_LIB _MSC_VER
31 # elif defined __MINGW32__
32 # define _STLP_COMPILER "gcc"
33 # else
34 # error "Unrecognized compiler for reactos!"
35 # endif
36 #endif
37 
38 // We are WIN32
39 #define _STLP_WIN32
40 
41 // We declspec
42 #define _STLP_IMPORT_DECLSPEC __declspec(dllimport)
43 #define _STLP_EXPORT_DECLSPEC __declspec(dllexport)
44 
45 //==========================================================
46 
47 // the values choosen here as defaults try to give
48 // maximum functionality on the most conservative settings
49 
50 // Mostly correct guess, change it for Alpha (and other environments
51 // that has 64-bit "long")
52 # define _STLP_UINT32_T unsigned __int32
53 
54 // Disables wchar_t functionality
55 // # define _STLP_NO_WCHAR_T 1
56 
57 // Define if wchar_t is not an intrinsic type, and is actually a typedef to unsigned short.
58 // # define _STLP_WCHAR_T_IS_USHORT 1
59 
60 // Uncomment if long long is available
61 # define _STLP_LONG_LONG __int64
62 // Uncomment if long double is not available
63 // # define _STLP_NO_LONG_DOUBLE 1
64 
65 // Uncomment this if your compiler does not support "typename" keyword
66 // # define _STLP_NEED_TYPENAME 1
67 
68 // Uncomment this if your compiler does not support "mutable" keyword
69 // # define _STLP_NEED_MUTABLE 1
70 
71 // Uncomment this if your compiler does not support "explicit" keyword
72 // # define _STLP_NEED_EXPLICIT 1
73 
74 // Uncomment if new-style-casts like const_cast<> are not available
75 // # define _STLP_NO_NEW_STYLE_CASTS 1
76 
77 // Uncomment this if your compiler does not have "bool" type
78 // # define _STLP_NO_BOOL 1
79 
80 // Uncomment this if your compiler does not have "bool" type, but has "bool" keyword reserved
81 // # define _STLP_DONT_USE_BOOL_TYPEDEF 1
82 
83 // Uncomment this if your compiler does not have "bool" type, but defines "bool" in <yvals.h>
84 // # define _STLP_YVALS_H 1
85 
86 // Uncomment this if your compiler has limited or no default template arguments for classes
87 // # define _STLP_LIMITED_DEFAULT_TEMPLATES 1
88 
89 // Uncomment this if your compiler support only complete (not dependent on other parameters)
90 // types as default parameters for class templates
91 // # define _STLP_DEFAULT_TYPE_PARAM 1
92 
93 // Uncomment this if your compiler do not support default parameters in template class methods
94 // # define _STLP_DONT_SUP_DFLT_PARAM 1
95 
96 // Uncomment this if your compiler has problem with not-type
97 // default template parameters
98 // # define _STLP_NO_DEFAULT_NON_TYPE_PARAM 1
99 
100 // Define if compiler has
101 // trouble with functions getting non-type-parameterized classes as parameters
102 // # define _STLP_NON_TYPE_TMPL_PARAM_BUG 1
103 
104 // Uncomment this if your compiler does not support namespaces
105 // # define _STLP_HAS_NO_NAMESPACES 1
106 
107 // Uncomment if "using" keyword does not work with template types
108 // # define _STLP_BROKEN_USING_DIRECTIVE 1
109 
110 // Uncomment this if your compiler does not support exceptions
111 // # define _STLP_HAS_NO_EXCEPTIONS 1
112 
113 // Uncomment this when you are able to detect that the user do not
114 // want to use the exceptions feature.
115 // # define _STLP_DONT_USE_EXCEPTIONS 1
116 
117 // Uncomment this if your compiler does not support exception specifications
118 // # define _STLP_NO_EXCEPTION_SPEC
119 
120 // Define this if your compiler requires return statement after throw()
121 // # define _STLP_THROW_RETURN_BUG 1
122 
123 // Define this if your compiler do not support return of void
124 // # define _STLP_DONT_RETURN_VOID 1
125 
126 // Header <new> that comes with the compiler
127 // does not define bad_alloc exception
128 // # define _STLP_NO_BAD_ALLOC 1
129 
130 // Define this if your compiler do not throw bad_alloc from the new operator
131 // # define _STLP_NEW_DONT_THROW_BAD_ALLOC 1
132 
133 // Define this if your compiler has no rtti support or if it has been disabled
134 // # define _STLP_NO_RTTI 1
135 
136 // Define this if there is no native type_info definition
137 # define _STLP_NO_TYPEINFO 1
138 
139 // Uncomment if member template methods are not available
140 // # define _STLP_NO_MEMBER_TEMPLATES 1
141 
142 // Uncomment if member template classes are not available
143 // # define _STLP_NO_MEMBER_TEMPLATE_CLASSES 1
144 
145 // Uncomment if your compiler do not support the std::allocator rebind technique
146 // This is a special case of bad member template classes support, it is automatically
147 // defined if _STLP_NO_MEMBER_TEMPLATE_CLASSES is defined.
148 // # define _STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE 1
149 
150 // Uncomment if no "template" keyword should be used with member template classes
151 // # define _STLP_NO_MEMBER_TEMPLATE_KEYWORD 1
152 
153 // Compiler does not accept friend declaration qualified with namespace name.
154 // # define _STLP_NO_QUALIFIED_FRIENDS 1
155 
156 // Uncomment if partial specialization is not available
157 // # define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1
158 
159 // Define if class being partially specialized require full name (template parameters)
160 // of itself for method declarations
161 // # define _STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS
162 
163 // Compiler has problem with qualified specializations (cont int, volatile int...)
164 // # define _STLP_QUALIFIED_SPECIALIZATION_BUG
165 
166 // Compiler has problems specializing members of partially
167 // specialized class
168 // # define _STLP_MEMBER_SPECIALIZATION_BUG
169 
170 // Uncomment if partial order of template functions is not available
171 // # define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1
172 
173 // Uncomment if specialization of methods is not allowed
174 // # define _STLP_NO_METHOD_SPECIALIZATION 1
175 
176 // Uncomment if full specialization does not use partial spec. syntax : template <> struct ....
177 // # define _STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX 1
178 
179 // Uncomment if compiler does not support explicit template arguments for functions
180 // # define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS
181 
182 // Uncomment this if your compiler can't inline while(), for()
183 // # define _STLP_LOOP_INLINE_PROBLEMS 1
184 
185 // Define if the compiler fails to match a template function argument of base
186 // # define _STLP_BASE_MATCH_BUG 1
187 
188 // Define if the compiler fails to match a template function argument of base
189 // (non-template)
190 //# define _STLP_NONTEMPL_BASE_MATCH_BUG 1
191 
192 // Define if the compiler rejects outline method definition
193 // explicitly taking nested types/typedefs
194 // # define _STLP_NESTED_TYPE_PARAM_BUG 1
195 
196 // Compiler requires typename keyword on outline method definition
197 // explicitly taking nested types/typedefs
198 // #define _STLP_TYPENAME_ON_RETURN_TYPE
199 
200 // Define if the baseclass typedefs not visible from outside
201 // # define _STLP_BASE_TYPEDEF_OUTSIDE_BUG 1
202 
203 // if your compiler have serious problems with typedefs, try this one
204 // # define _STLP_BASE_TYPEDEF_BUG 1
205 
206 // Uncomment if getting errors compiling mem_fun* adaptors
207 // # define _STLP_MEMBER_POINTER_PARAM_BUG 1
208 
209 // Uncomment if the compiler can't handle a constant-initializer in the
210 // declaration of a static const data member of integer type.
211 // (See section 9.4.2, paragraph 4, of the C++ standard.)
212 // # define _STLP_STATIC_CONST_INIT_BUG
213 
214 // Uncomment to indicate that the compiler do not like static constant
215 // definition.
216 // Meaningfull only if _STLP_STATIC_CONST_INIT_BUG is not defined.
217 # define _STLP_NO_STATIC_CONST_DEFINITION
218 
219 // Define if default constructor for builtin integer type fails to initialize it to 0
220 // In expression like new(&char) char():
221 //# define _STLP_DEF_CONST_PLCT_NEW_BUG 1
222 // In default function parameter like _M_method(_Tp __x = _Tp())
223 //# define _STLP_DEF_CONST_DEF_PARAM_BUG 1
224 
225 // Defined if constructor
226 // required to explicitly call member's default constructors for const objects
227 // # define _STLP_CONST_CONSTRUCTOR_BUG 1
228 
229 // Defined if the compiler has trouble calling POD-types constructors/destructors
230 // # define _STLP_TRIVIAL_CONSTRUCTOR_BUG 1
231 // # define _STLP_TRIVIAL_DESTRUCTOR_BUG 1
232 
233 // Define if having problems specializing maps/sets with
234 // key type being const
235 // # define _STLP_MULTI_CONST_TEMPLATE_ARG_BUG
236 
237 // Uncomment this to disable -> operators on all iterators
238 // # define _STLP_NO_ARROW_OPERATOR 1
239 
240 // Uncomment this to disble at() member functions for containers
241 // # define _STLP_NO_AT_MEMBER_FUNCTION 1
242 
243 // Define this if compiler lacks <exception> header
244 // # define _STLP_NO_EXCEPTION_HEADER 1
245 
246 // Uncomment this if your C library has lrand48() function
247 // # define _STLP_RAND48 1
248 
249 // Uncomment if native new-style C library headers lile <cstddef>, etc are not available.
250 // # define _STLP_HAS_NO_NEW_C_HEADERS 1
251 
252 // uncomment if new-style headers <new> is available
253 // # define _STLP_HAS_NEW_NEW_HEADER 1
254 
255 // uncomment this if <iostream> and other STD headers put their stuff in ::namespace,
256 // not std::
257 // # define _STLP_VENDOR_GLOBAL_STD
258 
259 // uncomment this if <cstdio> and the like put stuff in ::namespace,
260 // not std::
261 // # define _STLP_VENDOR_GLOBAL_CSTD
262 
263 // uncomment this if your compiler consider as ambiguous a function imported within
264 // the stlport namespace and called without scope (:: or std::)
265 // # define _STLP_NO_USING_FOR_GLOBAL_FUNCTIONS 1
266 
267 // uncomment this if your compiler define all the C math functions C++ additional
268 // overloads in ::namespace and not only in std::.
269 // # define _STLP_HAS_GLOBAL_C_MATH_FUNCTIONS 1
270 
271 #define MKSTRING_(a) #a
272 #define MKSTRING(a) MKSTRING_(a)
273 #define _STLP_NATIVE_C_HEADER(header) MKSTRING(NATIVE_C_INCLUDE/header)
274 #define _STLP_NATIVE_CPP_C_HEADER(header) MKSTRING(NATIVE_CPP_INCLUDE/header)
275 #define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) MKSTRING(NATIVE_CPP_INCLUDE/header)
276 
277 
278 // This macro constructs header path from directory and name.
279 // You may change it if your compiler does not understand "/".
280 
281 // This macro constructs native include header path from include path and name.
282 // You may have do define it if experimenting problems with preprocessor
283 // # define _STLP_NATIVE_HEADER(header) _STLP_MAKE_HEADER(_STLP_NATIVE_INCLUDE_PATH,header)
284 
285 // Same for C headers
286 // #define _STLP_NATIVE_C_HEADER(header)
287 
288 //==========================================================
289 
290 // We have no llabs, lldiv, etc.
291 #define _STLP_NO_VENDOR_STDLIB_L
292 
293 // new_handler is in global namespace
294 # define _STLP_GLOBAL_NEW_HANDLER
295 
296 // terminate function is in global namespace
297 #define _STLP_VENDOR_TERMINATE_STD
298 
299 // We don't want stlport to use its own namespace
300 #define _STLP_NO_OWN_NAMESPACE
301 
302 // Calling convention
303 #define _STLP_CALL __cdecl
304 
305 #if 0
306 
307 #ifdef _M_AMD64
308 #ifdef __cplusplus
309 extern "C" {
310 #endif
311  void * _InterlockedExchangePointer(void * volatile * Target, void * Value);
315 #ifdef __cplusplus
316 }
317 #endif
318 
319 #ifdef _BUILD_STLPORT
320 #define InterlockedPopEntrySList(list) reinterpret_cast<_STLP_atomic_freelist::item*>(InterlockedPopEntrySList(list))
321 #define InterlockedFlushSList(list) reinterpret_cast<_STLP_atomic_freelist::item*>(InterlockedFlushSList(list))
322 #endif
323 
324 #undef __cdecl__
325 #define __cdecl__
326 #endif /* _M_AMD64 */
327 
328 #endif
329 
330 // Include stlport windows specifics
331 #include "_windows.h"
332 
333 #endif
_In_opt_ ULONG _Out_ PULONG Value
Definition: rtlfuncs.h:2374
PSLIST_ENTRY WINAPI InterlockedPopEntrySList(PSLIST_HEADER ListHead)
Definition: interlocked.c:55
#define InterlockedFlushSList(SListHead)
Definition: rtlfuncs.h:3397
_Must_inspect_result_ typedef _In_ ULONG _In_ BOOLEAN Target
Definition: iotypes.h:1068
void * _InterlockedExchangePointer(_Interlocked_operand_ void *volatile *_Target, void *_Value)
NTKERNELAPI PSLIST_ENTRY FASTCALL InterlockedPushEntrySList(IN PSLIST_HEADER ListHead, IN PSLIST_ENTRY ListEntry)
Definition: interlocked.c:82
#define _STLP_IMPORT_DECLSPEC
Definition: _reactos.h:42