/**************************************************************************** * Core Library Version 1.7, August 2004 * Copyright (c) 1995-2004 Exact Computation Project * All rights reserved. * * This file is part of CGAL (www.cgal.org). * You can redistribute it and/or modify it under the terms of the GNU * Lesser General Public License as published by the Free Software Foundation, * either version 3 of the License, or (at your option) any later version. * * Licensees holding a valid commercial license may use this file in * accordance with the commercial license agreement provided with the * software. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * * $URL$ * $Id$ * SPDX-License-Identifier: LGPL-3.0+ ***************************************************************************/ #ifndef _CORE_IMPL_H_ #define _CORE_IMPL_H_ #include // The following lines only for MS Visual C++ #ifdef _MSC_VER #pragma warning(disable: 4291) // no matching operator delete found #pragma warning(disable: 4146) #pragma warning(disable: 4267) #pragma warning(disable: 4244) #endif // condition preprocessor for inline function #ifndef CORE_DISABLE_INLINE #define CORE_INLINE inline #else #define CORE_INLINE #endif #ifdef CGAL_HEADER_ONLY #define CGAL_INLINE_FUNCTION inline #else #define CGAL_INLINE_FUNCTION #endif // Macros for memory pool #ifdef CORE_DISABLE_MEMORY_POOL #define CORE_NEW(T) #define CORE_DELETE(T) #define CORE_MEMORY_IMPL(T) #define CORE_MEMORY_IMPL_TEMPLATE_WITH_ONE_ARG(T) #else #include #define CORE_NEW(T) void *operator new( size_t size); #define CORE_DELETE(T) void operator delete( void *p, size_t ); #define CORE_MEMORY_IMPL(T) \ CGAL_INLINE_FUNCTION void *T::operator new( size_t size) \ { return MemoryPool::global_allocator().allocate(size); } \ CGAL_INLINE_FUNCTION void T::operator delete( void *p, size_t ) \ { MemoryPool::global_allocator().free(p); } #define CORE_MEMORY_IMPL_TEMPLATE_WITH_ONE_ARG(C) \ template \ CGAL_INLINE_FUNCTION void *C::operator new( size_t size) \ { return MemoryPool >::global_allocator().allocate(size); } \ template \ CGAL_INLINE_FUNCTION void C::operator delete( void *p, size_t ) \ { MemoryPool >::global_allocator().free(p); } #endif // include some common header files #include #include #include #include #include #include #include #include #include #include #include #include #endif // _CORE_IMPL_H_