BVB Source Codes

mars Show bitwise_cast.hpp Source code

Return Download mars: download bitwise_cast.hpp Source code - Download mars Source code - Type:.hpp
  1. /*
  2.  * Distributed under the Boost Software License, Version 1.0.
  3.  * (See accompanying file LICENSE_1_0.txt or copy at
  4.  * http://www.boost.org/LICENSE_1_0.txt)
  5.  *
  6.  * Copyright (c) 2009 Helge Bahmann
  7.  * Copyright (c) 2012 Tim Blechmann
  8.  * Copyright (c) 2013 - 2014 Andrey Semashev
  9.  */
  10. /*!
  11.  * \file   atomic/detail/bitwise_cast.hpp
  12.  *
  13.  * This header defines \c bitwise_cast used to convert between storage and value types
  14.  */
  15.  
  16. #ifndef BOOST_ATOMIC_DETAIL_BITWISE_CAST_HPP_INCLUDED_
  17. #define BOOST_ATOMIC_DETAIL_BITWISE_CAST_HPP_INCLUDED_
  18.  
  19. #include <boost/atomic/detail/config.hpp>
  20. #if !defined(BOOST_ATOMIC_DETAIL_HAS_BUILTIN_MEMCPY)
  21. #include <cstring>
  22. #endif
  23.  
  24. #ifdef BOOST_HAS_PRAGMA_ONCE
  25. #pragma once
  26. #endif
  27.  
  28. namespace mars_boost {} namespace boost = mars_boost; namespace mars_boost {
  29. namespace atomics {
  30. namespace detail {
  31.  
  32. template< typename To, typename From >
  33. BOOST_FORCEINLINE To bitwise_cast(From const& from) BOOST_NOEXCEPT
  34. {
  35.     struct
  36.     {
  37.         To to;
  38.     }
  39.     value = {};
  40.     BOOST_ATOMIC_DETAIL_MEMCPY
  41.     (
  42.         &reinterpret_cast< char& >(value.to),
  43.         &reinterpret_cast< const char& >(from),
  44.         (sizeof(From) < sizeof(To) ? sizeof(From) : sizeof(To))
  45.     );
  46.     return value.to;
  47. }
  48.  
  49. } // namespace detail
  50. } // namespace atomics
  51. } // namespace mars_boost
  52.  
  53. #endif // BOOST_ATOMIC_DETAIL_BITWISE_CAST_HPP_INCLUDED_
  54.  
downloadbitwise_cast.hpp Source code - Download mars Source code
Related Source Codes/Software:
Hero - Elegant transition library for iOS & tvOS 2017-06-09
deep-photo-styletransfer - Code and data for paper "Deep Photo Style Transfer... 2017-06-09
mastodon - A GNU Social-compatible microblogging server ... 2017-06-09
plyr - A simple HTML5, YouTube and Vimeo player ... 2017-06-08
prepack - Prepack is a partial evaluator for JavaScript. Pre... 2017-06-08
Public-APIs - 2017-06-09
lottie-ios - An iOS library to natively render After Effects ve... 2017-06-09
Awesome-Hacking - A collection of various awesome lists for hackers,... 2017-06-09
algorithms - Minimal examples of data structures and algorithms... 2017-06-10
lectures - Oxford Deep NLP 2017 course 2017-06-10
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top