ReactOS 0.4.15-dev-7934-g1dc8d80
_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// Always build multithreaded code
306#define _STLP_THREADS
307
308#if 0
309
310#ifdef _M_AMD64
311#ifdef __cplusplus
312extern "C" {
313#endif
314 void * _InterlockedExchangePointer(void * volatile * Target, void * Value);
318#ifdef __cplusplus
319}
320#endif
321
322#ifdef _BUILD_STLPORT
323#define InterlockedPopEntrySList(list) reinterpret_cast<_STLP_atomic_freelist::item*>(InterlockedPopEntrySList(list))
324#define InterlockedFlushSList(list) reinterpret_cast<_STLP_atomic_freelist::item*>(InterlockedFlushSList(list))
325#endif
326
327#undef __cdecl__
328#define __cdecl__
329#endif /* _M_AMD64 */
330
331#endif
332
333// Include stlport windows specifics
334#include "_windows.h"
335
336#endif
#define _STLP_IMPORT_DECLSPEC
Definition: _reactos.h:42
void * _InterlockedExchangePointer(_Interlocked_operand_ void *volatile *_Target, void *_Value)
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
Definition: wdfregistry.h:413
_In_ WDFIOTARGET Target
Definition: wdfrequest.h:306
#define InterlockedPushEntrySList(SListHead, SListEntry)
Definition: rtlfuncs.h:3389
#define InterlockedFlushSList(SListHead)
Definition: rtlfuncs.h:3395
#define InterlockedPopEntrySList(SListHead)
Definition: rtlfuncs.h:3392