stl_watcom.h

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

Generated on Mon Jun 5 10:20:45 2006 for Intelligence.kdevelop by  doxygen 1.4.6