Fix MSVC compiler warnings

Generally, the MSVC compiler tends to be more picky about implicit type
conversions. It warns if there is any possibility of precision loss.
This commit is contained in:
Kenneth Moreland 2014-10-21 16:52:24 -06:00
parent a7e6666037
commit 7cf25331e2
7 changed files with 38 additions and 31 deletions

@ -296,7 +296,7 @@ struct AssignScalarToVec<4>
}
};
template<vtkm::IdComponent Size>
template<typename CType, vtkm::IdComponent Size>
struct VecCopy
{
template<typename T1, typename T2>
@ -306,54 +306,54 @@ struct VecCopy
componentIndex < Size;
componentIndex++)
{
dest[componentIndex] = src[componentIndex];
dest[componentIndex] = CType(src[componentIndex]);
}
}
};
template<>
struct VecCopy<1>
template<typename CType>
struct VecCopy<CType, 1>
{
template<typename T1, typename T2>
VTKM_EXEC_CONT_EXPORT void operator()(T1 &dest, const T2 &src)
{
dest[0] = src[0];
dest[0] = CType(src[0]);
}
};
template<>
struct VecCopy<2>
template<typename CType>
struct VecCopy<CType, 2>
{
template<typename T1, typename T2>
VTKM_EXEC_CONT_EXPORT void operator()(T1 &dest, const T2 &src)
{
dest[0] = src[0];
dest[1] = src[1];
dest[0] = CType(src[0]);
dest[1] = CType(src[1]);
}
};
template<>
struct VecCopy<3>
template<typename CType>
struct VecCopy<CType, 3>
{
template<typename T1, typename T2>
VTKM_EXEC_CONT_EXPORT void operator()(T1 &dest, const T2 &src)
{
dest[0] = src[0];
dest[1] = src[1];
dest[2] = src[2];
dest[0] = CType(src[0]);
dest[1] = CType(src[1]);
dest[2] = CType(src[2]);
}
};
template<>
struct VecCopy<4>
template<typename CType>
struct VecCopy<CType, 4>
{
template<typename T1, typename T2>
VTKM_EXEC_CONT_EXPORT void operator()(T1 &dest, const T2 &src)
{
dest[0] = src[0];
dest[1] = src[1];
dest[2] = src[2];
dest[3] = src[3];
dest[0] = CType(src[0]);
dest[1] = CType(src[1]);
dest[2] = CType(src[2]);
dest[3] = CType(src[3]);
}
};
@ -730,21 +730,24 @@ protected:
VTKM_EXEC_CONT_EXPORT
explicit VecBase(const ComponentType* values)
{
vtkm::internal::VecCopy<NUM_COMPONENTS>()(this->Components, values);
vtkm::internal::VecCopy<ComponentType,NUM_COMPONENTS>()(
this->Components, values);
}
template<typename OtherValueType, typename OtherDerivedType>
VTKM_EXEC_CONT_EXPORT
VecBase(const VecBase<OtherValueType,Size,OtherDerivedType> &src)
{
vtkm::internal::VecCopy<NUM_COMPONENTS>()(this->Components, src);
vtkm::internal::VecCopy<ComponentType,NUM_COMPONENTS>()(
this->Components, src);
}
public:
VTKM_EXEC_CONT_EXPORT
DerivedClass &operator=(const DerivedClass &src)
{
vtkm::internal::VecCopy<NUM_COMPONENTS>()(this->Components, src);
vtkm::internal::VecCopy<ComponentType,NUM_COMPONENTS>()(
this->Components, src);
return *reinterpret_cast<DerivedClass *>(this);
}

@ -74,7 +74,7 @@ struct TemplatedTests
{
ValueType array[ARRAY_SIZE];
static const ComponentType ORIGINAL_VALUE = 239;
static const ComponentType ORIGINAL_VALUE = 109;
FillIterator(array, array+ARRAY_SIZE, ORIGINAL_VALUE);
::vtkm::cont::internal::ArrayPortalFromIterators<ValueType *>

@ -72,7 +72,7 @@ struct TemplatedTests
return CheckIterator(iterators.GetBegin(), iterators.GetEnd(), value);
}
ComponentType ORIGINAL_VALUE() { return 239; }
ComponentType ORIGINAL_VALUE() { return 39; }
template<class ArrayPortalType>
void TestIteratorRead(ArrayPortalType portal)

@ -437,7 +437,7 @@ private:
Sleep(1000);
#endif
vtkm::FloatDefault elapsedTime = timer.GetElapsedTime();
vtkm::Float64 elapsedTime = timer.GetElapsedTime();
std::cout << "Elapsed time: " << elapsedTime << std::endl;

@ -43,7 +43,9 @@ const vtkm::Id ARRAY_SIZE = DIMENSION[0]*DIMENSION[1]*DIMENSION[2];
vtkm::Vec<vtkm::FloatDefault,3> TestValue(vtkm::Id index)
{
vtkm::Id3 index3d = vtkm::ExtentPointFlatIndexToTopologyIndex(index, EXTENT);
return vtkm::Vec<vtkm::FloatDefault,3>(index3d[0], index3d[1], index3d[2]);
return vtkm::make_Vec(vtkm::FloatDefault(index3d[0]),
vtkm::FloatDefault(index3d[1]),
vtkm::FloatDefault(index3d[2]));
}
int g_CheckArrayInvocations;

@ -57,7 +57,9 @@ struct StorageListTag : vtkm::cont::StorageListTagBasic { };
vtkm::Vec<vtkm::FloatDefault,3> TestValue(vtkm::Id index)
{
vtkm::Id3 index3d = vtkm::ExtentPointFlatIndexToTopologyIndex(index, EXTENT);
return vtkm::Vec<vtkm::FloatDefault,3>(index3d[0], index3d[1], index3d[2]);
return vtkm::make_Vec(vtkm::FloatDefault(index3d[0]),
vtkm::FloatDefault(index3d[1]),
vtkm::FloatDefault(index3d[2]));
}
struct CheckArray

@ -243,7 +243,7 @@ struct DynamicTransformFinish
struct ForEachFunctor
{
template<typename T>
void operator()(T &x) const { x = 2*x; }
void operator()(T &x) const { x = T(2)*x; }
void operator()(std::string &x) const { x.append("*2"); }
};
@ -436,14 +436,14 @@ void TestForEach()
VTKM_TEST_ASSERT(funcInterface.GetParameter<1>() == 2*Arg1, "Arg 1 incorrect.");
VTKM_TEST_ASSERT(funcInterface.GetParameter<2>() == 2*Arg2, "Arg 2 incorrect.");
VTKM_TEST_ASSERT(funcInterface.GetParameter<3>() == Arg3+"*2", "Arg 3 incorrect.");
VTKM_TEST_ASSERT(funcInterface.GetParameter<4>() == 2*Arg4, "Arg 4 incorrect.");
VTKM_TEST_ASSERT(funcInterface.GetParameter<4>() == 2.0f*Arg4, "Arg 4 incorrect.");
VTKM_TEST_ASSERT(funcInterface.GetParameter<5>() == 2*Arg5, "Arg 5 incorrect.");
funcInterface.ForEachExec(ForEachFunctor());
VTKM_TEST_ASSERT(funcInterface.GetParameter<1>() == 4*Arg1, "Arg 1 incorrect.");
VTKM_TEST_ASSERT(funcInterface.GetParameter<2>() == 4*Arg2, "Arg 2 incorrect.");
VTKM_TEST_ASSERT(funcInterface.GetParameter<3>() == Arg3+"*2*2", "Arg 3 incorrect.");
VTKM_TEST_ASSERT(funcInterface.GetParameter<4>() == 4*Arg4, "Arg 4 incorrect.");
VTKM_TEST_ASSERT(funcInterface.GetParameter<4>() == 4.0f*Arg4, "Arg 4 incorrect.");
VTKM_TEST_ASSERT(funcInterface.GetParameter<5>() == 4*Arg5, "Arg 5 incorrect.");
}