1 #ifndef ConfigIterator_HH
2 #define ConfigIterator_HH
10 template <
typename ConfigType,
typename PrimClexType>
13 template<
typename ConfigType,
typename PrimClexType>
21 template <
typename ConfigType,
typename PrimClexType>
22 class ConfigIterator :
public std::iterator <std::bidirectional_iterator_tag, const ConfigType> {
37 bool _selected =
false);
81 template <
typename ConfigType,
typename PrimClexType>
91 template <
typename ConfigType,
typename PrimClexType>
96 : m_primclex(primclex), m_scel_index(scel_index), m_config_index(config_index), m_selected(_selected) {
108 template <
typename ConfigType,
typename PrimClexType>
110 return m_primclex->get_supercell(m_scel_index).get_config(m_config_index);
117 template <
typename ConfigType,
typename PrimClexType>
122 template <
typename ConfigType,
typename PrimClexType>
124 return (
operator*()).selected();
127 template <
typename ConfigType,
typename PrimClexType>
132 template <
typename ConfigType,
typename PrimClexType>
134 return !(*
this == iter);
138 template <
typename ConfigType,
typename PrimClexType>
141 while(m_scel_index < m_primclex->get_supercell_list().size() && m_config_index >= config_list_size()) {
148 template <
typename ConfigType,
typename PrimClexType>
156 while(m_scel_index < m_primclex->get_supercell_list().size() && (m_selected && !(m_primclex->get_supercell(m_scel_index).get_config(m_config_index).selected()))) {
166 template <
typename ConfigType,
typename PrimClexType>
174 template <
typename ConfigType,
typename PrimClexType>
178 while(m_config_index == 0 && (m_scel_index > 0 || config_list_size() == 0)) {
180 m_config_index = config_list_size();
186 template <
typename ConfigType,
typename PrimClexType>
194 template<
typename ConfigType,
typename PrimClexType>
bool operator==(const ConfigIterator &iter) const
ConfigIterator()
Definitions.
int config_list_size() const
void swap(ConfigIterator< ConfigType, PrimClexType > &a, ConfigIterator< ConfigType, PrimClexType > &b)
void set_selected(bool _select)
ConfigType & operator*() const
Specialize for Configuration, const Configuration, Transition, const Transition.
PrimClexType * m_primclex
void swap(ConfigDoF &A, ConfigDoF &B)
BasisSet operator*(const SymOp &LHS, const BasisSet &RHS)
EigenIndex Index
For long integer indexing:
ConfigIterator & operator--()
ConfigIterator & operator++()
ConfigType * operator->() const
bool operator!=(const ConfigIterator &iter) const