45 #ifndef _ZOLTAN2_STRIDEDDATA_HPP_
46 #define _ZOLTAN2_STRIDEDDATA_HPP_
75 template<
typename lno_t,
typename scalar_t>
78 ArrayRCP<const scalar_t> vec_;
90 vec_(x), stride_(stride)
103 lno_t
size()
const {
return vec_.size(); }
111 scalar_t
operator[](lno_t idx)
const {
return vec_[idx*stride_]; }
122 template <
typename T>
void getInputArray(ArrayRCP<const T> &array)
const;
145 if (len != 0) vec = vec_.getRawPtr();
161 template<
typename lno_t,
typename scalar_t>
164 ArrayRCP<const T> &array)
const
166 if (vec_.size() < 1){
167 array = ArrayRCP<const T>();
169 else if (stride_==1 &&
typeid(T()) ==
typeid(scalar_t())){
174 size_t n = vec_.size() / stride_;
178 std::cerr <<
"Error: " << __FILE__ <<
", " << __LINE__<< std::endl;
179 std::cerr << n <<
" objects" << std::endl;
180 throw std::bad_alloc();
183 for (
size_t i=0,j=0; i < n; i++,j+=stride_){
184 tmp[i] = static_cast<T>(vec_[j]);
186 array = arcp(tmp, 0, n);