[Insight-users] itkConceptChecking.h
Jill Goldschneider 327
jrgold at insightful.com
Tue Aug 10 19:13:23 EDT 2004
Hi,
I have a queston about itkConceptChecking.h.
My filter is templated over input/output image types that
must be in vector format, that is, each pixel is a vector.
It is necessary that the input/output image dimensions be
the same and that the length of vectors of the input/output
pixels be the same. However, it isn't necessary to have
the vector type be the same type, so I do not want to use
Concept::SameType. I would like to use something like
the existing Concept::SameDimension.
This works:
itkStaticConstMacro(InputImageDimension, unsigned int,
TInputImage::ImageDimension);
itkStaticConstMacro(OutputImageDimension, unsigned int,
TOutputImage::ImageDimension);
itkConceptMacro(SameDimension,
(Concept::SameDimension<InputImageDimension,OutputImageDimension>));
And this is what I'd like to do (it won't compile - duplicate enum value
for SameDimension)
typedef typename TInputImage::PixelType InputImagePixelType;
typedef typename TInputImage::PixelType::VectorType InputImageVectorType;
itkStaticConstMacro(InputImageVectorDimension, unsigned int,
InputImagePixelType::Dimension);
typedef typename TOutputImage::PixelType OutputImagePixelType;
typedef typename TOutputImage::PixelType::VectorType OutputImageVectorType;
itkStaticConstMacro(OutputImageVectorDimension, unsigned int,
OutputImagePixelType::Dimension);
itkConceptMacro(SameDimension,
(Concept::SameDimension<InputImageVectorDimension,
OutputImageVectorDimension>));
This is what currently have in my code to avoid vector mismatch problem
int j = InputImageVectorDimension;
int k = OutputImageVectorDimension;
if( j != k ) itkExceptionMacro( << "Invalid vector length" );
The above code works - but I've been challenged to use the concept
checking macros. Is it reasonable to be able to do the check I want
using concept checking? If so - how?
Thanks!
Jill
More information about the Insight-users
mailing list