]> git.buserror.net Git - polintos/scott/priv.git/blob - include/c++/stl/stl/config/_watcom.h
Add STLport 5.1.4
[polintos/scott/priv.git] / include / c++ / stl / stl / config / _watcom.h
1 // STLport configuration file
2 // It is internal STLport header - DO NOT include it directly
3
4 #define _STLP_COMPILER "Watcom"
5
6 # ifndef _STLP_USE_NO_IOSTREAMS
7 #  define _STLP_USE_NO_IOSTREAMS
8 # endif
9
10 # define _STLP_NO_RELOPS_NAMESPACE
11 # define _STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX
12
13 #  define _STLP_HAS_SPECIFIC_PROLOG_EPILOG
14 #  define _STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS
15 #  define _STLP_USE_OLD_HP_ITERATOR_QUERIES
16
17 // On QNX, headers are supposed to be found in /usr/include,
18 // so default "../include" should work.
19 # ifndef __QNX__
20 #  define _STLP_NATIVE_INCLUDE_PATH ../h
21 # endif
22
23 // Inline replacements for locking calls under Watcom
24 // Define _STLP_NO_WATCOM_INLINE_INTERLOCK to keep using
25 // standard WIN32 calls
26 // Define _STL_MULTIPROCESSOR to enable lock
27 #if !defined(_STLP_NO_WATCOM_INLINE_INTERLOCK)
28
29 long    __stl_InterlockedIncrement( long *var );
30 long    __stl_InterlockedDecrement( long *var );
31
32 #ifdef _STL_MULTIPROCESSOR
33 // Multiple Processors, add lock prefix
34 #pragma aux __stl_InterlockedIncrement parm [ ecx ] = \
35         ".586"                  \
36         "mov eax, 1"            \
37         "lock xadd [ecx], eax"       \
38         "inc eax"               \
39         value [eax];
40
41
42 #pragma aux __stl_InterlockedDecrement parm [ ecx ] = \
43         ".586"                  \
44         "mov eax, 0FFFFFFFFh"   \
45         "lock xadd [ecx], eax"       \
46         "dec eax"               \
47         value [eax];
48 #else
49 // Single Processor, lock prefix not needed
50 #pragma aux __stl_InterlockedIncrement parm [ ecx ] = \
51         ".586"                  \
52         "mov eax, 1"            \
53         "xadd [ecx], eax"       \
54         "inc eax"               \
55         value [eax];
56
57 #pragma aux __stl_InterlockedDecrement parm [ ecx ] = \
58         ".586"                  \
59         "mov eax, 0FFFFFFFFh"   \
60         "xadd [ecx], eax"       \
61         "dec eax"               \
62         value [eax];
63 #endif // _STL_MULTIPROCESSOR
64
65 long    __stl_InterlockedExchange( long *Destination, long Value );
66
67 // xchg has auto-lock
68 #pragma aux __stl_InterlockedExchange parm [ecx] [eax] = \
69         ".586"                  \
70         "xchg eax, [ecx]"       \
71         value [eax];
72 #else
73
74 #define __stl_InterlockedIncrement      InterlockedIncrement
75 #define __stl_InterlockedDecrement      InterlockedDecrement
76 #define __stl_InterlockedExchange       InterlockedExchange
77 #endif /* INLINE INTERLOCK */
78
79 #define _STLP_ATOMIC_INCREMENT(__x) __stl_InterlockedIncrement((long*)__x)
80 #define _STLP_ATOMIC_DECREMENT(__x) __stl_InterlockedDecrement((long*)__x)
81 #define _STLP_ATOMIC_EXCHANGE(__x, __y) __stl_InterlockedExchange((long*)__x, (long)__y)
82
83 // boris : is this true or just the header is not in /usr/include ?
84 # ifdef __QNX__
85 #  define _STLP_NO_TYPEINFO 1
86 # endif
87
88 #  define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1
89 #  define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1
90 #  define _STLP_NO_MEMBER_TEMPLATE_KEYWORD 1
91 #  define _STLP_NO_MEMBER_TEMPLATES 1
92 #  define _STLP_NO_FRIEND_TEMPLATES 1
93 #  define _STLP_NO_MEMBER_TEMPLATE_CLASSES 1
94
95
96 #  define _STLP_LIMITED_DEFAULT_TEMPLATES 1
97 #  define _STLP_HAS_NO_NAMESPACES 1
98 #  define _STLP_NEED_TYPENAME 1
99
100 #  if __WATCOMC__ < 1100
101 #  define _STLP_NO_WCHAR_T 1
102 #  define _STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX 1
103 #  endif
104
105 #  define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS 1
106
107 #  define _STLP_STATIC_CONST_INIT_BUG 1
108 // #  define _STLP_THROW_RETURN_BUG 1
109 #  define _STLP_NO_TEMPLATE_CONVERSIONS 1
110
111 #  define _STLP_BASE_TYPEDEF_OUTSIDE_BUG 1
112
113 #  define _STLP_HAS_NO_NEW_IOSTREAMS 1
114 #  define _STLP_HAS_NO_NEW_C_HEADERS 1
115 #  define _STLP_NO_NEW_NEW_HEADER 1
116 #  define _STLP_VENDOR_GLOBAL_STD
117
118 #  define _STLP_NO_DEFAULT_NON_TYPE_PARAM 1
119 #  define _STLP_NON_TYPE_TMPL_PARAM_BUG 1
120 #  define _STLP_NONTEMPL_BASE_MATCH_BUG
121 #  define _STLP_NO_EXCEPTION_HEADER 1
122 #  define _STLP_NO_BAD_ALLOC 1
123
124 #  define _STLP_NESTED_TYPE_PARAM_BUG 1
125
126 #  define _STLP_NO_USING_FOR_GLOBAL_FUNCTIONS 1
127
128 #  if (__WATCOM_CPLUSPLUS__ < 1100 )
129 #   define _STLP_NO_BOOL 1
130 #   define _STLP_NEED_EXPLICIT 1
131 #   define _STLP_NEED_MUTABLE 1
132 #   define _STLP_NO_ARROW_OPERATOR 1
133 #  endif
134 // This one is present in 11, but apparently has bugs (with auto_ptr).
135 #   define _STLP_NO_NEW_STYLE_CASTS 1
136
137 // Get rid of Watcom's min and max macros
138 #undef min
139 #undef max
140
141 // for switches (-xs,  -xss,  -xst)
142 //
143 #if !(defined (__SW_XS) || defined (__SW_XSS) || defined(__SW_XST))
144 #    define _STLP_HAS_NO_EXCEPTIONS 1
145 # endif
146
147 # if defined ( _MT ) && !defined (_NOTHREADS) && !defined (_REENTRANT)
148 # define _REENTRANT 1
149 # endif
150
151
152
153
154