Home | History | Annotate | Download | only in detail
      1 //
      2 // detail/fenced_block.hpp
      3 // ~~~~~~~~~~~~~~~~~~~~~~~
      4 //
      5 // Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
      6 //
      7 // Distributed under the Boost Software License, Version 1.0. (See accompanying
      8 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
      9 //
     10 
     11 #ifndef ASIO_DETAIL_FENCED_BLOCK_HPP
     12 #define ASIO_DETAIL_FENCED_BLOCK_HPP
     13 
     14 
     15 #include "asio/detail/config.hpp"
     16 
     17 #if !defined(ASIO_HAS_THREADS)    || defined(ASIO_DISABLE_FENCED_BLOCK)
     18 # include "asio/detail/null_fenced_block.hpp"
     19 #elif defined(__MACH__) && defined(__APPLE__)
     20 # include "asio/detail/macos_fenced_block.hpp"
     21 #elif defined(__sun)
     22 # include "asio/detail/solaris_fenced_block.hpp"
     23 #elif defined(__GNUC__) && defined(__arm__)    && !defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)
     24 # include "asio/detail/gcc_arm_fenced_block.hpp"
     25 #elif defined(__GNUC__) && (defined(__hppa) || defined(__hppa__))
     26 # include "asio/detail/gcc_hppa_fenced_block.hpp"
     27 #elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
     28 # include "asio/detail/gcc_x86_fenced_block.hpp"
     29 #elif defined(__GNUC__)    && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4))    && !defined(__INTEL_COMPILER) && !defined(__ICL)    && !defined(__ICC) && !defined(__ECC) && !defined(__PATHSCALE__)
     30 # include "asio/detail/gcc_sync_fenced_block.hpp"
     31 #else
     32 # include "asio/detail/null_fenced_block.hpp"
     33 #endif
     34 
     35 namespace asio {
     36 namespace detail {
     37 
     38 #if !defined(ASIO_HAS_THREADS)    || defined(ASIO_DISABLE_FENCED_BLOCK)
     39 typedef null_fenced_block fenced_block;
     40 #elif defined(__MACH__) && defined(__APPLE__)
     41 typedef macos_fenced_block fenced_block;
     42 #elif defined(__sun)
     43 typedef solaris_fenced_block fenced_block;
     44 #elif defined(__GNUC__) && defined(__arm__)    && !defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)
     45 typedef gcc_arm_fenced_block fenced_block;
     46 #elif defined(__GNUC__) && (defined(__hppa) || defined(__hppa__))
     47 typedef gcc_hppa_fenced_block fenced_block;
     48 #elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
     49 typedef gcc_x86_fenced_block fenced_block;
     50 #elif defined(__GNUC__)    && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4))    && !defined(__INTEL_COMPILER) && !defined(__ICL)    && !defined(__ICC) && !defined(__ECC) && !defined(__PATHSCALE__)
     51 typedef gcc_sync_fenced_block fenced_block;
     52 #else
     53 typedef null_fenced_block fenced_block;
     54 #endif
     55 
     56 } // namespace detail
     57 } // namespace asio
     58 
     59 #endif // ASIO_DETAIL_FENCED_BLOCK_HPP
     60