1 #ifndef VIENNACL_TOOLS_ADAPTER_HPP_
2 #define VIENNACL_TOOLS_ADAPTER_HPP_
46 template <
typename SCALARTYPE,
bool is_iterator1,
bool is_forward>
57 : _mat(mat), _i(i), _j(j)
71 if (_i < _mat.size() && _mat[i].size() > 0 )
74 if (static_cast<int>(_mat[i].rbegin()->first) < j)
75 iter2 = _mat[i].
end();
77 iter2 = _mat[i].begin();
79 else if (_i < _mat.size() && _mat[i].size() == 0)
80 iter2 = _mat[i].
end();
82 iter2 = _mat.back().end();
91 typedef typename std::map<unsigned int, SCALARTYPE>::const_iterator col_iterator;
93 col_iterator colit = _mat[_i].find(_j);
95 if (colit != _mat[_i].
end())
100 return iter2->second;
129 for (
unsigned int k=0; k<offset; ++k)
138 return (_i == other._i);
139 return (iter2 == other.iter2);
159 int end_ =
static_cast<int>(_mat[_i].size());
161 end_ = _mat[_i].rbegin()->first;
166 std::vector<std::map<unsigned int, SCALARTYPE> >
const & _mat;
167 typename std::map<unsigned int, SCALARTYPE>::const_iterator iter2;
176 template <
typename SCALARTYPE>
205 typedef typename std::map<unsigned int, SCALARTYPE>::const_iterator col_iterator;
207 col_iterator colit = _mat[i].find(j);
209 if (colit != _mat[i].end())
210 return colit->second;
215 std::vector<std::map<unsigned int, SCALARTYPE> >
const & _mat;
226 template <
typename SCALARTYPE,
bool is_iterator1>
236 : _mat(mat), _i(i), _j(j)
250 if (_i < _mat.size() && _mat[i].size() > 0 )
253 if (static_cast<int>(_mat[i].rbegin()->first) < j)
254 iter2 = _mat[i].
end();
256 iter2 = _mat[i].begin();
258 else if (_i < _mat.size() && _mat[i].size() == 0)
259 iter2 = _mat[i].
end();
261 iter2 = _mat.back().end();
273 return iter2->second;
292 for (
unsigned int k=0; k<offset; ++k)
301 return (_i == other._i);
302 return (iter2 == other.iter2);
306 unsigned int index1()
const {
return _i; }
321 int end_ =
static_cast<int>(_mat[_i].size());
323 end_ = _mat[_i].rbegin()->first;
328 std::vector<std::map<unsigned int, SCALARTYPE> > & _mat;
329 typename std::map<unsigned int, SCALARTYPE>::iterator iter2;
340 template <
typename SCALARTYPE>
357 SCALARTYPE &
operator()(
unsigned int i,
unsigned int j) {
return _mat[i][j]; }
359 void resize(
unsigned int i,
unsigned int j,
bool preserve =
true)
369 for (
unsigned int i=0; i<_mat.size(); ++i)
373 size_t size1() {
return _mat.size(); }
374 size_t size1()
const {
return _mat.size(); }
377 size_t size2() {
return (_mat.size() > 0) ? (_mat.back().size() > 0 ? _mat.back().size() : _mat.size()) : 0; }
378 size_t size2()
const {
return (_mat.size() > 0) ? (_mat.back().size() > 0 ? _mat.back().size() : _mat.size()) : 0; }
381 std::vector<std::map<unsigned int, SCALARTYPE> > & _mat;