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
BindLeftBinaryOp(const T &leftValue, BinaryOpType binaryOp = BinaryOpType())
: LeftValue(leftValue), BinaryOp(binaryOp) { }
template<typename RightT>
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
BindRightBinaryOp(const T &rightValue, BinaryOpType binaryOp = BinaryOpType())
: RightValue(rightValue), BinaryOp(binaryOp) { }
template<typename LeftT>
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/CoordinateSystem.h>
#include <vtkm/cont/DataSet.h>
#include <vtkm/cont/DeviceAdapterSerial.h>
namespace vtkm {
namespace cont {
@ -37,9 +38,8 @@ class DataSetBuilderRectilinear
void CopyInto(const std::vector<T>& input,
vtkm::cont::ArrayHandle<U>& output )
{
output.Allocate( static_cast<vtkm::Id>(input.size()) );
std::copy( input.begin(), input.end(),
ArrayPortalToIteratorBegin(output.GetPortalControl()) );
DataSetBuilderRectilinear::CopyInto(
vtkm::cont::make_ArrayHandle(input), output);
}
template<typename T, typename U>
@ -48,10 +48,9 @@ class DataSetBuilderRectilinear
void CopyInto(const vtkm::cont::ArrayHandle<T>& input,
vtkm::cont::ArrayHandle<U>& output )
{
output.Allocate( input.GetNumberOfValues() );
std::copy( ArrayPortalToIteratorBegin(input.GetPortalConstControl()),
ArrayPortalToIteratorEnd(input.GetPortalConstControl()),
ArrayPortalToIteratorBegin(output.GetPortalControl()) );
typedef vtkm::cont::DeviceAdapterAlgorithm<
vtkm::cont::DeviceAdapterTagSerial> Algorithm;
Algorithm::Copy(input, output);
}
template<typename T, typename U>
@ -60,9 +59,8 @@ class DataSetBuilderRectilinear
void CopyInto(const T* input, vtkm::Id len,
vtkm::cont::ArrayHandle<U>& output )
{
output.Allocate( len );
std::copy( input, input+len,
output.GetPortalControl().GetIteratorBegin() );
DataSetBuilderRectilinear::CopyInto(
vtkm::cont::make_ArrayHandle(input, len), output);
}
public:
VTKM_CONT_EXPORT

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