[Insight-developers] CastWithRangeCheck implmentation and usage
Bradley Lowekamp
blowekamp at mail.nih.gov
Thu Dec 17 17:43:33 EST 2009
Hello,
I was thinking that this newly created method, needs some work before it's used much further. This is the implementation that I was thinking about:
template <typename TType>
inline TType CastWithRangeCheck( TType x )
{
itkConceptMacro( OnlyDefinedForIntegerTypes, (Concept::Integer<TType>) );
return x;
}
template <typename TReturn,typename TInput>
inline TReturn CastWithRangeCheck(TInput x)
{
itkConceptMacro( OnlyDefinedForIntegerTypes1, (Concept::Integer<TReturn>) );
itkConceptMacro( OnlyDefinedForIntegerTypes2, (Concept::Integer<TInput>) );
TReturn ret = static_cast<TReturn>(x);
if ( ret != x ||
( NumericTraits<TInput>::IsPositive(x) != NumericTraits<TReturn>::IsPositive(x) ) )
{
// this should likely be a new exception class
RangeError _e(__FILE__, __LINE__);
throw _e;
}
return ret;
}
What I had not considered was that this method has started to already be used to convert double to floats. I believe that we should fill in the behavior of this methods relatively soon.
Brad
========================================================
Bradley Lowekamp
Lockheed Martin Contractor for
Office of High Performance Computing and Communications
National Library of Medicine
blowekamp at mail.nih.gov
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/mailman/private/insight-developers/attachments/20091217/5a858d74/attachment.htm>
More information about the Insight-developers
mailing list