Commit 1dde76c8 authored by Mark OLESEN's avatar Mark OLESEN Committed by Andrew Heather
Browse files

ENH: add bitSet::begin(pos) to provide alternative start for indexing

parent d4a0dc63
......@@ -412,6 +412,30 @@ int main(int argc, char *argv[])
);
// Test begin vs find_first etc
{
// Clear some values
list4.unset(labelRange(0, 10));
Info<< nl
<< "Test first vs begin" << nl
<< " values:" << flatOutput(list4.toc()) << nl
<< " first:" << list4.find_first() << nl
<< " begin:" << *(list4.begin()) << nl
<< " begin(0):" << *(list4.begin(0)) << nl;
// With offset
Info<< nl
<< "Test first vs begin" << nl
<< " next(35):" << list4.find_next(35)
<< " begin(35):" << *(list4.begin(35)) << nl
<< " next(40):" << list4.find_next(40)
<< " begin(40):" << *(list4.begin(40)) << nl
<< nl;
}
// Construct from labelUList, labelUIndList
{
DynamicList<label> indices({10, 50, 300});
......
......@@ -478,6 +478,9 @@ public:
//- Construct begin iterator
inline const_iterator(const bitSet* bitset);
//- Construct iterator, starting at or beyond the given position
inline const_iterator(const bitSet* bitset, label pos);
public:
//- Return the current \a on position
......@@ -497,6 +500,14 @@ public:
//- Iterator set to the position of the first \a on bit
inline const_iterator cbegin() const;
//- Iterator set to the position of the first \a on bit that occurs
//- at or beyond the given position
inline const_iterator begin(label pos) const;
//- Iterator set to the position of the first \a on bit that occurs
//- at or beyond the given position
inline const_iterator cbegin(label pos) const;
//- Iterator beyond the end of the bitSet
inline const_iterator end() const noexcept;
......
......@@ -230,6 +230,17 @@ inline Foam::bitSet::const_iterator::const_iterator(const bitSet* parent)
{}
inline Foam::bitSet::const_iterator::const_iterator
(
const bitSet* parent,
label pos
)
:
set_(parent),
pos_(set_->find_next(pos-1))
{}
inline Foam::label Foam::bitSet::const_iterator::operator*() const noexcept
{
return pos_;
......@@ -273,6 +284,18 @@ inline Foam::bitSet::const_iterator Foam::bitSet::cbegin() const
}
inline Foam::bitSet::const_iterator Foam::bitSet::begin(label pos) const
{
return const_iterator(this, pos);
}
inline Foam::bitSet::const_iterator Foam::bitSet::cbegin(label pos) const
{
return const_iterator(this, pos);
}
inline Foam::bitSet::const_iterator Foam::bitSet::end() const noexcept
{
return const_iterator();
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment