mirror of
https://github.com/boostorg/detail.git
synced 2025-07-31 04:47:15 +02:00
Merge trunk
[SVN r68911]
This commit is contained in:
47
include/boost/detail/bitmask.hpp
Normal file
47
include/boost/detail/bitmask.hpp
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
// boost/detail/bitmask.hpp ------------------------------------------------//
|
||||||
|
|
||||||
|
// Copyright Beman Dawes 2006
|
||||||
|
|
||||||
|
// Distributed under the Boost Software License, Version 1.0
|
||||||
|
// http://www.boost.org/LICENSE_1_0.txt
|
||||||
|
|
||||||
|
// Usage: enum foo { a=1, b=2, c=4 };
|
||||||
|
// BOOST_BITMASK( foo );
|
||||||
|
//
|
||||||
|
// void f( foo arg );
|
||||||
|
// ...
|
||||||
|
// f( a | c );
|
||||||
|
|
||||||
|
#ifndef BOOST_BITMASK_HPP
|
||||||
|
#define BOOST_BITMASK_HPP
|
||||||
|
|
||||||
|
#include <boost/cstdint.hpp>
|
||||||
|
|
||||||
|
#define BOOST_BITMASK(Bitmask) \
|
||||||
|
\
|
||||||
|
inline Bitmask operator| (Bitmask x , Bitmask y ) \
|
||||||
|
{ return static_cast<Bitmask>( static_cast<boost::int_least32_t>(x) \
|
||||||
|
| static_cast<boost::int_least32_t>(y)); } \
|
||||||
|
\
|
||||||
|
inline Bitmask operator& (Bitmask x , Bitmask y ) \
|
||||||
|
{ return static_cast<Bitmask>( static_cast<boost::int_least32_t>(x) \
|
||||||
|
& static_cast<boost::int_least32_t>(y)); } \
|
||||||
|
\
|
||||||
|
inline Bitmask operator^ (Bitmask x , Bitmask y ) \
|
||||||
|
{ return static_cast<Bitmask>( static_cast<boost::int_least32_t>(x) \
|
||||||
|
^ static_cast<boost::int_least32_t>(y)); } \
|
||||||
|
\
|
||||||
|
inline Bitmask operator~ (Bitmask x ) \
|
||||||
|
{ return static_cast<Bitmask>(~static_cast<boost::int_least32_t>(x)); } \
|
||||||
|
\
|
||||||
|
inline Bitmask & operator&=(Bitmask & x , Bitmask y) \
|
||||||
|
{ x = x & y ; return x ; } \
|
||||||
|
\
|
||||||
|
inline Bitmask & operator|=(Bitmask & x , Bitmask y) \
|
||||||
|
{ x = x | y ; return x ; } \
|
||||||
|
\
|
||||||
|
inline Bitmask & operator^=(Bitmask & x , Bitmask y) \
|
||||||
|
{ x = x ^ y ; return x ; }
|
||||||
|
|
||||||
|
#endif // BOOST_BITMASK_HPP
|
||||||
|
|
Reference in New Issue
Block a user