add a new handy constructor to CutIndexer class
This commit is contained in:
parent
918666d7f6
commit
bc2da47804
@ -145,7 +145,7 @@ class CutIndexer
|
|||||||
valid_(true)
|
valid_(true)
|
||||||
{
|
{
|
||||||
size_t prod = 1;
|
size_t prod = 1;
|
||||||
offsets_.resize (ranges.size());
|
offsets_.resize (ranges.size(), 0);
|
||||||
for (size_t i = ranges.size(); i-- > 0; ) {
|
for (size_t i = ranges.size(); i-- > 0; ) {
|
||||||
if (mask[i]) {
|
if (mask[i]) {
|
||||||
offsets_[i] = prod;
|
offsets_[i] = prod;
|
||||||
@ -160,7 +160,7 @@ class CutIndexer
|
|||||||
valid_(true)
|
valid_(true)
|
||||||
{
|
{
|
||||||
size_t prod = 1;
|
size_t prod = 1;
|
||||||
offsets_.resize (ranges.size());
|
offsets_.resize (ranges.size(), 0);
|
||||||
for (size_t i = ranges.size(); i-- > 0; ) {
|
for (size_t i = ranges.size(); i-- > 0; ) {
|
||||||
if (i != dim) {
|
if (i != dim) {
|
||||||
offsets_[i] = prod;
|
offsets_[i] = prod;
|
||||||
@ -169,6 +169,28 @@ class CutIndexer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
CutIndexer (
|
||||||
|
const vector<T>& allArgs,
|
||||||
|
const Ranges& allRanges,
|
||||||
|
const vector<T>& wantedArgs,
|
||||||
|
const Ranges& wantedRanges)
|
||||||
|
: index_(0), indices_(allArgs.size(), 0), ranges_(allRanges),
|
||||||
|
valid_(true)
|
||||||
|
{
|
||||||
|
size_t prod = 1;
|
||||||
|
vector<size_t> offsets (wantedRanges.size());
|
||||||
|
for (size_t i = wantedRanges.size(); i-- > 0; ) {
|
||||||
|
offsets[i] = prod;
|
||||||
|
prod *= wantedRanges[i];
|
||||||
|
}
|
||||||
|
offsets_.reserve (allArgs.size());
|
||||||
|
for (size_t i = 0; i < allArgs.size(); i++) {
|
||||||
|
size_t idx = Util::indexOf (wantedArgs, allArgs[i]);
|
||||||
|
offsets_.push_back (idx != wantedArgs.size() ? offsets[idx] : 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
CutIndexer& operator++ (void)
|
CutIndexer& operator++ (void)
|
||||||
{
|
{
|
||||||
assert (valid_);
|
assert (valid_);
|
||||||
@ -188,6 +210,7 @@ class CutIndexer
|
|||||||
|
|
||||||
operator size_t (void) const
|
operator size_t (void) const
|
||||||
{
|
{
|
||||||
|
assert (valid());
|
||||||
return index_;
|
return index_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user