ENH: make sliceRange modifiable - similar to labelRange

This commit is contained in:
Mark Olesen
2023-11-18 11:48:08 +01:00
parent a0b9732321
commit d6d28ccfa2
3 changed files with 35 additions and 14 deletions

View File

@ -1,3 +1,3 @@
Test-sliceRange.C Test-sliceRange.cxx
EXE = $(FOAM_USER_APPBIN)/Test-sliceRange EXE = $(FOAM_USER_APPBIN)/Test-sliceRange

View File

@ -25,6 +25,7 @@ License
Description Description
Test slice range Test slice range
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "argList.H" #include "argList.H"
@ -157,7 +158,7 @@ int main(int argc, char *argv[])
// Some iterator tests // Some iterator tests
{ {
const sliceRange range(25, 8, 3); sliceRange range(25, 8, 3);
auto iter1 = range.begin(); auto iter1 = range.begin();
Info<< nl << "Forward iterator for " << range << nl; Info<< nl << "Forward iterator for " << range << nl;
@ -166,6 +167,16 @@ int main(int argc, char *argv[])
auto iter2 = range.rbegin(); auto iter2 = range.rbegin();
Info<< nl << "Reverse iterator for " << range << nl; Info<< nl << "Reverse iterator for " << range << nl;
printIteratorTest(iter2); printIteratorTest(iter2);
// Change the start, size
range.start() = 5;
range.size() = 4;
iter1 = range.begin();
Info<< nl << "Forward iterator for " << range << nl;
printIteratorTest(iter1);
} }

View File

@ -112,23 +112,33 @@ public:
// Access // Access
//- The start value in the range
constexpr label start() const noexcept { return start_; }
//- The size of the range
constexpr label size() const noexcept { return size_; }
//- The stride for the range
constexpr label stride() const noexcept { return stride_; }
//- True if range is empty (zero-sized) //- True if range is empty (zero-sized)
bool empty() const noexcept { return !size_; } bool empty() const noexcept { return !size_; }
//- True if range has size greater than zero //- True if range has size greater than zero
bool good() const noexcept { return (size_ > 0); } bool good() const noexcept { return (size_ > 0); }
//- The (inclusive) lower value of the range. //- The size of the range
constexpr label min() const noexcept { return start_; } label size() const noexcept { return size_; }
//- Non-const access to size of the range
label& size() noexcept { return size_; }
//- The (inclusive) lower value of the range
label start() const noexcept { return start_; }
//- Non-const access to start of the range
label& start() noexcept { return start_; }
//- The stride for the range
label stride() const noexcept { return stride_; }
//- Non-const access to the stride
label& stride() noexcept { return stride_; }
//- The (inclusive) lower value of the range,
//- same as start()
label min() const noexcept { return start_; }
//- The (inclusive) upper value of the range. //- The (inclusive) upper value of the range.
//- Ill-defined for an empty range //- Ill-defined for an empty range
@ -195,7 +205,7 @@ public:
class indexer class indexer
{ {
//- The stride when indexing //- The stride when indexing
const label stride_; label stride_;
//- The global value //- The global value
label value_; label value_;