]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkRTTI.h
*** empty log message ***
[bbtk.git] / kernel / src / bbtkRTTI.h
index ca7ec422abf131c53a2f27e59391b38d0ae3087a..4fd8eee00d61285e659216d8d25743793ac95b68 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkRTTI.h,v $
   Language:  C++
-  Date:      $Date: 2008/01/22 15:02:00 $
-  Version:   $Revision: 1.1 $
+  Date:      $Date: 2008/07/30 09:02:31 $
+  Version:   $Revision: 1.3 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See doc/license.txt or
@@ -35,6 +35,7 @@
                     (__GNUC_MINOR__ == 1 &&            \
                      __GNUC_PATCHLEVEL__ > 0)))
 #include <cxxabi.h>
+#include <stdlib.h>
 namespace bbtk
 {
   inline std::string demangle_type_name(const char* name) 
@@ -136,36 +137,35 @@ namespace bbtk
     template <> inline std::string HumanTypeName< TYPE >(const TYPE&)  \
     { return NAME; }   
   
-  BBTK_DEFINE_HUMAN_READABLE_TYPE_NAME(std::string,"std::string");
-  BBTK_DEFINE_HUMAN_READABLE_TYPE_NAME(signed char,"char");
-  BBTK_DEFINE_HUMAN_READABLE_TYPE_NAME(signed short,"short");
-  BBTK_DEFINE_HUMAN_READABLE_TYPE_NAME(signed int,"int");
-  BBTK_DEFINE_HUMAN_READABLE_TYPE_NAME(unsigned char,"unsigned char");
-  BBTK_DEFINE_HUMAN_READABLE_TYPE_NAME(unsigned short,"unsigned short");
-  BBTK_DEFINE_HUMAN_READABLE_TYPE_NAME(unsigned int,"unsigned int");
-  
-  // Human readable strings for std::vector
-  BBTK_DEFINE_HUMAN_READABLE_TYPE_NAME(std::vector<int8_t>,
-                                      "std::vector<char>");
-  BBTK_DEFINE_HUMAN_READABLE_TYPE_NAME(std::vector<uint8_t>,
-                                      "std::vector<uchar>");
-  BBTK_DEFINE_HUMAN_READABLE_TYPE_NAME(std::vector<int16_t>,
-                                      "std::vector<short>");
-  BBTK_DEFINE_HUMAN_READABLE_TYPE_NAME(std::vector<uint16_t>,
-                                      "std::vector<ushort>");
-  BBTK_DEFINE_HUMAN_READABLE_TYPE_NAME(std::vector<int32_t>,
-                                      "std::vector<int>");
-  BBTK_DEFINE_HUMAN_READABLE_TYPE_NAME(std::vector<uint32_t>,
-                                      "std::vector<uint>");
-  BBTK_DEFINE_HUMAN_READABLE_TYPE_NAME(std::vector<long>,
-                                      "std::vector<long>");
-  BBTK_DEFINE_HUMAN_READABLE_TYPE_NAME(std::vector<float>,
-                                      "std::vector<float>");
-  BBTK_DEFINE_HUMAN_READABLE_TYPE_NAME(std::vector<double>,
-                                      "std::vector<double>");
-  BBTK_DEFINE_HUMAN_READABLE_TYPE_NAME(std::vector<std::string>,
-                                      "std::vector<std::string>");
+  BBTK_DEFINE_HUMAN_READABLE_TYPE_NAME(std::string,"String");
+  BBTK_DEFINE_HUMAN_READABLE_TYPE_NAME(signed char,"Char");
+  BBTK_DEFINE_HUMAN_READABLE_TYPE_NAME(signed short,"Short");
+  BBTK_DEFINE_HUMAN_READABLE_TYPE_NAME(signed int,"Int");
+  BBTK_DEFINE_HUMAN_READABLE_TYPE_NAME(unsigned char,"UChar");
+  BBTK_DEFINE_HUMAN_READABLE_TYPE_NAME(unsigned short,"UShort");
+  BBTK_DEFINE_HUMAN_READABLE_TYPE_NAME(unsigned int,"UInt");
+  BBTK_DEFINE_HUMAN_READABLE_TYPE_NAME(float,"Float");
+  BBTK_DEFINE_HUMAN_READABLE_TYPE_NAME(double,"Double");
+  BBTK_DEFINE_HUMAN_READABLE_TYPE_NAME(bool,"Bool");
+  BBTK_DEFINE_HUMAN_READABLE_TYPE_NAME(long,"Long");
 
+  // Human readable strings for std::vector
+#define BBTK_DEFINE_HUMAN_READABLE_VECTOR_TYPE_NAME(TYPE)              \
+  template <> inline std::string HumanTypeName< std::vector<TYPE> >()  \
+  { return "Vector"+HumanTypeName<TYPE>(); }                           \
+    template <> inline std::string HumanTypeName< std::vector<TYPE> >  \
+    (const std::vector<TYPE>&) { return "Vector"+HumanTypeName<TYPE>(); }      
+
+  BBTK_DEFINE_HUMAN_READABLE_VECTOR_TYPE_NAME(int8_t);
+  BBTK_DEFINE_HUMAN_READABLE_VECTOR_TYPE_NAME(uint8_t);
+  BBTK_DEFINE_HUMAN_READABLE_VECTOR_TYPE_NAME(int16_t);
+  BBTK_DEFINE_HUMAN_READABLE_VECTOR_TYPE_NAME(uint16_t);
+  BBTK_DEFINE_HUMAN_READABLE_VECTOR_TYPE_NAME(int32_t);
+  BBTK_DEFINE_HUMAN_READABLE_VECTOR_TYPE_NAME(uint32_t);
+  BBTK_DEFINE_HUMAN_READABLE_VECTOR_TYPE_NAME(long);
+  BBTK_DEFINE_HUMAN_READABLE_VECTOR_TYPE_NAME(float);
+  BBTK_DEFINE_HUMAN_READABLE_VECTOR_TYPE_NAME(double);
+  BBTK_DEFINE_HUMAN_READABLE_VECTOR_TYPE_NAME(std::string);
 
 /// The bbtk::TypeInfo type is a const ref on std::type_info (which can only be manipulated as such (because typeid returns const std::type_info& and type_info has all constructors private)) 
   typedef const std::type_info& TypeInfo;