111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * File to have Microsoft eMbedded Visual C++ 3.0 and .NET working with STLport 311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * May 2004 411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Origin : Zdenek Nemec - zero@mapfactor.com 511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Michael Fink - vividos@users.sourceforge.net 611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _STLP_EVC_H 911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _STLP_EVC_H 1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _STLP_COMPILER "eMbedded Visual C++" 1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// This flag is being used by STLport to support 1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// old-fashioned Windows CE SDK (see stl_wince.h) 1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// do not use with eMebedded Visual C++ 3 or 4! 1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef _STLP_WINCE 1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# undef _STLP_WINCE 1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Compiler dependent define. The following defines may be available: 2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * _STLP_WCE_EVC3 when compiling under eMbedded Visual C++ 3 2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * _STLP_WCE_NET when compiling under eMbedded Visual C++ .NET 2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * _STLP_WCE always defined when compiling with one of the above 2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#undef _STLP_WCE_EVC3 2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#undef _STLP_WCE_NET 2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if (_WIN32_WCE > 300) 2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_WCE_NET UNDER_CE 3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#elif (_WIN32_WCE == 300) 3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_WCE_EVC3 UNDER_CE 3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else 3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# error No support for Windows CE below 3.0! 3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// This is defined for all platforms using Windows CE 3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _STLP_WCE 3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* All Windows CE versions up to at least version 5 are little-endian, even 4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * if the hardware (like e.g. MIPS) can be configured for big-endian, too. */ 4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _STLP_LITTLE_ENDIAN 4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// Ensure _DEBUG is defined. 4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined (DEBUG) && !defined (_DEBUG) 4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _DEBUG 4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// inherit all msvc6 options 4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <stl/config/_msvc.h> 5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// CE up to at least version 5 has no C locale support 5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _STLP_NO_LOCALE_SUPPORT 5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if _WIN32_WCE >= 420 5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert // SDKs built with PB5 have terminate&co in namespace std... 5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_VENDOR_TERMINATE_STD _STLP_VENDOR_STD 5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_VENDOR_UNCAUGHT_EXCEPTION_STD _STLP_VENDOR_STD 5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert // ...and new_handler/set_new_handler in the global namespace. 5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_GLOBAL_NEW_HANDLER 1 6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// Always threaded in eMbedded Visual C++ 3.0 and .NET 6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _MT 6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _MT 6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// we don't have a static native runtime library 6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#undef _STLP_USING_CROSS_NATIVE_RUNTIME_LIB 6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if _WIN32_WCE < 400 7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// no long double under CE3 and older 7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_NO_LONG_DOUBLE 7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// no *f and *l math functions available 7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _STLP_NO_VENDOR_MATH_F 7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _STLP_NO_VENDOR_MATH_L 7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Redirect cout, cerr and clog: 8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * If defined redirect cout, cerr and clog to 8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * files stdout.txt, stderr.txt and stdlog.txt 8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//# define _STLP_REDIRECT_STDSTREAMS 8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Static class members may generate LNK1179: 8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Wrong COMDAT packing may cause LNK1179 error. 8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * For details see http://groups.google.com/groups?th=8a05c82c4ffee280 9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * example P78. This define is not used/needed at this moment 9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * but may came handy in future... 9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//# define _STLP_STATIC_MEMBERS_BUG 9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// Use wide-string interface of windows native functions (CreateFile...). 9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// Note that this should be defined all the time while under CE. 9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined (UNICODE) 9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_USE_WIDE_INTERFACE 9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// Force exception std to std instead of __std_alias. 10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined (__cplusplus) && !defined (_STLP_HAS_NO_NAMESPACES) 10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# ifdef _STLP_VENDOR_EXCEPT_STD 10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# undef _STLP_VENDOR_EXCEPT_STD 10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# endif 10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_VENDOR_EXCEPT_STD std 10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// short string optimization bug under evc3, evc4 using ARM compiler 11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if _MSC_VER < 1400 && (defined (ARM) || defined (_ARM_)) 11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_DONT_USE_SHORT_STRING_OPTIM 11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// when using MFC, disable another placement new declaration, since there is one in wcealt.h 11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if !defined (__BUILDING_STLPORT) && defined (_MFC_VER) 11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define __PLACEMENT_NEW_INLINE 11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// threads 12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#undef _REENTRANT 12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _REENTRANT 12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#undef _NOTHREADS 12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// Use old fashioned headers (ctime vs. time.h). 12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#undef _STLP_NO_NEW_C_HEADERS 12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _STLP_NO_NEW_C_HEADERS 12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// exception handling support: only on evc4 and user added /GX to project settings 12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined (_STLP_WCE_EVC3) || !defined (_CPPUNWIND) 13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_NO_EXCEPTION_HEADER 13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_NO_EXCEPTIONS 13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# undef _STLP_USE_EXCEPTIONS 13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# ifndef _STLP_THROW_BAD_ALLOC 13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_THROW_BAD_ALLOC { _STLP_WINCE_TRACE(L"out of memory"); ExitThread(1); } 13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# endif 13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 13711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 13811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _STLP_WINCE_TRACE(msg) OutputDebugString(msg) 13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * eMbedded Visual C++ .NET specific settings 14211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined (_STLP_WCE_NET) 14411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// evc4 has no locale and time support 14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_NO_LOCALE_SUPPORT 14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_NO_TIME_SUPPORT 14811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 14911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// ptrdiff_t is not defined in evc4 headers 15011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# ifndef _PTRDIFF_T_DEFINED 15111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef int ptrdiff_t; 15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _PTRDIFF_T_DEFINED 15311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# endif 15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 15511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Helper macros for including the native headers in cases where a file with 15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * the same name also exists in the STLport include folder. The idea behind 15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * this is that we first go up one directory and then down into a dir that 15911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * is only present in the native install but not in STLport. 16011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 16111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 16211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# if !defined (_STLP_NATIVE_INCLUDE_PATH) 16311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# if defined (_X86_) 16411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# if defined (_STLP_WCE_TARGET_PROC_SUBTYPE_EMULATOR) 16511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_NATIVE_INCLUDE_PATH ../Emulator 16611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# else 16711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_NATIVE_INCLUDE_PATH ../X86 16811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# endif 16911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# elif defined (_ARM_) 17011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# if _MSC_VER < 1400 17111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert // eVC3/4 17211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# if defined (ARMV4) 17311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_NATIVE_INCLUDE_PATH ../Armv4 17411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# elif defined (ARMV4I) 17511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_NATIVE_INCLUDE_PATH ../Armv4i 17611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# elif defined (ARMV4T) 17711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_NATIVE_INCLUDE_PATH ../Armv4t 17811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# else 17911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# error Unknown ARM SDK. 18011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# endif 18111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# else 18211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert // VC8 crosscompiling for CE 18311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# if defined (ARMV4) 18411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert // VC8 bundled Pocket PC 2003 SDK don't have a target CPU subfolder. 18511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# if defined(WIN32_PLATFORM_PSPC) 18611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_NATIVE_INCLUDE_PATH ../Include 18711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# else 18811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_NATIVE_INCLUDE_PATH ../Armv4 18911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# endif 19011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# elif defined(ARMV4I) || defined(ARMV4T) 19111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_NATIVE_INCLUDE_PATH ../Armv4i 19211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# else 19311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# error Unknown ARM SDK. 19411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# endif 19511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# endif 19611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# elif defined (_MIPS_) 19711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# if defined (MIPS16) 19811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_NATIVE_INCLUDE_PATH ../mips16 19911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# elif defined (MIPSII) 20011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_NATIVE_INCLUDE_PATH ../mipsII 20111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# elif defined (MIPSII_FP) 20211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_NATIVE_INCLUDE_PATH ../mipsII_fp 20311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# elif defined (MIPSIV) 20411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_NATIVE_INCLUDE_PATH ../mipsIV 20511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# elif defined (MIPSIV_FP) 20611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_NATIVE_INCLUDE_PATH ../mipsIV_fp 20711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# else 20811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# error Unknown MIPS SDK. 20911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# endif 21011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# elif defined (SHx) 21111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# if defined (SH3) 21211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_NATIVE_INCLUDE_PATH ../sh3 21311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# elif defined (SH4) 21411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_NATIVE_INCLUDE_PATH ../sh4 21511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# else 21611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# error Unknown SHx SDK. 21711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# endif 21811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# else 21911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# error Unknown SDK. 22011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# endif 22111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# endif /* !_STLP_NATIVE_INCLUDE_PATH */ 22211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 22311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Workaround when using MFCCE and using <new> together: MFCCE's wcealt.h doesn't 22411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * check for __PLACEMENT_NEW_INLINE before defining operator new, so when <new> 22511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * defines the operatore before, there will be an error C2084: 22611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * "function 'void *__cdecl operator new(unsigned int,void *)' already has a body". 22711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 22811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# ifdef _STLP_USE_MFC 22911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define __PLACEMENT_NEW_INLINE 23011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# endif 23111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 23211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* _STLP_WCE_NET */ 23311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 23411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 23511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * eMbedded Visual C++ 3.0 specific settings 23611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 23711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined (_STLP_WCE_EVC3) 23811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 23911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_NO_NATIVE_MBSTATE_T 24011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 24111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// evc3 has no locale and time support 24211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_NO_LOCALE_SUPPORT 24311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_NO_TIME_SUPPORT 24411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 24511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// evc3 has new, but no explicit header 24611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_NO_NEW_HEADER 24711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_NO_NEW_NEW_HEADER 24811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 24911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// evc3 has no bad_alloc and no typeinfo 25011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# undef _STLP_NO_BAD_ALLOC 25111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_NO_BAD_ALLOC 25211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 25311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# undef _STLP_NO_TYPEINFO 25411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_NO_TYPEINFO 25511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 25611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// missing things in eMbedded Visual C++ 3.0 headers 25711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# ifndef _SIZE_T_DEFINED 25811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef unsigned int size_t; 25911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _SIZE_T_DEFINED 26011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# endif 26111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 26211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# ifndef _WCHAR_T_DEFINED 26311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef unsigned short wchar_t; 26411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _WCHAR_T_DEFINED 26511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# endif 26611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 26711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// ptrdiff_t is not defined in evc3 headers 26811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# ifndef _PTRDIFF_T_DEFINED 26911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef int ptrdiff_t; 27011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _PTRDIFF_T_DEFINED 27111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# endif 27211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 27311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// clock_t is not defined in evc3 headers 27411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# ifndef _CLOCK_T_DEFINED 27511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef long clock_t; 27611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _CLOCK_T_DEFINED 27711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# endif 27811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 27911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// Struct tm is not defined in evc3 headers 28011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# ifndef _TM_DEFINED 28111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tm { 28211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int tm_sec; /* seconds after the minute - [0,59] */ 28311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int tm_min; /* minutes after the hour - [0,59] */ 28411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int tm_hour; /* hours since midnight - [0,23] */ 28511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int tm_mday; /* day of the month - [1,31] */ 28611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int tm_mon; /* months since January - [0,11] */ 28711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int tm_year; /* years since 1900 */ 28811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int tm_wday; /* days since Sunday - [0,6] */ 28911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int tm_yday; /* days since January 1 - [0,365] */ 29011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int tm_isdst; /* daylight savings time flag */ 29111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 29211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _TM_DEFINED 29311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# endif 29411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 29511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// define placement new and delete operator 29611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// note: when MFCCE headers are included first, don't define the new operator, 29711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// since it was already defined in wcealt.h 29811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# ifdef __cplusplus 29911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# ifndef __PLACEMENT_NEW_INLINE 30011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# ifndef _MFC_VER 30111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertinline void *__cdecl operator new(size_t, void *_P) { return (_P); } 30211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# endif /* _MFC_VER */ 30311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertinline void __cdecl operator delete(void *, void *) { return; } 30411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define __PLACEMENT_NEW_INLINE 30511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# endif 30611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# endif /* __cplusplus */ 30711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 30811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// evc3 doesn't have native wide functions, e.g. fgetwc, wmemmove 30911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_NO_NATIVE_WIDE_FUNCTIONS 31011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 31111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// evc3 doesn't have assert.h 31211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# ifndef _ASSERT_DEFINED 31311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define assert(expr) _STLP_ASSERT(expr) 31411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _ASSERT_DEFINED 31511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# endif 31611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 31711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* _STLP_WCE_EVC3 */ 31811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 31911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 32011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * original call: TerminateProcess(GetCurrentProcess(), 0); 32111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * we substitute the GetCurrentProcess() with the result of the inline function 32211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * defined in kfuncs.h, since we then can avoid including <windows.h> at all. 32311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * all needed Win32 API functions are defined in <stl/_windows.h> 32411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 32511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _ABORT_DEFINED 32611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _STLP_ABORT() TerminateProcess(reinterpret_cast<HANDLE>(66), 0) 32711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define _ABORT_DEFINED 32811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 32911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 33011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// Notice: windows.h isn't included here anymore; all needed defines are in 33111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// stl/_windows.h now 33211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 33311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* _STLP_EVC_H */ 334