ALPS MPS Codes
Reference documentation.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | List of all members
index_product_iterator< SymmGroup > Class Template Reference

#include <multi_index.h>

Inheritance diagram for index_product_iterator< SymmGroup >:

Public Types

typedef std::size_t index_id
 
typedef Index< SymmGroup > index_t
 
typedef index_t::charge charge
 
typedef std::size_t elem_id
 
typedef std::pair< charge,
elem_id
coord_t
 
typedef std::vector< coord_tvalue_type
 
typedef std::vector< typename
index_t::const_iterator
vec_iterator
 

Public Member Functions

 index_product_iterator ()
 
 index_product_iterator (std::vector< index_t > const &idx)
 
value_type operator* () const
 
void operator++ ()
 
bool operator== (index_product_iterator< SymmGroup > const &rhs) const
 

Detailed Description

template<class SymmGroup>
class index_product_iterator< SymmGroup >

Definition at line 40 of file multi_index.h.

Member Typedef Documentation

template<class SymmGroup>
typedef index_t::charge index_product_iterator< SymmGroup >::charge

Definition at line 52 of file multi_index.h.

template<class SymmGroup>
typedef std::pair<charge, elem_id> index_product_iterator< SymmGroup >::coord_t

Definition at line 55 of file multi_index.h.

template<class SymmGroup>
typedef std::size_t index_product_iterator< SymmGroup >::elem_id

Definition at line 53 of file multi_index.h.

template<class SymmGroup>
typedef std::size_t index_product_iterator< SymmGroup >::index_id

Definition at line 50 of file multi_index.h.

template<class SymmGroup>
typedef Index<SymmGroup> index_product_iterator< SymmGroup >::index_t

Definition at line 51 of file multi_index.h.

template<class SymmGroup>
typedef std::vector<coord_t> index_product_iterator< SymmGroup >::value_type

Definition at line 56 of file multi_index.h.

template<class SymmGroup>
typedef std::vector<typename index_t::const_iterator> index_product_iterator< SymmGroup >::vec_iterator

Definition at line 58 of file multi_index.h.

Constructor & Destructor Documentation

template<class SymmGroup>
index_product_iterator< SymmGroup >::index_product_iterator ( )
inline

Definition at line 60 of file multi_index.h.

60 : valid(false) { }
template<class SymmGroup>
index_product_iterator< SymmGroup >::index_product_iterator ( std::vector< index_t > const &  idx)
inline

Definition at line 62 of file multi_index.h.

63  : size(idx.size())
64  , begin(size)
65  , state(size)
66  , end(size)
67  , cur_i(size, 0)
68  , max_i(size)
69  , valid(true)
70  {
71  for (int i=0; i<size; ++i) {
72  begin[i] = idx[i].begin();
73  state[i] = idx[i].begin();
74  max_i[i] = state[i]->second;
75  end[i] = idx[i].end();
76  }
77  }

Member Function Documentation

template<class SymmGroup>
value_type index_product_iterator< SymmGroup >::operator* ( ) const
inline

Definition at line 79 of file multi_index.h.

80  {
81  value_type ret(size);
82  for (int i=0; i<size; ++i)
83  ret[i] = std::make_pair(state[i]->first, cur_i[i]);
84  return ret;
85  }
std::vector< coord_t > value_type
Definition: multi_index.h:56
template<class SymmGroup>
void index_product_iterator< SymmGroup >::operator++ ( )
inline

Definition at line 87 of file multi_index.h.

88  {
89  for (int i=size-1; i>=0; --i) {
90  cur_i[i]++;
91  if (cur_i[i] != max_i[i])
92  break;
93 
94  state[i]++;
95  if (state[i] != end[i]) {
96  cur_i[i] = 0;
97  max_i[i] = state[i]->second;
98  break;
99  }
100 
101  if (i == 0) {
102  state[i] = end[i];
103  valid = false;
104  break;
105  }
106 
107  state[i] = begin[i];
108  cur_i[i] = 0;
109  max_i[i] = state[i]->second;
110  }
111  }
template<class SymmGroup>
bool index_product_iterator< SymmGroup >::operator== ( index_product_iterator< SymmGroup > const &  rhs) const
inline

Definition at line 113 of file multi_index.h.

114  {
115  if (valid != rhs.valid)
116  return false;
117  if (!valid)
118  return true;
119 
120  return (size == rhs.size) && std::equal(state.begin(), state.end(), rhs.state.begin());
121  }
std::pair< bool, typename Matrix::value_type > equal(block_matrix< Matrix, SymmGroup > const &reference, block_matrix< Matrix, SymmGroup > const &sample)
Definition: tag_detail.h:120

The documentation for this class was generated from the following file: