diff options
Diffstat (limited to 'test/eh/Prefix.h')
-rw-r--r-- | test/eh/Prefix.h | 313 |
1 files changed, 0 insertions, 313 deletions
diff --git a/test/eh/Prefix.h b/test/eh/Prefix.h deleted file mode 100644 index 27ffd37..0000000 --- a/test/eh/Prefix.h +++ /dev/null @@ -1,313 +0,0 @@ -/*********************************************************************************** - Prefix.h - - * Copyright (c) 1997 - * Mark of the Unicorn, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Mark of the Unicorn makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - - SUMMARY: Configuration #defines for STL EH test suite - -***********************************************************************************/ - -#ifndef INCLUDED_MOTU_Prefix -#define INCLUDED_MOTU_Prefix 1 - -// Gives much more thorough checking, but may slow the tests -// considerably if your malloc is slow. -#define TESTCLASS_DEEP_DATA 1 - -# ifndef NO_FAST_ALLOCATOR -// # define NO_FAST_ALLOCATOR -# endif - -// Define this to use the SGI STL. Undefine it to test a different installation -#ifndef EH_NO_SGI_STL -# define EH_USE_SGI_STL 1 -#endif - -#if EH_USE_SGI_STL - -#define EH_ASSERT _STLP_ASSERT - -//========================================================================= -// SGI STL-specific #defines -// These control the behavior of the test suite when used with the SGI -// STL. They have no effect when testing other STL implementations. -//========================================================================= - -#ifndef _STLP_USE_NEWALLOC -# define _STLP_USE_NEWALLOC -#endif - -#if 0 // !defined (_STLP_NO_CUSTOM_IO) && ! defined (__BORLANDC__) -# define _STLP_NO_CUSTOM_IO -#endif - -// Just include something to get whatever configuration header we're using. -#include <utility> - -#ifndef _STLP_CALL -# define _STLP_CALL -#endif - -#if defined(_STLP_USE_NAMESPACES) -# define EH_USE_NAMESPACES _STLP_USE_NAMESPACES -#endif - -#define EH_BEGIN_NAMESPACE _STLP_BEGIN_NAMESPACE -#define EH_END_NAMESPACE _STLP_END_NAMESPACE - -#define EH_NEW_HEADERS 1 - -//#if defined (_STLP_USE_NEW_IOSTREAMS) -#define EH_NEW_IOSTREAMS 1 -//#endif - -#if !defined (_STLP_USE_EXCEPTIONS) -# define EH_NO_EXCEPTIONS -#endif - -#if defined (_STLP_TEMPLATE_PARAM_SUBTYPE_BUG) -# define EH_TEMPLATE_PARAM_SUBTYPE_BUG _STLP_TEMPLATE_PARAM_SUBTYPE_BUG -#endif - -#if defined(_STLP_MULTI_CONST_TEMPLATE_ARG_BUG) -# define EH_MULTI_CONST_TEMPLATE_ARG_BUG _STLP_MULTI_CONST_TEMPLATE_ARG_BUG -#endif - -#if defined (STLPORT) -# define EH_STD STLPORT -#elif defined(__STD) -# define EH_STD __STD -#endif - -// we want to be portable here, so std:: won't work. -#if defined(STLPORT_CSTD) -# define EH_CSTD STLPORT_CSTD -#else -# define EH_CSTD std -#endif - -#define EH_DISTANCE(a, b, result) EH_STD::distance(a, b, result) - -#define EH_HASHED_CONTAINERS_IMPLEMENTED 1 -#define EH_HASH_CONTAINERS_SUPPORT_RESIZE 1 -#define EH_HASH_CONTAINERS_SUPPORT_ITERATOR_CONSTRUCTION 1 -#define EH_SLIST_IMPLEMENTED 1 -#define EH_SELECT1ST_HINT __select1st_hint -// fbp : DEC cxx is unable to compile it for some reason -#if !(defined (__DECCXX) || defined (__amigaos__) || \ - (defined (__GNUC__) && (__GNUC__ <= 2) && (__GNUC_MINOR__ < 8))) -# define EH_ROPE_IMPLEMENTED 1 -#endif -#define EH_STRING_IMPLEMENTED 1 -// # define EH_BITSET_IMPLEMENTED 1 -//# define EH_VALARRAY_IMPLEMENTED 1 - we have no tests yet for valarray - -#define stl_destroy EH_STD::destroy -#include <memory> - -template <class _Tp> -class /*_STLP_CLASS_DECLSPEC*/ EH_allocator; - -template <class _Tp> -class /*_STLP_CLASS_DECLSPEC*/ EH_allocator { -public: - - typedef _Tp value_type; - typedef value_type * pointer; - typedef const _Tp* const_pointer; - typedef _Tp& reference; - typedef const _Tp& const_reference; - typedef EH_CSTD::size_t size_type; - typedef EH_CSTD::ptrdiff_t difference_type; -# if defined (_STLP_MEMBER_TEMPLATE_CLASSES) - template <class _Tp1> struct rebind { - typedef EH_allocator<_Tp1> other; - }; -# endif - EH_allocator() _STLP_NOTHROW {} - # if defined (_STLP_MEMBER_TEMPLATES) - template <class _Tp1> EH_allocator(const EH_allocator<_Tp1>&) _STLP_NOTHROW {} - # endif - EH_allocator(const EH_allocator<_Tp>&) _STLP_NOTHROW {} - ~EH_allocator() _STLP_NOTHROW {} - pointer address(reference __x) { return &__x; } - const_pointer address(const_reference __x) const { return &__x; } - // __n is permitted to be 0. The C++ standard says nothing about what the return value is when __n == 0. - _Tp* allocate(size_type __n, const void* = 0) const { - return __n != 0 ? __REINTERPRET_CAST(value_type*,EH_STD::__new_alloc::allocate(__n * sizeof(value_type))) : 0; - } - // __p is permitted to be a null pointer, only if n==0. - void deallocate(pointer __p, size_type __n) const { - _STLP_ASSERT( (__p == 0) == (__n == 0) ) - if (__p != 0) EH_STD::__new_alloc::deallocate((void*)__p, __n * sizeof(value_type)); - } - // backwards compatibility - void deallocate(pointer __p) const { if (__p != 0) EH_STD::__new_alloc::deallocate((void*)__p, sizeof(value_type)); } - size_type max_size() const _STLP_NOTHROW { return size_t(-1) / sizeof(value_type); } - void construct(pointer __p, const _Tp& __val) const { stlport::construct(__p, __val); } - void destroy(pointer __p) const { stlport::destroy(__p); } -}; - -template <class _T1> inline bool _STLP_CALL operator==(const EH_allocator<_T1>&, const EH_allocator<_T1>&) { return true; } -template <class _T1> inline bool _STLP_CALL operator!=(const EH_allocator<_T1>&, const EH_allocator<_T1>&) { return false; } - -_STLP_BEGIN_NAMESPACE -// If custom allocators are being used without member template classes support : -// user (on purpose) is forced to define rebind/get operations !!! -template <class _Tp1, class _Tp2> -inline EH_allocator<_Tp2>& _STLP_CALL -__stl_alloc_rebind(EH_allocator<_Tp1>& __a, const _Tp2*) { return (EH_allocator<_Tp2>&)(__a); } -template <class _Tp1, class _Tp2> -inline EH_allocator<_Tp2> _STLP_CALL -__stl_alloc_create(const EH_allocator<_Tp1>&, const _Tp2*) { return EH_allocator<_Tp2>(); } -_STLP_END_NAMESPACE - -# define eh_allocator(T) ::EH_allocator<T> - -# define EH_BIT_VECTOR_IMPLEMENTED - -# if defined(_STLP_CLASS_PARTIAL_SPECIALIZATION) && !defined(_STLP_NO_BOOL) -# define EH_BIT_VECTOR EH_STD::vector<bool, eh_allocator(bool) > -# else -# ifdef _STLP_NO_BOOL -# undef EH_BIT_VECTOR_IMPLEMENTED -# else -# define EH_BIT_VECTOR EH_STD::vector<bool, eh_allocator(bool) > -# endif -# endif - -#else // !USE_SGI_STL -//========================================================================= -// Configuration for testing other non-SGI STL implementations -//========================================================================= - -// Metrowerks configuration -# ifdef __MWERKS__ - -# define EH_ASSERT assert -// Get MSL configuration header -# include <ansi_parms.h> - -# if __MSL__ >= 24 - -# define EH_NEW_HEADERS 1 -# if defined (_MSL_USING_NAMESPACE) -# define EH_USE_NAMESPACES 1 -# endif -# define EH_BIT_VECTOR vector<bool> -# define EH_DISTANCE( a, b, result ) do { result = distance( a, b ); } while (0) - -# else - -# error No configuration for earlier versions of MSL - -# endif // __MSL__ >= 24 - -// Bugs fixed in CWPro3 -# if __MWERKS__ < 0x2100 -# define EH_TEMPLATE_PARAM_SUBTYPE_BUG 1 -# endif - -// Bugs in CWPro3 -# if __MWERKS__ <= 0x2110 -# define EH_MULTI_CONST_TEMPLATE_ARG_BUG 1 -# else -# pragma warning not sure the above bug is fixed yet -# endif - -# define EH_SLIST_IMPLEMENTED 1 -//# define EH_HASHED_CONTAINERS_IMPLEMENTED 1 - -# define EH_NEW_IOSTREAMS 1 -# define EH_USE_NOTHROW 1 -# endif // Metrowerks configuration - -#if defined (__SUNPRO_CC) -# define stl_destroy __RWSTD::__destroy -# define EH_DISTANCE( a, b, result ) distance( a, b, result ) -# define EH_BIT_VECTOR EH_STD::vector<bool> -# define EH_NEW_HEADERS 1 -# define EH_USE_NAMESPACES 1 -# define EH_NEW_IOSTREAMS 1 -# define EH_ASSERT assert -# define EH_STRING_IMPLEMENTED 1 -# elif defined (__KCC) -# define stl_destroy EH_STD::destroy -# define EH_DISTANCE( a, b, result ) do { result = distance( a, b ); } while (0) -# define EH_BIT_VECTOR EH_STD::vector<bool> -# define EH_NEW_HEADERS 1 -# define EH_USE_NAMESPACES 1 -# define EH_NEW_IOSTREAMS 1 -# define EH_ASSERT assert -# define EH_CSTD -# define EH_STRING_IMPLEMENTED 1 -# define EH_MULTI_CONST_TEMPLATE_ARG_BUG 1 -# define EH_SELECT1ST_HINT select1st -# else -# define stl_destroy destroy -#endif - -// -// Compiler-independent configuration -// -# ifdef EH_USE_NAMESPACES -# ifdef STLPORT -# define EH_STD STLPORT -# else -# define EH_STD std -# endif -# ifdef STLPORT_CSTD -# define EH_STD STLPORT_CSTD -# else -# define EH_STD std -# endif -# define EH_BEGIN_NAMESPACE namespace EH_STD { -# define EH_END_NAMESPACE } -# else -# define EH_BEGIN_NAMESPACE -# define EH_END_NAMESPACE -# define EH_STD -# endif - -# ifndef EH_CSTD -# define EH_CSTD EH_STD -# endif - -#endif // !USE_SGI_STL - - -// -// Library-independent configuration. -// -#if defined( EH_MULTI_CONST_TEMPLATE_ARG_BUG) && !defined( EH_SELECT1ST_HINT ) -template <class Pair, class U> -// JDJ (CW Pro1 doesn't like const when first_type is also const) -struct eh_select1st_hint : public unary_function<Pair, U> { - const U& operator () (const Pair& x) const { return x.first; } -}; -# define EH_SELECT1ST_HINT eh_select1st_hint -#endif - - -#if EH_USE_NAMESPACES -# define EH_USE_STD using namespace EH_STD; -#else -# define EH_USE_STD -#endif - -#if defined (EH_USE_NAMESPACES) && !defined(_STLP_VENDOR_GLOBAL_CSTD) -# define USING_CSTD_NAME(name) using EH_CSTD :: name; -#else -# define USING_CSTD_NAME(name) -#endif - -#endif // INCLUDED_MOTU_Prefix |