diff options
Diffstat (limited to 'intern/memutil')
-rw-r--r-- | intern/memutil/MEM_Allocator.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/intern/memutil/MEM_Allocator.h b/intern/memutil/MEM_Allocator.h index 40716496d16..b3a6df74ba2 100644 --- a/intern/memutil/MEM_Allocator.h +++ b/intern/memutil/MEM_Allocator.h @@ -29,6 +29,12 @@ #include "guardedalloc/MEM_guardedalloc.h" +#ifdef _MSC_VER +#if _MSC_VER < 1300 // 1200 == VC++ 6.0 according to boost +#define MS_VISUALC_6_0_WORKAROUND 1 +#endif +#endif + template<typename _Tp> struct MEM_Allocator { @@ -40,16 +46,20 @@ struct MEM_Allocator typedef const _Tp& const_reference; typedef _Tp value_type; +#ifndef MS_VISUALC_6_0_WORKAROUND template<typename _Tp1> struct rebind { typedef MEM_Allocator<_Tp1> other; }; +#endif MEM_Allocator() throw() {} MEM_Allocator(const MEM_Allocator& __a) throw() {} +#ifndef MS_VISUALC_6_0_WORKAROUND template<typename _Tp1> MEM_Allocator(const MEM_Allocator<_Tp1> __a) throw() { } +#endif ~MEM_Allocator() throw() {} @@ -57,6 +67,11 @@ struct MEM_Allocator const_pointer address(const_reference __x) const { return &__x; } +#ifdef MS_VISUALC_6_0_WORKAROUND + char *_Charalloc(size_type n) { + return (char *) MEM_mallocN(n, "STL MEM_Allocator VC6.0"); + } +#endif // NB: __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) { @@ -68,10 +83,17 @@ struct MEM_Allocator return __ret; } +#ifndef MS_VISUALC_6_0_WORKAROUND // __p is not permitted to be a null pointer. void deallocate(pointer __p, size_type){ MEM_freeN(__p); } +#else + // __p is not permitted to be a null pointer. + void deallocate(void* __p, size_type){ + MEM_freeN(__p); + } +#endif size_type max_size() const throw() { return size_t(-1) / sizeof(_Tp); |