From 98a4949e960a855ebeb69ba71b4894a8d155018d Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Mon, 18 Jan 2016 15:51:34 +0100 Subject: [PATCH] Better version of The implementation is simplified. If no implementation of `::atomic` is available, `CGAL_NO_ATOMIC` is defined to an error message (replaced the `#error`). --- Installation/include/CGAL/atomic.h | 47 +++++++++++++++++------------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/Installation/include/CGAL/atomic.h b/Installation/include/CGAL/atomic.h index 157cca70c26..2ae15fa616e 100644 --- a/Installation/include/CGAL/atomic.h +++ b/Installation/include/CGAL/atomic.h @@ -1,4 +1,4 @@ -// Copyright (c) 2016 GeometryFactory (France) +// Copyright (c) 2016 GeometryFactory Sarl (France) // All rights reserved. // // This file is part of CGAL (www.cgal.org); you can redistribute it and/or @@ -21,29 +21,36 @@ #include #ifdef CGAL_HAS_THREADS + # ifdef CGAL_CAN_USE_CXX11_ATOMIC # include - - namespace CGAL { - namespace cpp11 { - using std::atomic; - } - } - +# define CGAL_ATOMIC_NS std # else // not CGAL_CAN_USE_CXX11_ATOMIC -# if BOOST_VERSION < 105300 -# error Boost.Atomic was introduced in Boost-1.53 -# endif -# include - - namespace CGAL { - namespace cpp11 { - using boost::atomic; - } - } - +# if BOOST_VERSION >= 105300 +# include +# define CGAL_ATOMIC_NS boost +# else // BOOST_VERSION < 105300 +# define CGAL_NO_ATOMIC "Boost.Atomic was introduced in Boost-1.53" +# endif // BOOST_VERSION < 105300 # endif // not CGAL_CAN_USE_CXX11_ATOMIC + +# ifndef CGAL_NO_ATOMIC + namespace CGAL { + namespace cpp11 { + using CGAL_ATOMIC_NS ::atomic; + + using CGAL_ATOMIC_NS ::memory_order_relaxed; + using CGAL_ATOMIC_NS ::memory_order_consume; + using CGAL_ATOMIC_NS ::memory_order_acquire; + using CGAL_ATOMIC_NS ::memory_order_release; + using CGAL_ATOMIC_NS ::memory_order_acq_rel; + using CGAL_ATOMIC_NS ::memory_order_seq_cst; + + using CGAL_ATOMIC_NS ::atomic_thread_fence; + } + } +# endif // CGAL_ATOMIC_NS + #endif // CGAL_HAS_THREADS #endif // CGAL_ATOMIC_H -