summaryrefslogtreecommitdiff
path: root/boost/dynamic_bitset/dynamic_bitset.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/dynamic_bitset/dynamic_bitset.hpp')
-rw-r--r--boost/dynamic_bitset/dynamic_bitset.hpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/boost/dynamic_bitset/dynamic_bitset.hpp b/boost/dynamic_bitset/dynamic_bitset.hpp
index 4d6011c2e9..f6002d84e8 100644
--- a/boost/dynamic_bitset/dynamic_bitset.hpp
+++ b/boost/dynamic_bitset/dynamic_bitset.hpp
@@ -6,6 +6,7 @@
//
// Copyright (c) 2014 Glen Joseph Fernandes
// glenfe at live dot com
+// Copyright (c) 2014 Riccardo Marcangelo
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
@@ -227,6 +228,7 @@ public:
void resize(size_type num_bits, bool value = false);
void clear();
void push_back(bool bit);
+ void pop_back();
void append(Block block);
template <typename BlockInputIterator>
@@ -748,6 +750,22 @@ push_back(bool bit)
template <typename Block, typename Allocator>
void dynamic_bitset<Block, Allocator>::
+pop_back()
+{
+ const size_type old_num_blocks = num_blocks();
+ const size_type required_blocks = calc_num_blocks(m_num_bits - 1);
+
+ if (required_blocks != old_num_blocks) {
+ m_bits.pop_back();
+ }
+
+ --m_num_bits;
+ m_zero_unused_bits();
+}
+
+
+template <typename Block, typename Allocator>
+void dynamic_bitset<Block, Allocator>::
append(Block value) // strong guarantee
{
const block_width_type r = count_extra_bits();