From 7f5062112812aade4d10f1f2a3cf21abb3eb750e Mon Sep 17 00:00:00 2001 From: Eduardo DAVILA Date: Thu, 16 Dec 2021 17:51:33 +0100 Subject: [PATCH] #3480 Bug typeid in Macos --- kernel/src/bbtkAny.h | 15 ++- packages/itk/src/bbitkImage.h | 94 +++++++++++++++++-- packages/itk/src/bbitkImageProperties.cxx | 25 ++++- packages/itk/src/bbitkResampleImageFilter.h | 11 +++ .../src/bbitkvtkvtkImageData2itkImage.cxx | 12 ++- 5 files changed, 139 insertions(+), 18 deletions(-) diff --git a/kernel/src/bbtkAny.h b/kernel/src/bbtkAny.h index 74efb3e..71edc87 100644 --- a/kernel/src/bbtkAny.h +++ b/kernel/src/bbtkAny.h @@ -344,9 +344,18 @@ namespace bbtk <<"> with content : " < *>(content)->held; - + printf("EED bbtkAny get() self=%s \n" , HumanTypeName().c_str() ); + printf("EED bbtkAny get() ValueType=%s \n" , bbtk::HumanTypeName().c_str() ); + printf("EED bbtkAny get() Type=%s \n" , bbtk::HumanTypeName<>(type()).c_str() ); + printf("EED bbtkAny get() type name=(-%s-) \n" , type().name() ); + printf("EED bbtkAny get() ValueType name=(-%s-) \n" , typeid(ValueType).name() ); +// 2021-12-15 + if ( strcmp( type().name() , typeid(ValueType).name() ) ==0 ) +// if ( type() == typeid(ValueType) ) + { + return static_cast< anyholder *>(content)->held; + } + bbtkError(HumanTypeName() <<" get with type <" <() diff --git a/packages/itk/src/bbitkImage.h b/packages/itk/src/bbitkImage.h index 9f74cec..8cc1a94 100644 --- a/packages/itk/src/bbitkImage.h +++ b/packages/itk/src/bbitkImage.h @@ -65,15 +65,22 @@ namespace bbitk BBTK_TYPEDEF_ITK_IMAGE(uint32_t,DIM); \ BBTK_TYPEDEF_ITK_IMAGE(float,DIM); \ BBTK_TYPEDEF_ITK_IMAGE(double,DIM) - + BBTK_TYPEDEF_ITK_IMAGES_DIM(2); BBTK_TYPEDEF_ITK_IMAGES_DIM(3); BBTK_TYPEDEF_ITK_IMAGES_DIM(4); //BBTK_TYPEDEF_ITK_IMAGES_DIM(5) +// printf("EEDitk TYPE_INFO=%s %s\n", TYPE_INFO.name(), typeid(bbitk::Image_int8_t_3_##CONST##ptr).name() ); \ -#define BBTK_BEGIN_TEMPLATE_SWITCH(TYPE_INFO) if (false) {} +#define BBTK_BEGIN_TEMPLATE_SWITCH(TYPE_INFO) \ +if ( TYPE_INFO == typeid(bbitk::Image_uint16_t_3_ptr) ) { printf ("Yes\n"); }else{ printf ("No\n"); } \ +if ( strcmp(TYPE_INFO.name() , typeid(bbitk::Image_uint16_t_3_ptr).name() ) ==0 ) { printf ("Yes\n"); }else{ printf ("No\n"); } \ + printf("EEDitk TYPE_INFO=<%s> <%s> <%s>\n", TYPE_INFO.name(), bbtk::demangle_type_name(typeid(bbitk::Image_uint8_t_3_ptr).name()).c_str() , typeid(bbitk::Image_uint8_t_3_ptr).name() ); \ + printf("EEDitk TYPE_INFO=<%s> <%s> <%s>\n", TYPE_INFO.name(), bbtk::demangle_type_name(typeid(bbitk::Image_uint16_t_3_ptr).name()).c_str() , typeid(bbitk::Image_uint16_t_3_ptr).name() ); \ + printf("EEDitk TYPE_INFO=<%s> <%s> <%s>\n", TYPE_INFO.name(), bbtk::demangle_type_name(typeid(bbitk::Image_uint32_t_3_ptr).name()).c_str() , typeid(bbitk::Image_uint32_t_3_ptr).name() ); \ +if (false) {} #define BBTK_END_TEMPLATE_SWITCH(TYPE_INFO) else { bbtkError("bbtk was not built for itk images of type <"<< bbtk::demangle_type_name(TYPE_INFO.name())<<">"); } @@ -82,14 +89,19 @@ namespace bbitk /// Generic macro which calls a TEMPLATE_FUNCTION instanciated /// on TEMPLATE_TYPE iff TYPE_INFO == typeid(TEST_TYPE). /// This macro must be used (maybe several times) between a pair of BEGIN_TEMPLATE_SWITCH and END_TEMPLATE_SWITCH macros -#define TEMPLATE_SWITCH(TYPE_INFO,TEST_TYPE,TEMPLATE_FUNCTION,TEMPLATE_TYPE) \ - else if (TYPE_INFO == typeid(bbitk::TEST_TYPE)) \ + + +// 2021-12-15 +// else if (TYPE_INFO == typeid(bbitk::TEST_TYPE)) \ + +#define TEMPLATE_SWITCH(TYPE_INFO,TEST_TYPE,TEMPLATE_FUNCTION,TEMPLATE_TYPE) \ + else if ( strcmp(TYPE_INFO.name() , typeid(bbitk::TEST_TYPE).name() ) ==0 ) \ { TEMPLATE_FUNCTION(); } // DIMENSION 2 #ifdef BBTK_ITK_IMAGE_DIM_2 -# ifdef BBTK_ITK_IMAGE_TYPE_int8_t +# ifdef BBTK_ITK_IMAGE_TYPE_int8_t # define BBTK_SWITCH_ITK_IMAGE_int8_t_2(TYPE_INFO,FUN,CONST) \ TEMPLATE_SWITCH(TYPE_INFO,Image_int8_t_2_##CONST##ptr,FUN,Image_int8_t_2) # else @@ -113,7 +125,7 @@ namespace bbitk # else # define BBTK_SWITCH_ITK_IMAGE_uint8_t_2(TYPE_INFO,FUN,CONST) # endif -# ifdef BBTK_ITK_IMAGE_TYPE_int16_t +# ifdef BBTK_ITK_IMAGE_TYPE_uint16_t # define BBTK_SWITCH_ITK_IMAGE_uint16_t_2(TYPE_INFO,FUN,CONST) \ TEMPLATE_SWITCH(TYPE_INFO,Image_uint16_t_2_##CONST##ptr,FUN,Image_uint16_t_2) # else @@ -148,7 +160,6 @@ namespace bbitk # define BBTK_SWITCH_ITK_IMAGE_double_2(TYPE_INFO,FUN,CONST) #endif - // DIMENSION 3 #ifdef BBTK_ITK_IMAGE_DIM_3 # ifdef BBTK_ITK_IMAGE_TYPE_int8_t @@ -175,7 +186,7 @@ namespace bbitk # else # define BBTK_SWITCH_ITK_IMAGE_uint8_t_3(TYPE_INFO,FUN,CONST) # endif -# ifdef BBTK_ITK_IMAGE_TYPE_int16_t +# ifdef BBTK_ITK_IMAGE_TYPE_uint16_t # define BBTK_SWITCH_ITK_IMAGE_uint16_t_3(TYPE_INFO,FUN,CONST) \ TEMPLATE_SWITCH(TYPE_INFO,Image_uint16_t_3_##CONST##ptr,FUN,Image_uint16_t_3) # else @@ -211,6 +222,71 @@ namespace bbitk #endif +/* EED +// DIMENSION 3 +#ifdef BBTK_ITK_IMAGE_DIM_3 +# ifdef BBTK_ITK_IMAGE_TYPE_int8_t +# define BBTK_SWITCH_ITK_IMAGE_int8_t_3(TYPE_INFO,FUN,CONST) \ + TEMPLATE_SWITCH(TYPE_INFO,Image_int8_t_3_ptr,FUN,Image_int8_t_3) +# else +# define BBTK_SWITCH_ITK_IMAGE_int8_t_3(TYPE_INFO,FUN,CONST) +# endif +# ifdef BBTK_ITK_IMAGE_TYPE_int16_t +# define BBTK_SWITCH_ITK_IMAGE_int16_t_3(TYPE_INFO,FUN,CONST) \ + TEMPLATE_SWITCH(TYPE_INFO,Image_int16_t_3_ptr,FUN,Image_int16_t_3) +# else +# define BBTK_SWITCH_ITK_IMAGE_int16_t_3(TYPE_INFO,FUN,CONST) +# endif +# ifdef BBTK_ITK_IMAGE_TYPE_int32_t +# define BBTK_SWITCH_ITK_IMAGE_int32_t_3(TYPE_INFO,FUN,CONST) \ + TEMPLATE_SWITCH(TYPE_INFO,Image_int32_t_3_ptr,FUN,Image_int32_t_3) +# else +# define BBTK_SWITCH_ITK_IMAGE_int32_t_3(TYPE_INFO,FUN,CONST) +# endif +# ifdef BBTK_ITK_IMAGE_TYPE_uint8_t +# define BBTK_SWITCH_ITK_IMAGE_uint8_t_3(TYPE_INFO,FUN,CONST) \ + TEMPLATE_SWITCH(TYPE_INFO,Image_uint8_t_3_ptr,FUN,Image_uint8_t_3) +# else +# define BBTK_SWITCH_ITK_IMAGE_uint8_t_3(TYPE_INFO,FUN,CONST) +# endif +# ifdef BBTK_ITK_IMAGE_TYPE_uint16_t +# define BBTK_SWITCH_ITK_IMAGE_uint16_t_3(TYPE_INFO,FUN,CONST) \ + TEMPLATE_SWITCH(TYPE_INFO,Image_uint16_t_3_,FUN,Image_uint16_t_3) +# else +# define BBTK_SWITCH_ITK_IMAGE_uint16_t_3(TYPE_INFO,FUN,CONST) +# endif +# ifdef BBTK_ITK_IMAGE_TYPE_uint32_t +# define BBTK_SWITCH_ITK_IMAGE_uint32_t_3(TYPE_INFO,FUN,CONST) \ + TEMPLATE_SWITCH(TYPE_INFO,Image_uint32_t_3_ptr,FUN,Image_uint32_t_3) +# else +# define BBTK_SWITCH_ITK_IMAGE_uint32_t_3(TYPE_INFO,FUN,CONST) +# endif +# ifdef BBTK_ITK_IMAGE_TYPE_float +# define BBTK_SWITCH_ITK_IMAGE_float_3(TYPE_INFO,FUN,CONST) \ + TEMPLATE_SWITCH(TYPE_INFO,Image_float_3_ptr,FUN,Image_float_3) +# else +# define BBTK_SWITCH_ITK_IMAGE_float_3(TYPE_INFO,FUN,CONST) +# endif +# ifdef BBTK_ITK_IMAGE_TYPE_double +# define BBTK_SWITCH_ITK_IMAGE_double_3(TYPE_INFO,FUN,CONST) \ + TEMPLATE_SWITCH(TYPE_INFO,Image_double_3_ptr,FUN,Image_double_3) +# else +# define BBTK_SWITCH_ITK_IMAGE_double_3(TYPE_INFO,FUN,CONST) +# endif +#else +# define BBTK_SWITCH_ITK_IMAGE_int8_t_3(TYPE_INFO,FUN,CONST) +# define BBTK_SWITCH_ITK_IMAGE_int16_t_3(TYPE_INFO,FUN,CONST) +# define BBTK_SWITCH_ITK_IMAGE_int32_t_3(TYPE_INFO,FUN,CONST) +# define BBTK_SWITCH_ITK_IMAGE_uint8_t_3(TYPE_INFO,FUN,CONST) +# define BBTK_SWITCH_ITK_IMAGE_uint16_t_3(TYPE_INFO,FUN,CONST) +# define BBTK_SWITCH_ITK_IMAGE_uint32_t_3(TYPE_INFO,FUN,CONST) +# define BBTK_SWITCH_ITK_IMAGE_float_3(TYPE_INFO,FUN,CONST) +# define BBTK_SWITCH_ITK_IMAGE_double_3(TYPE_INFO,FUN,CONST) +#endif +*/ + + + // DIMENSION 4 #ifdef BBTK_ITK_IMAGE_DIM_4 # ifdef BBTK_ITK_IMAGE_TYPE_int8_t @@ -237,7 +313,7 @@ namespace bbitk # else # define BBTK_SWITCH_ITK_IMAGE_uint8_t_4(TYPE_INFO,FUN,CONST) # endif -# ifdef BBTK_ITK_IMAGE_TYPE_int16_t +# ifdef BBTK_ITK_IMAGE_TYPE_uint16_t # define BBTK_SWITCH_ITK_IMAGE_uint16_t_4(TYPE_INFO,FUN,CONST) \ TEMPLATE_SWITCH(TYPE_INFO,Image_uint16_t_4_##CONST##ptr,FUN,Image_uint16_t_4) # else diff --git a/packages/itk/src/bbitkImageProperties.cxx b/packages/itk/src/bbitkImageProperties.cxx index 7e5f47d..17b07cf 100644 --- a/packages/itk/src/bbitkImageProperties.cxx +++ b/packages/itk/src/bbitkImageProperties.cxx @@ -68,7 +68,9 @@ namespace bbitk void ImageProperties::DoIt() { + printf("EED ImageProperties::DoIt Start \n"); BBTK_TEMPLATE_ITK_IMAGE_SWITCH(bbGetInputIn().type(),DoIt); + printf("EED ImageProperties::DoIt End \n"); } /** @@ -77,18 +79,25 @@ namespace bbitk template void ImageProperties::DoIt() { + printf("EED