Allow ArrayPortalFromThrust to be used inside a zip portal.

This commit is contained in:
Robert Maynard 2015-04-23 13:22:52 -04:00
parent ce124b91e4
commit 078d623173

@ -128,20 +128,10 @@ public:
template<typename OtherT>
VTKM_EXEC_CONT_EXPORT
ArrayPortalFromThrust(const ArrayPortalFromThrust<OtherT> &src)
: BeginIterator(src.BeginIterator),
EndIterator(src.EndIterator)
: BeginIterator(src.GetIteratorBegin()),
EndIterator(src.GetIteratorEnd())
{ }
template<typename OtherT>
VTKM_EXEC_CONT_EXPORT
ArrayPortalFromThrust<T> &operator=(
const ArrayPortalFromThrust<OtherT> &src)
{
this->BeginIterator = src.BeginIterator;
this->EndIterator = src.EndIterator;
return *this;
}
VTKM_EXEC_CONT_EXPORT
vtkm::Id GetNumberOfValues() const {
// Not using std::distance because on CUDA it cannot be used on a device.
@ -158,10 +148,10 @@ public:
*this->IteratorAt(index) = value;
}
VTKM_CONT_EXPORT
VTKM_EXEC_CONT_EXPORT
IteratorType GetIteratorBegin() const { return this->BeginIterator.get(); }
VTKM_CONT_EXPORT
VTKM_EXEC_CONT_EXPORT
IteratorType GetIteratorEnd() const { return this->EndIterator.get(); }
//private:
@ -196,23 +186,13 @@ public:
/// type that can be copied to this iterator type. This allows us to do any
/// type casting that the iterators do (like the non-const to const cast).
///
template<typename OtherT>
// template<typename OtherT>
VTKM_EXEC_CONT_EXPORT
ConstArrayPortalFromThrust(const ConstArrayPortalFromThrust<OtherT> &src)
: BeginIterator(src.BeginIterator),
EndIterator(src.EndIterator)
ConstArrayPortalFromThrust(const ArrayPortalFromThrust<T> &src)
: BeginIterator(src.GetIteratorBegin()),
EndIterator(src.GetIteratorEnd())
{ }
template<typename OtherT>
VTKM_EXEC_CONT_EXPORT
ConstArrayPortalFromThrust<T> &operator=(
const ConstArrayPortalFromThrust<OtherT> &src)
{
this->BeginIterator = src.BeginIterator;
this->EndIterator = src.EndIterator;
return *this;
}
VTKM_EXEC_CONT_EXPORT
vtkm::Id GetNumberOfValues() const {
// Not using std::distance because on CUDA it cannot be used on a device.
@ -229,10 +209,10 @@ public:
*this->IteratorAt(index) = value;
}
VTKM_CONT_EXPORT
VTKM_EXEC_CONT_EXPORT
IteratorType GetIteratorBegin() const { return this->BeginIterator.get(); }
VTKM_CONT_EXPORT
VTKM_EXEC_CONT_EXPORT
IteratorType GetIteratorEnd() const { return this->EndIterator.get(); }
private: