53 template<
class VarVector>
65 : var_(v), partition_(partition.variables())
66 { assert(partition.
split()); }
79 const auto & v = var[iv];
82 if(v->contains(*p[ip_]))
85 throw std::runtime_error(
"Invalid partition");
98 assert(partition_[ip_ - 1]->subvariableRange().
end() == var_[iv_]->subvariableRange().
end()
99 &&
"End of variable in partition is not the same as the end of variable in the reference vector.");
101 if(iv_ ==
static_cast<int>(var_.end() - var_.begin()))
107 const auto & v = var_[iv_];
110 if(v->contains(*partition_[ip_]))
113 throw std::runtime_error(
"Invalid partition");
119 assert(&var_ == &other.var_ && &partition_ == &other.partition_);
120 return ip_ == other.ip_;
128 const VarVector & var_;
136 const VarVector & var_;
Definition: VariableVector.h:41
int numberOfVariables() const
Definition: VariableCountingVector.h:30
bool split() const
Definition: VariableCountingVector.h:68
Definition: VariableVectorPartition.h:69
bool operator!=(iterator other) const
Definition: VariableVectorPartition.h:122
iterator & operator++()
Definition: VariableVectorPartition.h:89
VariablePtr operator*()
Definition: VariableVectorPartition.h:123
iterator(const VarVector &var, const VariableVector &p, int iv)
Definition: VariableVectorPartition.h:71
bool operator==(iterator other) const
Definition: VariableVectorPartition.h:117
Definition: VariableVectorPartition.h:55
VariableVectorPartition(const VarVector &v, const VariableCountingVector &partition)
Definition: VariableVectorPartition.h:64
iterator end()
Definition: VariableVectorPartition.h:133
iterator begin()
Definition: VariableVectorPartition.h:132
Definition: CallbackManager.h:12
std::shared_ptr< Variable > VariablePtr
Definition: defs.h:65