1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
/* Used in Boost.MultiIndex tests.
*
* Copyright 2003-2018 Joaquin M Lopez Munoz.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*
* See http://www.boost.org/libs/multi_index for library home page.
*/
#ifndef BOOST_MULTI_INDEX_TEST_SMALL_ALLOCATOR_HPP
#define BOOST_MULTI_INDEX_TEST_SMALL_ALLOCATOR_HPP
#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
template<typename T>
class small_allocator
{
public:
typedef unsigned char size_type;
typedef signed char difference_type;
typedef T* pointer;
typedef const T* const_pointer;
typedef void* void_pointer;
typedef const void* const_void_pointer;
typedef T& reference;
typedef const T& const_reference;
typedef T value_type;
template<class U>struct rebind{typedef small_allocator<U> other;};
small_allocator(){}
small_allocator(const small_allocator<T>&){}
template<class U>small_allocator(const small_allocator<U>&,int=0){}
pointer allocate(size_type n)
{
return pointer((T*)(new char[n*sizeof(T)]));
}
void deallocate(pointer p,size_type)
{
delete[](char *)&*p;
}
size_type max_size()const{return (size_type)(-1);}
friend bool operator==(const small_allocator&,const small_allocator&)
{
return true;
}
friend bool operator!=(const small_allocator&,const small_allocator&)
{
return false;
}
};
#endif
|