/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description: 
*
*/

// STLport configuration file
// It is internal STLport header - DO NOT include it directly

#define _STLP_COMPILER "Comeau"

#include <stl/config/_native_headers.h>

#define _STLP_UINT32_T unsigned int

#define _STLP_HAS_NO_NEW_C_HEADERS
// #define _STLP_VENDOR_GLOBAL_EXCEPT_STD
#define _STLP_LONG_LONG long long


//
// ADDITIONS FOR COMEAU C++, made by Comeau Computing.
// We can be reached through comeau@comeaucomputing.com
// You shouldn't need to change anything below here for Comeau C++.
// If you do, please tell us at comeau@comeaucomputing.com
//
// Changes made here, AND THROUGH ALL FILES, based upon the __COMO__ macro
// (and SIMILAR NAMES INVOLVING COMO).... no doubt some of this will
// change as SGI integrates the changes into their code base since
// some changes are not really Comeau C++ specific, but required to
// make the SGI code compliant with Standard C++).
//
// Testing was done with Comeau C++ 4.2.44 and 4.2.45.2.  Changes were made for
// both Comeau relaxed mode and Comeau strict mode, especially for end user code
// (that is, some of the .cxx files cannot compile in strict mode, because they
// contain extensions to Standard C++, however their object code forms can
// be used once compiled in relaxed mode, even if the end user code uses
// strict mode).
//
// These changes may also work for some earlier versions of Comeau C++,
// though we have not tested them.
//
// Actual mods made under RedHat 6.1 LINUX, should be ok with SuSE too and
// other LINUX's, and older Caldera LINUX, Solaris/SPARC, SunOS, SCO UNIX,
// and NetBSD. Other platforms may be added.  Comeau will also perform
// custom ports for you.
//
// Check libcomo details at http://www.comeaucomputing.com/libcomo and
// http://www.comeaucomputing.com
//
// History of Comeau changes (this is rough, as work was often going on in parallel):
// BETA1 July 14, 2000, Initial port for RedHat 6.1 INTEL/ELF
// BETA2 Aug   4, 2000, Stronger RedHat support
//                      Support for Comeau strict mode for end user code
// BETA3 Aug  22, 2000, Support for other LINUX/INTEL/ELF's, including older ones
// BETA4 Sept  2, 2000, Initial support for SCO UNIX + other UNIX x86 SVR3's
//                      Stronger support for end user Comeau strict mode
// BETA5 Oct   5, 2000, Initial support for Solaris/SPARC
//                      More SCO support (though still incomplete)
// BETA6 Feb   5, 2001, Minor mods to accomodate Comeau C++ 4.2.45.1
// BETA7 Mar  13, 2001, Verified with Comeau C++ 4.2.45.2
//                      Minor NetBSD support
// BETA8 Apr   1. 2001, Initial support for SunOS/SPARC
// BETA9 Apr   7, 2001, Stronger SCO support + other UNIX x86 SVR3's
//                      Mods for an fpos_t problem for some LINUXes
//                      Mods since Destroy did not work in strict mode
// BETA10 Apr  12. 2001, Stronger NetBSD support
//
// PLANNED:
// BETAx TBA  TBA, 2001, NetBSD, UNIXWARE, and Windows support expected
//


#ifdef __linux__

#   define _STLP_NO_NATIVE_MBSTATE_T      1
#   define _STLP_NO_NATIVE_WIDE_FUNCTIONS 1
#   define _STLP_NO_NATIVE_WIDE_STREAMS   1
#   define _STLP_NO_LONG_DOUBLE   1

// Comeau C++ under LINUX/INTEL/ELF
// Preprocess away "long long" routines for now, even in relaxed mode
# define __wcstoull_internal_defined  1
# define __wcstoll_internal_defined  1

#endif /* __COMO__ under __linux__ */

#ifdef __USING_x86SVR3x_WITH_COMO /* SCO et al */
/* UNIX 386+ SVR3 mods made with __USING_x86SVR3x_WITH_COMO
   in other sources, not here */
#    define atan2l atan2
#    define cosl cos
#    define sinl sin
#    define sqrtl sqrt
#    include <math.h>
     inline long double expl(long double arg) { return exp(arg); }
     inline long double logl(long double arg) { return log(arg); }
#    define log10l log10

#    define sinhl sinh
#    define coshl cosh
#    define fabsl fabs
namespace std {
 inline int min(int a, int b) { return a>b ? b : a; }
}
#endif

#ifdef sun
// Comeau C++ under Solaris/SPARC or SunOS

#ifdef solarissparc
#define __USING_SOLARIS_SPARC_WITH_COMO /* show this in the source when grep'ing for COMO */
// Note comowchar.h for Solaris/SPARC wchar stuff

#include <math.h>
#    define sinf sin
#    define sinl sin
#    define sinhf sinh
#    define sinhl sinh
#    define cosf cos
#    define cosl cos
#    define coshf cosh
#    define coshl cosh
#    define atan2l atan2
#    define atan2f atan2
     inline float logf(float arg) { return log(arg); }
     inline long double logl(long double arg) { return log(arg); }
#    define log10f log10
#    define log10l log10
#    define expf exp
     inline long double expl(long double arg) { return exp(arg); }
#    define sqrtf sqrt
#    define sqrtl sqrt
#    define fabsf fabs
#    define fabsl fabs
#else
#define __USING_SUNOS_WITH_COMO

#define __unix 1
#define __EXTENSIONS__ /* This might create undue noise somewhere */
#endif
#endif /* sun */

#if defined(__NetBSD__)
// From non-como #ifdef __GNUC__ above
#undef _STLP_NO_FUNCTION_PTR_IN_CLASS_TEMPLATE
#define __unix 1

#include <sys/cdefs.h>
// Some joker #define'd __END_DECLS as };
#undef __END_DECLS
#define __END_DECLS }

// <sys/stat.h> prob
#include <sys/cdefs.h>
#undef __RENAME
#define __RENAME(x)

#define wchar_t __COMO_WCHAR_T
#include <stddef.h>
#undef wchar_t

#include <math.h>
# ifdef BORIS_DISABLED
#    define atan2l atan2
#    define cosl cos
#    define sinl sin
#    define sqrtl sqrt
     inline long double expl(long double arg) { return exp(arg); }
     inline long double logl(long double arg) { return log(arg); }
#    define log10l log10
#    define sinhl sinh
#    define coshl cosh
#    define fabsl fabs
# endif
#endif /* __NetBSD__ under __COMO__ */

// Shouldn't need to change anything below here for Comeau C++
// If so, tell us at comeau@comeaucomputing.com

#define _STLP_NO_DRAND48

#define _STLP_PARTIAL_SPECIALIZATION_SYNTAX
#define _STLP_NO_USING_CLAUSE_IN_CLASS

#if __COMO_VERSION__ < 4300
#if __COMO_VERSION__ >= 4245
#define _STLP_NO_EXCEPTION_HEADER /**/
    // Is this needed?
#   include <stdexcept.stdh>
#endif
#define _STLP_NO_BAD_ALLOC /**/
#define _STLP_USE_AUTO_PTR_CONVERSIONS /**/
#endif

// this one is true only with MS
# if defined (_MSC_VER)
#  define _STLP_WCHAR_T_IS_USHORT 1
#  if _MSC_VER <= 1200
#   define _STLP_VENDOR_GLOBAL_CSTD
#  endif
#  if _MSC_VER < 1100
#   define _STLP_NO_BAD_ALLOC 1
#   define _STLP_NO_EXCEPTION_HEADER 1
#   define _STLP_NO_NEW_NEW_HEADER 1
#   define _STLP_USE_NO_IOSTREAMS 1
#  endif
# endif

// # define __EDG_SWITCHES


