#ifndef EINA_CLONE_ALLOCATORS_HH_ #define EINA_CLONE_ALLOCATORS_HH_ #include namespace efl { namespace eina { struct heap_copy_allocator { template static T* allocate_clone(T const& v) { return new T(v); } template static void deallocate_clone(T* p) { #ifdef EFL_EINA_CXX11 std::default_delete()(p); #else delete p; #endif } }; struct heap_clone_allocator { template static T* allocate_clone(T const& v) { return new_clone(v); } template static void deallocate_clone(T* p) { delete_clone(p); } }; struct view_clone_allocator { template static T* allocate_clone(T const& v) { return const_cast(&v); } template static void deallocate_clone(T*) { } }; struct heap_no_copy_allocator { template static void deallocate_clone(T* p) { #ifdef EFL_EINA_CXX11 std::default_delete()(p); #else delete p; #endif } }; } } #endif