16 template<
typename _Container,
typename _value_type,
typename _
size_type,
typename _Access,
typename _Compare>
74 template<
typename _Container,
typename _value_type,
typename _
size_type,
typename _Access,
typename _Compare>
75 struct traits<
Counter<_Container, _value_type, _size_type, _Access, _Compare> > {
85 template <
typename _Container,
86 typename _value_type =
typename _Container::value_type,
87 typename _size_type =
typename _Container::size_type,
90 class Counter :
public BaseCounter<Counter<_Container, _value_type, _size_type, _Access, _Compare> > {
94 using Base::_increment;
111 using Base::operator();
112 using Base::operator[];
113 using Base::operator bool;
127 Access _access =
Access(),
128 Compare _compare =
Compare()) :
129 Base(_initial, _final, _increment, _access, _compare) {
145 if(i == this->
size()) {
160 std::cerr <<
"CRITICAL ERROR: In IsoCounter::set_current(), new state is incompatible with this counter.\n"
178 for(size_type i = 0; i <
initial().size(); i++) {
192 for(size_type i = 0; i <
size() &&
valid(); i++) {
203 template <
typename EigenType>
const value_type & _final(size_type index) const
Counter< EigenType, typename EigenType::Scalar, typename EigenType::Index, CASM_TMP::ParenthesesAccess< EigenType, typename EigenType::Scalar, typename EigenType::Index > > EigenCounter
CASM_TMP::traits< Counter >::Base Base
const Container & current() const
A Counter allows looping over many incrementing variables in one loop.
bool compare(const T &A, const T &B, double tol)
Floating point comparison with tol, return A < B.
EigenCounter< Eigen::Matrix3i > EigenMatrix3iCounter
Counter for Eigen::MatrixXd.
BaseCounter< Counter< _Container, _value_type, _size_type, _Access, _Compare > > Base
const value_type & _upper(size_type index) const
EigenCounter< Eigen::Matrix3d > EigenMatrix3dCounter
Counter for Eigen::Matrix3d.
EigenCounter< Eigen::MatrixXi > EigenMatrixXiCounter
Counter for Eigen::MatrixXd.
bool & _valid()
non-const reference bool validity flag
Helper Functor for Counter container access using operator()
const value_type & _increment(size_type index) const
void set_current(const Container &new_current)
EigenCounter< Eigen::VectorXi > EigenVectorXiCounter
Counter for Eigen::VectorXi.
EigenIndex Index
For long integer indexing:
A Counter allows looping over many incrementing variables in one loop.
Counter()
Default construct a Counter.
Helper Functor for Counter container access using operator[].
EigenCounter< Eigen::Vector3d > EigenVector3dCounter
Counter for Eigen::Vector3d.
const value_type & _initial(size_type index) const
EigenCounter< Eigen::Vector3i > EigenVector3iCounter
Counter for Eigen::Vector3i.
void _init()
Called from the constructor to set m_lower and m_upper appropriately.
EigenCounter< Eigen::MatrixXd > EigenMatrixXdCounter
Counter for Eigen::MatrixXd.
Counter(const Container &_initial, const Container &_final, const Container &_increment, Access _access=Access(), Compare _compare=Compare())
Construct a Counter-type object.
const Container & initial() const
bool compare(const value_type &A, const value_type &B)
EigenCounter< Eigen::VectorXd > EigenVectorXdCounter
Counter for Eigen::VectorXd.
void reset()
Reset the current value of the Counter to the initial value.
const value_type & _lower(size_type index) const
typename std::conditional< boost::is_integral< T >::value, IntegralLessThan< T >, FloatingPointLessThan< T > >::type MuchLessThan