19720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/*
29720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * File to have Microsoft eMbedded Visual C++ 3.0 and .NET working with STLport
39720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * May 2004
49720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Origin : Zdenek Nemec - zero@mapfactor.com
59720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *          Michael Fink - vividos@users.sourceforge.net
69720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
79720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
89720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_EVC_H
99720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_EVC_H
109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_COMPILER "eMbedded Visual C++"
129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// This flag is being used by STLport to support
149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// old-fashioned Windows CE SDK (see stl_wince.h)
159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// do not use with eMebedded Visual C++ 3 or 4!
169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifdef _STLP_WINCE
179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  undef _STLP_WINCE
189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* Compiler dependent define. The following defines may be available:
219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * _STLP_WCE_EVC3 when compiling under eMbedded Visual C++ 3
229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * _STLP_WCE_NET  when compiling under eMbedded Visual C++ .NET
239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * _STLP_WCE      always defined when compiling with one of the above
249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef _STLP_WCE_EVC3
269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef _STLP_WCE_NET
279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if (_WIN32_WCE > 300)
299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_WCE_NET UNDER_CE
309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#elif (_WIN32_WCE == 300)
319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_WCE_EVC3 UNDER_CE
329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  error No support for Windows CE below 3.0!
349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// This is defined for all platforms using Windows CE
379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_WCE
389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* All Windows CE versions up to at least version 5 are little-endian, even
409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * if the hardware (like e.g. MIPS) can be configured for big-endian, too. */
419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_LITTLE_ENDIAN
429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Ensure _DEBUG is defined.
449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (DEBUG) && !defined (_DEBUG)
459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _DEBUG
469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// inherit all msvc6 options
499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#include <stl/config/_msvc.h>
509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// CE up to at least version 5 has no C locale support
529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_NO_LOCALE_SUPPORT
539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
54e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if _WIN32_WCE >= 420
559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   // SDKs built with PB5 have terminate&co in namespace std...
569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_VENDOR_TERMINATE_STD _STLP_VENDOR_STD
579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_VENDOR_UNCAUGHT_EXCEPTION_STD _STLP_VENDOR_STD
589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   // ...and new_handler/set_new_handler in the global namespace.
599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_GLOBAL_NEW_HANDLER 1
609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Always threaded in eMbedded Visual C++ 3.0 and .NET
639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _MT
649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _MT
659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// we don't have a static native runtime library
689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef _STLP_USING_CROSS_NATIVE_RUNTIME_LIB
699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if _WIN32_WCE < 400
719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// no long double under CE3 and older
729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_NO_LONG_DOUBLE
739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// no *f and *l math functions available
769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_NO_VENDOR_MATH_F
779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_NO_VENDOR_MATH_L
789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/*
809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Redirect cout, cerr and clog:
819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * If defined redirect cout, cerr and clog to
829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * files stdout.txt, stderr.txt and stdlog.txt
839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block//# define _STLP_REDIRECT_STDSTREAMS
859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/*
879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Static class members may generate LNK1179:
889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Wrong COMDAT packing may cause LNK1179 error.
899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * For details see http://groups.google.com/groups?th=8a05c82c4ffee280
909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * example P78. This define is not used/needed at this moment
919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * but may came handy in future...
929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block//# define _STLP_STATIC_MEMBERS_BUG
949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Use wide-string interface of windows native functions (CreateFile...).
969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Note that this should be defined all the time while under CE.
979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (UNICODE)
989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_USE_WIDE_INTERFACE
999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
1009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Force exception std to std instead of __std_alias.
1029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (__cplusplus) && !defined (_STLP_HAS_NO_NAMESPACES)
1039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  ifdef _STLP_VENDOR_EXCEPT_STD
1049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    undef _STLP_VENDOR_EXCEPT_STD
1059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
1069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_VENDOR_EXCEPT_STD std
1079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
1089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// short string optimization bug under evc3, evc4 using ARM compiler
110e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if _MSC_VER < 1400 && (defined (ARM) || defined (_ARM_))
1119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_DONT_USE_SHORT_STRING_OPTIM
1129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
1139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// when using MFC, disable another placement new declaration, since there is one in wcealt.h
1159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (__BUILDING_STLPORT) && defined (_MFC_VER)
1169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define __PLACEMENT_NEW_INLINE
1179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
1189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// threads
1209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef _REENTRANT
1219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _REENTRANT
1229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef _NOTHREADS
1239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Use old fashioned headers (ctime vs. time.h).
1259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef _STLP_NO_NEW_C_HEADERS
1269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_NO_NEW_C_HEADERS
1279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// exception handling support: only on evc4 and user added /GX to project settings
1299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_WCE_EVC3) || !defined (_CPPUNWIND)
1309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_NO_EXCEPTION_HEADER
1319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_NO_EXCEPTIONS
1329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  undef _STLP_USE_EXCEPTIONS
133e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  ifndef _STLP_THROW_BAD_ALLOC
134e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    define _STLP_THROW_BAD_ALLOC { _STLP_WINCE_TRACE(L"out of memory"); ExitThread(1); }
1359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
1369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
1379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_WINCE_TRACE(msg) OutputDebugString(msg)
1399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/*
1419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * eMbedded Visual C++ .NET specific settings
1429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
1439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_WCE_NET)
1449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// evc4 has no locale and time support
1469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_NO_LOCALE_SUPPORT
1479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_NO_TIME_SUPPORT
1489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// ptrdiff_t is not defined in evc4 headers
1509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  ifndef _PTRDIFF_T_DEFINED
1519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   typedef int ptrdiff_t;
1529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _PTRDIFF_T_DEFINED
1539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
1549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/*
1569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Helper macros for including the native headers in cases where a file with
1579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * the same name also exists in the STLport include folder. The idea behind
1589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * this is that we first go up one directory and then down into a dir that
1599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * is only present in the native install but not in STLport.
1609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
1619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
1629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if !defined (_STLP_NATIVE_INCLUDE_PATH)
1639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    if defined (_X86_)
1649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      if defined (_STLP_WCE_TARGET_PROC_SUBTYPE_EMULATOR)
1659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#        define _STLP_NATIVE_INCLUDE_PATH ../Emulator
1669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      else
1679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#        define _STLP_NATIVE_INCLUDE_PATH ../X86
1689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      endif
1699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    elif defined (_ARM_)
1709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      if _MSC_VER < 1400
1719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block         // eVC3/4
1729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#        if defined (ARMV4)
1739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#          define _STLP_NATIVE_INCLUDE_PATH ../Armv4
1749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#        elif defined (ARMV4I)
1759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#          define _STLP_NATIVE_INCLUDE_PATH ../Armv4i
1769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#        elif defined (ARMV4T)
1779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#          define _STLP_NATIVE_INCLUDE_PATH ../Armv4t
1789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#        else
1799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#          error Unknown ARM SDK.
1809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#        endif
1819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      else
1829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block         // VC8 crosscompiling for CE
1839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#        if defined (ARMV4)
184e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott           // VC8 bundled Pocket PC 2003 SDK don't have a target CPU subfolder.
185e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#          if defined(WIN32_PLATFORM_PSPC)
186e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#            define _STLP_NATIVE_INCLUDE_PATH ../Include
187e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#          else
188e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#            define _STLP_NATIVE_INCLUDE_PATH ../Armv4
189e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#          endif
1909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#        elif defined(ARMV4I) || defined(ARMV4T)
1919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#          define _STLP_NATIVE_INCLUDE_PATH ../Armv4i
1929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#        else
1939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#          error Unknown ARM SDK.
1949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#        endif
1959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      endif
1969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    elif defined (_MIPS_)
1979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      if defined (MIPS16)
1989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#        define _STLP_NATIVE_INCLUDE_PATH ../mips16
1999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      elif defined (MIPSII)
2009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#        define _STLP_NATIVE_INCLUDE_PATH ../mipsII
2019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      elif defined (MIPSII_FP)
2029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#        define _STLP_NATIVE_INCLUDE_PATH ../mipsII_fp
2039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      elif defined (MIPSIV)
2049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#        define _STLP_NATIVE_INCLUDE_PATH ../mipsIV
2059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      elif defined (MIPSIV_FP)
2069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#        define _STLP_NATIVE_INCLUDE_PATH ../mipsIV_fp
2079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      else
2089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#        error Unknown MIPS SDK.
2099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      endif
2109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    elif defined (SHx)
2119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      if defined (SH3)
2129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#        define _STLP_NATIVE_INCLUDE_PATH ../sh3
2139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      elif defined (SH4)
2149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#        define _STLP_NATIVE_INCLUDE_PATH ../sh4
2159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      else
2169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#        error Unknown SHx SDK.
2179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      endif
2189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    else
2199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      error Unknown SDK.
2209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    endif
2219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif /* !_STLP_NATIVE_INCLUDE_PATH */
2229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* Workaround when using MFCCE and using <new> together: MFCCE's wcealt.h doesn't
2249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * check for __PLACEMENT_NEW_INLINE before defining operator new, so when <new>
2259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * defines the operatore before, there will be an error C2084:
2269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * "function 'void *__cdecl operator new(unsigned int,void *)' already has a body".
2279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
2289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  ifdef _STLP_USE_MFC
2299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define __PLACEMENT_NEW_INLINE
2309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
2319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_WCE_NET */
2339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/*
2359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * eMbedded Visual C++ 3.0 specific settings
2369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
2379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_WCE_EVC3)
2389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_NO_NATIVE_MBSTATE_T
2409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// evc3 has no locale and time support
2429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_NO_LOCALE_SUPPORT
2439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_NO_TIME_SUPPORT
2449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// evc3 has new, but no explicit header
2469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_NO_NEW_HEADER
2479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_NO_NEW_NEW_HEADER
2489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// evc3 has no bad_alloc and no typeinfo
2509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  undef _STLP_NO_BAD_ALLOC
2519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_NO_BAD_ALLOC
2529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  undef _STLP_NO_TYPEINFO
2549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_NO_TYPEINFO
2559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// missing things in eMbedded Visual C++ 3.0 headers
2579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  ifndef _SIZE_T_DEFINED
2589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   typedef unsigned int size_t;
2599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _SIZE_T_DEFINED
2609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
2619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  ifndef _WCHAR_T_DEFINED
2639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   typedef unsigned short wchar_t;
2649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _WCHAR_T_DEFINED
2659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
2669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// ptrdiff_t is not defined in evc3 headers
2689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  ifndef _PTRDIFF_T_DEFINED
2699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   typedef int ptrdiff_t;
2709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _PTRDIFF_T_DEFINED
2719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
2729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// clock_t is not defined in evc3 headers
2749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  ifndef _CLOCK_T_DEFINED
2759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   typedef long clock_t;
2769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _CLOCK_T_DEFINED
2779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
2789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Struct tm is not defined in evc3 headers
2809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  ifndef _TM_DEFINED
2819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct tm {
2829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   int tm_sec;     /* seconds after the minute - [0,59] */
2839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   int tm_min;     /* minutes after the hour - [0,59] */
2849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   int tm_hour;    /* hours since midnight - [0,23] */
2859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   int tm_mday;    /* day of the month - [1,31] */
2869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   int tm_mon;     /* months since January - [0,11] */
2879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   int tm_year;    /* years since 1900 */
2889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   int tm_wday;    /* days since Sunday - [0,6] */
2899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   int tm_yday;    /* days since January 1 - [0,365] */
2909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   int tm_isdst;   /* daylight savings time flag */
2919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block};
2929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _TM_DEFINED
2939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
2949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// define placement new and delete operator
2969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// note: when MFCCE headers are included first, don't define the new operator,
2979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block//       since it was already defined in wcealt.h
2989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  ifdef __cplusplus
2999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    ifndef __PLACEMENT_NEW_INLINE
3009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      ifndef _MFC_VER
3019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline void *__cdecl operator new(size_t, void *_P) { return (_P); }
3029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      endif /* _MFC_VER */
3039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline void __cdecl operator delete(void *, void *) { return; }
3049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      define __PLACEMENT_NEW_INLINE
3059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    endif
3069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif /* __cplusplus */
3079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// evc3 doesn't have native wide functions, e.g. fgetwc, wmemmove
3099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_NO_NATIVE_WIDE_FUNCTIONS
3109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// evc3 doesn't have assert.h
3129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  ifndef _ASSERT_DEFINED
3139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define assert(expr) _STLP_ASSERT(expr)
3149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _ASSERT_DEFINED
3159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
3169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_WCE_EVC3 */
3189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/*
3209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * original call: TerminateProcess(GetCurrentProcess(), 0);
3219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * we substitute the GetCurrentProcess() with the result of the inline function
3229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * defined in kfuncs.h, since we then can avoid including <windows.h> at all.
3239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * all needed Win32 API functions are defined in <stl/_windows.h>
3249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
3259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _ABORT_DEFINED
3269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_ABORT() TerminateProcess(reinterpret_cast<HANDLE>(66), 0)
3279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _ABORT_DEFINED
3289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
3299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Notice: windows.h isn't included here anymore; all needed defines are in
3319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// stl/_windows.h now
3329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_EVC_H */
334