/
zOMGdev
/
cppcms
Обзор
Документация
Войти
/
zOMGdev
/
cppcms
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
private/basic_allocator.h
88 строк
2 KB
Artyom Beilis
Fixed warnings generated by clang
02 мар 2017, 15:00
02 мар 2017, 15:00
a46bb45
Код
Авторство
О чём код?
/////////////////////////////////////////////////////////////////////////////// // // Copyright (C) 2008-2012 Artyom Beilis (Tonkikh) <artyomtnk@yahoo.com> // // See accompanying file COPYING.TXT file for licensing details. // /////////////////////////////////////////////////////////////////////////////// #ifndef CPPCMS_IMPL_BASIC_ALLOCATOR_H #define CPPCMS_IMPL_BASIC_ALLOCATOR_H #include <limits> namespace cppcms { namespace impl { template<typename Base,typename T> class basic_allocator { public : Base &self() { return static_cast<Base &>(*this); } Base const &self() const { return static_cast<Base const &>(*this); } typedef T value_type; typedef T *pointer; typedef T &reference; typedef const T &const_reference; typedef const T *const_pointer; typedef std::size_t size_type; typedef std::ptrdiff_t difference_type; basic_allocator() {} pointer allocate(size_type cnt, std::allocator<void>::const_pointer = 0) const { void *memory=self().malloc(cnt*sizeof(T)); if(!memory) { throw std::bad_alloc(); } return (pointer)memory; }; void deallocate(pointer p, size_type) const { self().free(p); }; void construct(pointer p, const T& t) const { new(p) T(t); } void destroy(pointer p) const { p->~T(); } pointer address(reference x) const { return &x; } const_pointer address(const_reference x) const { return &x; } bool operator==(basic_allocator const&) const { return true; } bool operator!=(basic_allocator const&) const { return false; } size_type max_size() const throw() { return std::numeric_limits<size_t>::max(); } }; } // impl } // cppcms #endif