13 #ifndef mitkGetClassHierarchy_h
14 #define mitkGetClassHierarchy_h
32 template <const
char *(*)()>
37 static Small Test(SFINAE<&U::GetStaticNameOfClass> *);
44 value =
sizeof(Test<T>(
nullptr)) ==
sizeof(Small)
48 template <
typename T,
bool>
51 static std::string
value() {
return typeid(T).name(); }
57 static std::string
value() {
return T::GetStaticNameOfClass(); }
70 static Small Test(
typename U::Superclass *);
77 value =
sizeof(Test<T>(
nullptr)) ==
sizeof(Small)
81 template <
typename T,
bool>
90 typedef typename T::Superclass
value;
99 return std::vector<std::string>();
111 template <
typename T>
114 std::vector<std::string> result;
117 result.push_back(name);
118 std::vector<std::string> superHierarchy =
119 GetClassHierarchy<typename GetSuperclassType<T, HasTypeSuperclass<T>::value>::value>();
120 result.insert(result.end(), superHierarchy.begin(), superHierarchy.end());