]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/boost/regex/v4/indexed_bit_flag.hpp
import quincy beta 17.1.0
[ceph.git] / ceph / src / boost / boost / regex / v4 / indexed_bit_flag.hpp
1 /*
2 *
3 * Copyright (c) 2020
4 * John Maddock
5 *
6 * Use, modification and distribution are subject to the
7 * Boost Software License, Version 1.0. (See accompanying file
8 * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9 *
10 */
11
12 /*
13 * LOCATION: see http://www.boost.org for most recent version.
14 * FILE basic_regex_parser.cpp
15 * VERSION see <boost/version.hpp>
16 * DESCRIPTION: Declares template class basic_regex_parser.
17 */
18
19 #include <boost/regex/config.hpp>
20 #include <set>
21
22 #ifndef BOOST_REGEX_V4_INDEXED_BIT_FLAG_HPP
23 #define BOOST_REGEX_V4_INDEXED_BIT_FLAG_HPP
24
25 namespace boost{
26 namespace BOOST_REGEX_DETAIL_NS{
27
28 class indexed_bit_flag
29 {
30 boost::uint64_t low_mask;
31 std::set<std::size_t> mask_set;
32 public:
33 indexed_bit_flag() : low_mask(0) {}
34 void set(std::size_t i)
35 {
36 if (i < std::numeric_limits<boost::uint64_t>::digits - 1)
37 low_mask |= static_cast<boost::uint64_t>(1u) << i;
38 else
39 mask_set.insert(i);
40 }
41 bool test(std::size_t i)
42 {
43 if (i < std::numeric_limits<boost::uint64_t>::digits - 1)
44 return low_mask & static_cast<boost::uint64_t>(1u) << i ? true : false;
45 else
46 return mask_set.find(i) != mask_set.end();
47 }
48 };
49
50 } // namespace BOOST_REGEX_DETAIL_NS
51 } // namespace boost
52
53
54 #endif