+#ifndef cpPlugins_Interface_EXPORTS
+
+// =========================================================================
+// ========== Declare import itk::Image types ==========
+// =========================================================================
+
+// -------------------------------------------------------------------------
+#define cpPlugins_ITKImage_Import( T, D ) \
+ cpPlugins_TEMPLATE_IMPORT( \
+ 2(class cpPlugins_Interface_EXPORT itk::Image< T, D >) \
+ )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_ITKArrayImage_Import( A, T, DA, DI ) \
+ cpPlugins_TEMPLATE_IMPORT( \
+ 3(class cpPlugins_Interface_EXPORT itk::Image< A< T, DA >, DI >) \
+ )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_ITKImage_AllDims_Import( T ) \
+ cpPlugins_ITKImage_Import( T, 2 ); \
+ cpPlugins_ITKImage_Import( T, 3 ); \
+ cpPlugins_ITKImage_Import( T, 4 )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_ITKArrayImage_AllDims_Import( A, T ) \
+ cpPlugins_ITKArrayImage_Import( A, T, 2, 2 ); \
+ cpPlugins_ITKArrayImage_Import( A, T, 3, 3 ); \
+ cpPlugins_ITKArrayImage_Import( A, T, 4, 4 )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_VTKImage_Import( T, D ) \
+ cpPlugins_TEMPLATE_IMPORT( \
+ 2( \
+ class cpPlugins_Interface_EXPORT \
+ itk::ImageToVTKImageFilter< itk::Image< T, D > > \
+ ) \
+ )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_VTKArrayImage_Import( A, T, DA, DI ) \
+ cpPlugins_TEMPLATE_IMPORT( \
+ 3(class \
+ cpPlugins_Interface_EXPORT \
+ itk::ImageToVTKImageFilter< itk::Image< A< T, DA >, DI > >) \
+ )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_VTKImage_AllDims_Import( T ) \
+ cpPlugins_VTKImage_Import( T, 2 ); \
+ cpPlugins_VTKImage_Import( T, 3 )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_VTKArrayImage_AllDims_Import( A, T ) \
+ cpPlugins_VTKArrayImage_Import( A, T, 2, 2 ); \
+ cpPlugins_VTKArrayImage_Import( A, T, 3, 3 )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_Image_Import( T, D ) \
+ cpPlugins_ITKImage_Import( T, D ); \
+ cpPlugins_VTKImage_Import( T, D ) \
+
+// -------------------------------------------------------------------------
+#define cpPlugins_Image_AllDims_Import( T ) \
+ cpPlugins_ITKImage_AllDims_Import( T ); \
+ cpPlugins_VTKImage_AllDims_Import( T ) \
+
+// -------------------------------------------------------------------------
+#define cpPlugins_ArrayImage_AllDims_Import( A, T ) \
+ cpPlugins_ITKArrayImage_AllDims_Import( A, T ); \
+ cpPlugins_VTKArrayImage_AllDims_Import( A, T ) \
+
+// -------------------------------------------------------------------------
+// ITK-VTK base clases
+// -------------------------------------------------------------------------
+
+cpPlugins_Image_AllDims_Import( char );
+cpPlugins_Image_AllDims_Import( short );
+cpPlugins_Image_AllDims_Import( int );
+cpPlugins_Image_AllDims_Import( long );
+cpPlugins_Image_AllDims_Import( unsigned char );
+cpPlugins_Image_AllDims_Import( unsigned short );
+cpPlugins_Image_AllDims_Import( unsigned int );
+cpPlugins_Image_AllDims_Import( unsigned long );
+cpPlugins_Image_AllDims_Import( float );
+cpPlugins_Image_AllDims_Import( double );
+
+cpPlugins_Image_AllDims_Import( itk::RGBPixel< char > );
+cpPlugins_Image_AllDims_Import( itk::RGBPixel< short > );
+cpPlugins_Image_AllDims_Import( itk::RGBPixel< int > );
+cpPlugins_Image_AllDims_Import( itk::RGBPixel< long > );
+cpPlugins_Image_AllDims_Import( itk::RGBPixel< unsigned char > );
+cpPlugins_Image_AllDims_Import( itk::RGBPixel< unsigned short > );
+cpPlugins_Image_AllDims_Import( itk::RGBPixel< unsigned int > );
+cpPlugins_Image_AllDims_Import( itk::RGBPixel< unsigned long > );
+cpPlugins_Image_AllDims_Import( itk::RGBPixel< float > );
+cpPlugins_Image_AllDims_Import( itk::RGBPixel< double > );
+
+cpPlugins_Image_AllDims_Import( itk::RGBAPixel< char > );
+cpPlugins_Image_AllDims_Import( itk::RGBAPixel< short > );
+cpPlugins_Image_AllDims_Import( itk::RGBAPixel< int > );
+cpPlugins_Image_AllDims_Import( itk::RGBAPixel< long > );
+cpPlugins_Image_AllDims_Import( itk::RGBAPixel< unsigned char > );
+cpPlugins_Image_AllDims_Import( itk::RGBAPixel< unsigned short > );
+cpPlugins_Image_AllDims_Import( itk::RGBAPixel< unsigned int > );
+cpPlugins_Image_AllDims_Import( itk::RGBAPixel< unsigned long > );
+cpPlugins_Image_AllDims_Import( itk::RGBAPixel< float > );
+cpPlugins_Image_AllDims_Import( itk::RGBAPixel< double > );
+
+cpPlugins_Image_AllDims_Import( itk::DiffusionTensor3D< float > );
+cpPlugins_Image_AllDims_Import( itk::DiffusionTensor3D< double > );
+
+cpPlugins_ArrayImage_AllDims_Import( itk::Vector, float );
+cpPlugins_ArrayImage_AllDims_Import( itk::Vector, double );
+
+cpPlugins_ArrayImage_AllDims_Import( itk::CovariantVector, float );
+cpPlugins_ArrayImage_AllDims_Import( itk::CovariantVector, double );
+
+cpPlugins_ArrayImage_AllDims_Import( itk::Point, float );
+cpPlugins_ArrayImage_AllDims_Import( itk::Point, double );
+
+cpPlugins_ArrayImage_AllDims_Import( itk::SymmetricSecondRankTensor, float );
+cpPlugins_ArrayImage_AllDims_Import( itk::SymmetricSecondRankTensor, double );
+
+// -------------------------------------------------------------------------
+// ITK-only base clases
+// -------------------------------------------------------------------------
+
+cpPlugins_ITKImage_AllDims_Import( std::complex< float > );
+cpPlugins_ITKImage_AllDims_Import( std::complex< double > );
+
+cpPlugins_ITKImage_Import( itk::Offset< 2 >, 2 );
+cpPlugins_ITKImage_Import( itk::Offset< 3 >, 3 );
+cpPlugins_ITKImage_Import( itk::Offset< 4 >, 4 );
+
+// =========================================================================
+// ========== Declare import itk::VectorImage types ==========
+// =========================================================================
+
+// -------------------------------------------------------------------------
+#define cpPlugins_VectorImage_Import( T, D ) \
+ cpPlugins_TEMPLATE_IMPORT( \
+ 2(class cpPlugins_Interface_EXPORT itk::VectorImage< T, D >) \
+ )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_ArrayVectorImage_Import( A, T, DA, DI ) \
+ cpPlugins_TEMPLATE_IMPORT( \
+ 3(class \
+ cpPlugins_Interface_EXPORT \
+ itk::VectorImage< A< T, DA >, DI >) \
+ )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_VectorImage_AllDims_Import( T ) \
+ cpPlugins_VectorImage_Import( T, 2 ); \
+ cpPlugins_VectorImage_Import( T, 3 ); \
+ cpPlugins_VectorImage_Import( T, 4 )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_ArrayVectorImage_AllDims_Import( A, T ) \
+ cpPlugins_ArrayVectorImage_Import( A, T, 2, 2 ); \
+ cpPlugins_ArrayVectorImage_Import( A, T, 3, 3 ); \
+ cpPlugins_ArrayVectorImage_Import( A, T, 4, 4 )
+
+// -------------------------------------------------------------------------
+// ITK-VTK base clases
+// -------------------------------------------------------------------------
+
+cpPlugins_VectorImage_AllDims_Import( char );
+cpPlugins_VectorImage_AllDims_Import( short );
+cpPlugins_VectorImage_AllDims_Import( int );
+cpPlugins_VectorImage_AllDims_Import( long );
+cpPlugins_VectorImage_AllDims_Import( unsigned char );
+cpPlugins_VectorImage_AllDims_Import( unsigned short );
+cpPlugins_VectorImage_AllDims_Import( unsigned int );
+cpPlugins_VectorImage_AllDims_Import( unsigned long );
+cpPlugins_VectorImage_AllDims_Import( float );
+cpPlugins_VectorImage_AllDims_Import( double );
+
+cpPlugins_VectorImage_AllDims_Import( std::complex< float > );
+cpPlugins_VectorImage_AllDims_Import( std::complex< double > );
+
+cpPlugins_VectorImage_Import( itk::Offset< 2 >, 2 );
+cpPlugins_VectorImage_Import( itk::Offset< 3 >, 3 );
+cpPlugins_VectorImage_Import( itk::Offset< 4 >, 4 );
+
+cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< char > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< short > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< int > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< long > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< unsigned char > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< unsigned short > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< unsigned int > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< unsigned long > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< float > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< double > );
+
+cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< char > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< short > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< int > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< long > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< unsigned char > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< unsigned short > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< unsigned int > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< unsigned long > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< float > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< double > );
+
+cpPlugins_VectorImage_AllDims_Import( itk::DiffusionTensor3D< float > );
+cpPlugins_VectorImage_AllDims_Import( itk::DiffusionTensor3D< double > );
+
+cpPlugins_ArrayVectorImage_AllDims_Import( itk::Vector, float );
+cpPlugins_ArrayVectorImage_AllDims_Import( itk::Vector, double );
+
+cpPlugins_ArrayVectorImage_AllDims_Import( itk::CovariantVector, float );
+cpPlugins_ArrayVectorImage_AllDims_Import( itk::CovariantVector, double );
+
+cpPlugins_ArrayVectorImage_AllDims_Import( itk::Point, float );
+cpPlugins_ArrayVectorImage_AllDims_Import( itk::Point, double );
+
+cpPlugins_ArrayVectorImage_AllDims_Import(
+ itk::SymmetricSecondRankTensor, float
+ );
+cpPlugins_ArrayVectorImage_AllDims_Import(
+ itk::SymmetricSecondRankTensor, double
+ );
+
+#endif // cpPlugins_Interface_EXPORTS
+