⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prefix.h

📁 symbian 上的stl_port进过编译的。
💻 H
字号:
/***********************************************************************************  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.//=========================================================================// # define _STLP_USE_RAW_SGI_ALLOCATORS#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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -