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