mirror of
https://github.com/boostorg/dynamic_bitset.git
synced 2026-01-26 18:42:10 +00:00
Compare commits
9 Commits
boost-1.57
...
boost-1.61
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0f48010783 | ||
|
|
1d59cc4788 | ||
|
|
9879dd05b5 | ||
|
|
29ba0c22b1 | ||
|
|
8b7374b1db | ||
|
|
2091a4fd18 | ||
|
|
225064d355 | ||
|
|
b151c97fd2 | ||
|
|
a93174ddf9 |
@@ -2,6 +2,7 @@
|
||||
// Copyright (c) 2001 Jeremy Siek
|
||||
// Copyright (c) 2003-2006, 2008 Gennaro Prota
|
||||
// Copyright (c) 2014 Ahmed Charles
|
||||
// Copyright (c) 2014 Riccardo Marcangelo
|
||||
//
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||
@@ -367,6 +368,20 @@ struct bitset_test {
|
||||
BOOST_CHECK(b.size() == 0);
|
||||
}
|
||||
|
||||
static void pop_back(const Bitset& lhs)
|
||||
{
|
||||
Bitset b(lhs);
|
||||
b.pop_back();
|
||||
BOOST_CHECK(b.size() == lhs.size() - 1);
|
||||
for (std::size_t i = 0; i < b.size(); ++i)
|
||||
BOOST_CHECK(b[i] == lhs[i]);
|
||||
|
||||
b.pop_back();
|
||||
BOOST_CHECK(b.size() == lhs.size() - 2);
|
||||
for (std::size_t j = 0; j < b.size(); ++j)
|
||||
BOOST_CHECK(b[j] == lhs[j]);
|
||||
}
|
||||
|
||||
static void append_bit(const Bitset& lhs)
|
||||
{
|
||||
Bitset b(lhs);
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Copyright (c) 2001 Jeremy Siek
|
||||
// Copyright (c) 2003-2006 Gennaro Prota
|
||||
// Copyright (c) 2014 Ahmed Charles
|
||||
// Copyright (c) 2014 Riccardo Marcangelo
|
||||
//
|
||||
// Copyright (c) 2014 Glen Joseph Fernandes
|
||||
// glenfe at live dot com
|
||||
@@ -27,6 +28,11 @@ class minimal_allocator {
|
||||
public:
|
||||
typedef T value_type;
|
||||
|
||||
minimal_allocator() {}
|
||||
|
||||
template <typename U>
|
||||
minimal_allocator(const minimal_allocator<U>&) {}
|
||||
|
||||
T* allocate(std::size_t n) {
|
||||
void* p = std::malloc(sizeof(T) * n);
|
||||
if (!p) {
|
||||
@@ -379,6 +385,25 @@ void run_test_cases( BOOST_EXPLICIT_TEMPLATE_TYPE(Block) )
|
||||
Tests::clear(a);
|
||||
}
|
||||
//=====================================================================
|
||||
// Test pop back
|
||||
{
|
||||
boost::dynamic_bitset<Block> a(std::string("01"));
|
||||
Tests::pop_back(a);
|
||||
}
|
||||
{
|
||||
boost::dynamic_bitset<Block> a(std::string("10"));
|
||||
Tests::pop_back(a);
|
||||
}
|
||||
{
|
||||
const int size_to_fill_all_blocks = 4 * bits_per_block;
|
||||
boost::dynamic_bitset<Block> a(size_to_fill_all_blocks, 255ul);
|
||||
Tests::pop_back(a);
|
||||
}
|
||||
{
|
||||
boost::dynamic_bitset<Block> a(long_string);
|
||||
Tests::pop_back(a);
|
||||
}
|
||||
//=====================================================================
|
||||
// Test append bit
|
||||
{
|
||||
boost::dynamic_bitset<Block> a;
|
||||
|
||||
@@ -180,6 +180,7 @@ public:
|
||||
void <a href=
|
||||
"#resize">resize</a>(size_type num_bits, bool value = false);
|
||||
void <a href="#clear">clear</a>();
|
||||
void <a href="#pop_back">pop_back</a>();
|
||||
void <a href="#push_back">push_back</a>(bool bit);
|
||||
void <a href="#append1">append</a>(Block block);
|
||||
|
||||
@@ -365,7 +366,7 @@ were chosen for this reason.</p>
|
||||
<p><tt>dynamic_bitset</tt> does not throw exceptions when a
|
||||
precondition is violated (as is done in <tt>std::bitset</tt>).
|
||||
Instead <tt>assert</tt> is used. See the guidelines for <a href=
|
||||
"http://www.boost.org/more/error_handling.html">Error and Exception Handling</a>
|
||||
"http://www.boost.org/community/error_handling.html">Error and Exception Handling</a>
|
||||
for the explanation.</p>
|
||||
|
||||
<h3><a id="header-files">Header Files</a></h3>
|
||||
@@ -834,6 +835,15 @@ void <a id="clear">clear</a>()
|
||||
<b>Effects:</b> The size of the bitset becomes zero.<br />
|
||||
<b>Throws:</b> nothing.
|
||||
|
||||
<hr />
|
||||
<pre>
|
||||
void <a id="pop_back">pop_back</a>();
|
||||
</pre>
|
||||
|
||||
<b>Precondition:</b> <tt>!this->empty()</tt>.<br />
|
||||
<b>Effects:</b> Decreases the size of the bitset by one.<br />
|
||||
<b>Throws:</b> nothing.
|
||||
|
||||
<hr />
|
||||
<pre>
|
||||
void <a id="push_back">push_back</a>(bool value);
|
||||
|
||||
@@ -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>
|
||||
@@ -746,6 +748,22 @@ push_back(bool bit)
|
||||
set(sz, 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
|
||||
|
||||
16
meta/libraries.json
Normal file
16
meta/libraries.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"key": "dynamic_bitset",
|
||||
"name": "Dynamic Bitset",
|
||||
"authors": [
|
||||
"Jeremy Siek",
|
||||
"Chuck Allison"
|
||||
],
|
||||
"description": "The dynamic_bitset class represents a set of bits. It provides accesses to the value of individual bits via an operator[] and provides all of the bitwise operators that one can apply to builtin integers, such as operator& and operator<<. The number of bits in the set is specified at runtime via a parameter to the constructor of the dynamic_bitset.",
|
||||
"documentation": "dynamic_bitset.html",
|
||||
"category": [
|
||||
"Containers"
|
||||
],
|
||||
"maintainers": [
|
||||
"Jeremy Siek <jeremy.siek -at- gmail.com>"
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user