27 #if !defined(_DFT_SPARSE_PATTERN_H_)
28 #define _DFT_SPARSE_PATTERN_H_ 1
30 #if !defined(BEGIN_NAMESPACE)
31 #define BEGIN_NAMESPACE(x) namespace x {
32 #define END_NAMESPACE(x) }
54 void addInterval(
int lo,
int hi);
55 void addIntervals(
int nIntervals,
int (*intervals)[2]);
57 IntervalList::const_iterator current,
end;
59 Iterator(
const IntervalList::const_iterator& beg,
60 const IntervalList::const_iterator& end_,
int p)
61 : current(beg), end(end_), pos(p)
67 if(pos == current->hi)
68 printf(
"Iterator increased to %d current limit %d last? %s %s\n",
70 & *current == & *end ?
"YES" :
"NO",
71 current == end ?
"YES" :
"NO");
73 if(pos >= current->hi) {
82 bool res = !(& *current == & *other.
current && pos == other.
pos);
84 printf(
"Iterator::operator!=() compares %p with %p, returns %s \n",
85 & *current, & *other.
current, res ?
"TRUE" :
"FALSE");
100 IntervalList::const_iterator a = list.begin();
101 IntervalList::const_iterator b = list.
end();
102 return Iterator(a, b, a != list.end() ? a->lo : 0);
106 return Iterator(list.end(),list.end(),0);
111 for(IntervalList::const_iterator i = list.begin();
112 i != list.end(); ++i)
113 result += i->hi- i->lo;
123 : bis(bis_), ranges(new
Column[bis_.noOfBasisFuncs])
132 void add(
int nRanges,
const int (*range)[2]);
134 void save(FILE *f)
const;
137 return ranges[column];
142 return ranges[col].
size();
150 int sizeTotal()
const;
int pos
Definition: sparse_pattern.h:58
const BasisInfoStruct & bis
Definition: sparse_pattern.h:119
Iterator(const IntervalList::const_iterator &beg, const IntervalList::const_iterator &end_, int p)
Definition: sparse_pattern.h:59
int operator*() const
Definition: sparse_pattern.h:89
#define END_NAMESPACE(x)
Definition: sparse_pattern.h:32
Definition: sparse_pattern.h:51
#define BEGIN_NAMESPACE(x)
Definition: sparse_pattern.h:31
A way to store sparse matrix patterns.
Definition: sparse_pattern.h:43
int lo
Definition: sparse_pattern.h:47
Column * ranges
Definition: sparse_pattern.h:120
std::vector< Interval > IntervalList
Definition: sparse_pattern.h:50
Definition: sparse_pattern.h:56
IntervalList list
Definition: sparse_pattern.h:52
int size() const
Returns the dimension of the pattern.
Definition: sparse_pattern.h:146
void setupShellMap(const BasisInfoStruct &bis, int *shellMap, int *aoMap)
Definition: sparse_pattern.cc:437
IntervalList::const_iterator end
Definition: sparse_pattern.h:57
ranges are upper-exclusive: involve i: lo <= i < hi.
Definition: sparse_pattern.h:46
int noOfBasisFuncs
Definition: basisinfo.h:119
IntervalList::const_iterator current
Definition: sparse_pattern.h:57
const Column & operator[](int column) const
Definition: sparse_pattern.h:136
Definition: basisinfo.h:111
Iterator end() const
Definition: sparse_pattern.h:105
int size() const
Definition: sparse_pattern.h:109
bool operator!=(const Iterator &other) const
Definition: sparse_pattern.h:81
Iterator begin() const
Definition: sparse_pattern.h:99
const Interval * operator->() const
Definition: sparse_pattern.h:93
SparsePattern(const BasisInfoStruct &bis_)
Definition: sparse_pattern.h:122
~SparsePattern()
Definition: sparse_pattern.h:126
Interval(int l_, int h_)
Definition: sparse_pattern.h:48
int getColumnSize(int col) const
returns the number of stored elements for specified column.
Definition: sparse_pattern.h:141
Iterator & operator++()
Definition: sparse_pattern.h:64