Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygen_watcom.h
Go to the documentation of this file.
00001 // STLport configuration file 00002 // It is internal STLport header - DO NOT include it directly 00003 00004 #define _STLP_COMPILER "Watcom" 00005 00006 #if (__WATCOMC__ < 1250) 00007 # error Not supported! 00008 #endif 00009 00010 #ifndef _CPPRTTI 00011 # define _STLP_NO_RTTI 1 00012 #endif 00013 00014 // for switches (-xs, -xss, -xst) 00015 #if !(defined (__SW_XS) || defined (__SW_XSS) || defined(__SW_XST)) 00016 # define _STLP_HAS_NO_EXCEPTIONS 1 00017 #endif 00018 00019 #if defined (_MT) && !defined (_NOTHREADS) 00020 # define _STLP_THREADS 1 00021 #endif 00022 00023 #define _STLP_NO_VENDOR_STDLIB_L 00024 #define _STLP_NO_VENDOR_MATH_F 00025 #define _STLP_NO_VENDOR_MATH_L 00026 00027 #define _STLP_LONG_LONG long long 00028 00029 #define _STLP_CALL __cdecl 00030 #define _STLP_IMPORT_DECLSPEC __declspec(dllimport) 00031 00032 #define _STLP_NO_CONST_IN_PAIR 00033 00034 //#define _STLP_DONT_USE_PRIV_NAMESPACE 00035 //#define _STLP_NO_MOVE_SEMANTIC 00036 //#define _STLP_NO_TYPENAME_IN_TEMPLATE_HEADER 00037 #define _STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE 00038 00039 #define _STLP_NO_RELOPS_NAMESPACE 00040 00041 #define _STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS 00042 #define _STLP_NO_STATIC_CONST_DEFINITION 00043 00044 //#define _STLP_HAS_SPECIFIC_PROLOG_EPILOG 00045 #define _STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS 00046 //#define _STLP_USE_OLD_HP_ITERATOR_QUERIES 00047 00048 #define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1 00049 #define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1 00050 //#define _STLP_NO_MEMBER_TEMPLATE_KEYWORD 1 00051 //#define _STLP_NO_MEMBER_TEMPLATES 1 00052 //#define _STLP_NO_MEMBER_TEMPLATE_CLASSES 1 00053 00054 //#define _STLP_LIMITED_DEFAULT_TEMPLATES 1 00055 //#define _STLP_HAS_NO_NAMESPACES 1 00056 //#define _STLP_NEED_TYPENAME 1 00057 00058 #define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS 1 00059 00060 //#define _STLP_STATIC_CONST_INIT_BUG 1 00061 // #define _STLP_THROW_RETURN_BUG 1 00062 //#define _STLP_NO_TEMPLATE_CONVERSIONS 1 00063 00064 #define _STLP_BASE_TYPEDEF_OUTSIDE_BUG 1 00065 00066 #define _STLP_NO_DEFAULT_NON_TYPE_PARAM 1 00067 #define _STLP_NON_TYPE_TMPL_PARAM_BUG 1 00068 00069 //#define _STLP_NONTEMPL_BASE_MATCH_BUG 00070 //#define _STLP_NO_EXCEPTION_HEADER 1 00071 #define _STLP_NO_BAD_ALLOC 1 00072 00073 //#define _STLP_NO_TYPENAME_ON_RETURN_TYPE 00074 //#define _STLP_NESTED_TYPE_PARAM_BUG 1 00075 00076 //#define _STLP_NO_USING_FOR_GLOBAL_FUNCTIONS 1 00077 00078 #define _STLP_NO_ARROW_OPERATOR 1 00079 // This one is present in 11, but apparently has bugs (with auto_ptr). 00080 //#define _STLP_NO_NEW_STYLE_CASTS 1 00081 00082 // Get rid of Watcom's min and max macros 00083 #undef min 00084 #undef max 00085 00086 // On QNX, headers are supposed to be found in /usr/include, 00087 // so default "../include" should work. 00088 #ifndef __QNX__ 00089 # define _STLP_NATIVE_INCLUDE_PATH ../h 00090 #else 00091 // boris : is this true or just the header is not in /usr/include ? 00092 # define _STLP_NO_TYPEINFO 1 00093 #endif 00094 00095 // Inline replacements for locking calls under Watcom 00096 // Define _STLP_NO_WATCOM_INLINE_INTERLOCK to keep using 00097 // standard WIN32 calls 00098 // Define _STL_MULTIPROCESSOR to enable lock 00099 #define _STLP_NO_WATCOM_INLINE_INTERLOCK 00100 #if !defined(_STLP_NO_WATCOM_INLINE_INTERLOCK) 00101 00102 long __stl_InterlockedIncrement( long *var ); 00103 long __stl_InterlockedDecrement( long *var ); 00104 00105 #ifdef _STL_MULTIPROCESSOR 00106 // Multiple Processors, add lock prefix 00107 #pragma aux __stl_InterlockedIncrement parm [ ecx ] = \ 00108 ".586" \ 00109 "mov eax, 1" \ 00110 "lock xadd [ecx], eax" \ 00111 "inc eax" \ 00112 value [eax]; 00113 00114 00115 #pragma aux __stl_InterlockedDecrement parm [ ecx ] = \ 00116 ".586" \ 00117 "mov eax, 0FFFFFFFFh" \ 00118 "lock xadd [ecx], eax" \ 00119 "dec eax" \ 00120 value [eax]; 00121 #else 00122 // Single Processor, lock prefix not needed 00123 #pragma aux __stl_InterlockedIncrement parm [ ecx ] = \ 00124 ".586" \ 00125 "mov eax, 1" \ 00126 "xadd [ecx], eax" \ 00127 "inc eax" \ 00128 value [eax]; 00129 00130 #pragma aux __stl_InterlockedDecrement parm [ ecx ] = \ 00131 ".586" \ 00132 "mov eax, 0FFFFFFFFh" \ 00133 "xadd [ecx], eax" \ 00134 "dec eax" \ 00135 value [eax]; 00136 #endif // _STL_MULTIPROCESSOR 00137 00138 long __stl_InterlockedExchange( long *Destination, long Value ); 00139 00140 // xchg has auto-lock 00141 #pragma aux __stl_InterlockedExchange parm [ecx] [eax] = \ 00142 ".586" \ 00143 "xchg eax, [ecx]" \ 00144 value [eax]; 00145 00146 # define _STLP_ATOMIC_INCREMENT(__x) __stl_InterlockedIncrement((long*)__x) 00147 # define _STLP_ATOMIC_DECREMENT(__x) __stl_InterlockedDecrement((long*)__x) 00148 # define _STLP_ATOMIC_EXCHANGE(__x, __y) __stl_InterlockedExchange((long*)__x, (long)__y) 00149 # define _STLP_ATOMIC_EXCHANGE_PTR(__x, __y) __stl_InterlockedExchange((long*)__x, (long)__y) 00150 #endif /* INLINE INTERLOCK */ 00151 Generated on Sat May 26 2012 04:28:24 for ReactOS by
1.7.6.1
|