epoc32/include/stdapis/stlport/config/stl_watcom.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
parent 0 061f57f2323e
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
     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