Merge branch 'msvc-warnings' into 'master'

Fix MSVC warnings

Fix your typical batch of MSVC warnings including picky type conversions
and using "unsafe" std functions on pointers for iterators.

See merge request !333
This commit is contained in:
Kenneth Moreland 2016-01-27 13:02:15 -05:00
commit 8cdf2aa7e5
3 changed files with 29 additions and 18 deletions

@ -653,10 +653,13 @@ struct BindLeftBinaryOp
VTKM_EXEC_CONT_EXPORT VTKM_EXEC_CONT_EXPORT
BindLeftBinaryOp(const T &leftValue, BinaryOpType binaryOp = BinaryOpType()) BindLeftBinaryOp(const T &leftValue, BinaryOpType binaryOp = BinaryOpType())
: LeftValue(leftValue), BinaryOp(binaryOp) { } : LeftValue(leftValue), BinaryOp(binaryOp) { }
template<typename RightT>
VTKM_EXEC_CONT_EXPORT VTKM_EXEC_CONT_EXPORT
ReturnT operator()(const T &rightValue) const ReturnT operator()(const RightT &rightValue) const
{ {
return static_cast<ReturnT>(this->BinaryOp(this->LeftValue, rightValue)); return static_cast<ReturnT>(this->BinaryOp(this->LeftValue,
static_cast<T>(rightValue)));
} }
}; };
@ -669,10 +672,13 @@ struct BindRightBinaryOp
VTKM_EXEC_CONT_EXPORT VTKM_EXEC_CONT_EXPORT
BindRightBinaryOp(const T &rightValue, BinaryOpType binaryOp = BinaryOpType()) BindRightBinaryOp(const T &rightValue, BinaryOpType binaryOp = BinaryOpType())
: RightValue(rightValue), BinaryOp(binaryOp) { } : RightValue(rightValue), BinaryOp(binaryOp) { }
template<typename LeftT>
VTKM_EXEC_CONT_EXPORT VTKM_EXEC_CONT_EXPORT
ReturnT operator()(const T &leftValue) const ReturnT operator()(const LeftT &leftValue) const
{ {
return static_cast<ReturnT>(this->BinaryOp(leftValue, this->RightValue)); return static_cast<ReturnT>(this->BinaryOp(static_cast<T>(leftValue),
this->RightValue));
} }
}; };

@ -25,6 +25,7 @@
#include <vtkm/cont/Assert.h> #include <vtkm/cont/Assert.h>
#include <vtkm/cont/CoordinateSystem.h> #include <vtkm/cont/CoordinateSystem.h>
#include <vtkm/cont/DataSet.h> #include <vtkm/cont/DataSet.h>
#include <vtkm/cont/DeviceAdapterSerial.h>
namespace vtkm { namespace vtkm {
namespace cont { namespace cont {
@ -37,9 +38,8 @@ class DataSetBuilderRectilinear
void CopyInto(const std::vector<T>& input, void CopyInto(const std::vector<T>& input,
vtkm::cont::ArrayHandle<U>& output ) vtkm::cont::ArrayHandle<U>& output )
{ {
output.Allocate( static_cast<vtkm::Id>(input.size()) ); DataSetBuilderRectilinear::CopyInto(
std::copy( input.begin(), input.end(), vtkm::cont::make_ArrayHandle(input), output);
ArrayPortalToIteratorBegin(output.GetPortalControl()) );
} }
template<typename T, typename U> template<typename T, typename U>
@ -48,10 +48,9 @@ class DataSetBuilderRectilinear
void CopyInto(const vtkm::cont::ArrayHandle<T>& input, void CopyInto(const vtkm::cont::ArrayHandle<T>& input,
vtkm::cont::ArrayHandle<U>& output ) vtkm::cont::ArrayHandle<U>& output )
{ {
output.Allocate( input.GetNumberOfValues() ); typedef vtkm::cont::DeviceAdapterAlgorithm<
std::copy( ArrayPortalToIteratorBegin(input.GetPortalConstControl()), vtkm::cont::DeviceAdapterTagSerial> Algorithm;
ArrayPortalToIteratorEnd(input.GetPortalConstControl()), Algorithm::Copy(input, output);
ArrayPortalToIteratorBegin(output.GetPortalControl()) );
} }
template<typename T, typename U> template<typename T, typename U>
@ -60,9 +59,8 @@ class DataSetBuilderRectilinear
void CopyInto(const T* input, vtkm::Id len, void CopyInto(const T* input, vtkm::Id len,
vtkm::cont::ArrayHandle<U>& output ) vtkm::cont::ArrayHandle<U>& output )
{ {
output.Allocate( len ); DataSetBuilderRectilinear::CopyInto(
std::copy( input, input+len, vtkm::cont::make_ArrayHandle(input, len), output);
output.GetPortalControl().GetIteratorBegin() );
} }
public: public:
VTKM_CONT_EXPORT VTKM_CONT_EXPORT

@ -24,6 +24,8 @@
#include <vtkm/cont/ArrayPortalToIterators.h> #include <vtkm/cont/ArrayPortalToIterators.h>
#include "iterator"
namespace vtkm { namespace vtkm {
namespace io { namespace io {
namespace reader { namespace reader {
@ -43,15 +45,20 @@ inline vtkm::cont::ArrayHandle<T> ConcatinateArrayHandles(
vtkm::cont::ArrayHandle<T> out; vtkm::cont::ArrayHandle<T> out;
out.Allocate(size); out.Allocate(size);
typename vtkm::cont::ArrayPortalToIterators< typedef typename vtkm::cont::ArrayPortalToIterators<
typename vtkm::cont::ArrayHandle<T>::PortalControl>::IteratorType outp = typename vtkm::cont::ArrayHandle<T>::PortalControl>::IteratorType
vtkm::cont::ArrayPortalToIteratorBegin(out.GetPortalControl()); IteratorType;
IteratorType outp =
vtkm::cont::ArrayPortalToIteratorBegin(out.GetPortalControl());
for (std::size_t i = 0; i < arrays.size(); ++i) for (std::size_t i = 0; i < arrays.size(); ++i)
{ {
std::copy(vtkm::cont::ArrayPortalToIteratorBegin(arrays[i].GetPortalConstControl()), std::copy(vtkm::cont::ArrayPortalToIteratorBegin(arrays[i].GetPortalConstControl()),
vtkm::cont::ArrayPortalToIteratorEnd(arrays[i].GetPortalConstControl()), vtkm::cont::ArrayPortalToIteratorEnd(arrays[i].GetPortalConstControl()),
outp); outp);
outp += arrays[i].GetNumberOfValues(); typedef typename std::iterator_traits<IteratorType>::difference_type
DifferenceType;
std::advance(
outp, static_cast<DifferenceType>(arrays[i].GetNumberOfValues()));
} }
return out; return out;