home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / stlpt453.zip / STLport-4.5.3 / stlport / config / stl_watcom.h < prev    next >
C/C++ Source or Header  |  2001-05-28  |  5KB  |  153 lines

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