42 #ifndef _TEUCHOS_TYPE_NAME_TRAITS_HPP_ 43 #define _TEUCHOS_TYPE_NAME_TRAITS_HPP_ 50 #include "Teuchos_ConstTypeTraits.hpp" 61 #if defined(__IBMCPP__) && ( __IBMCPP__ < 900 || __IBMCPP__ == 1210 ) 62 # define TEUCHOS_TYPE_NAME_TRAITS_OLD_IBM 75 TEUCHOSCORE_LIB_DLL_EXPORT std::string
demangleName(
const std::string &mangledName );
91 #ifndef TEUCHOS_TYPE_NAME_TRAITS_OLD_IBM 116 #ifndef TEUCHOS_TYPE_NAME_TRAITS_OLD_IBM 143 #define TEUCHOS_TYPE_NAME_TRAITS_BUILTIN_TYPE_SPECIALIZATION(TYPE) \ 145 class TypeNameTraits<TYPE> { \ 147 static std::string name() { return (#TYPE); } \ 148 static std::string concreteName(const TYPE&) { return name(); } \ 151 TEUCHOS_TYPE_NAME_TRAITS_BUILTIN_TYPE_SPECIALIZATION(
bool);
152 TEUCHOS_TYPE_NAME_TRAITS_BUILTIN_TYPE_SPECIALIZATION(
char);
153 TEUCHOS_TYPE_NAME_TRAITS_BUILTIN_TYPE_SPECIALIZATION(
signed char);
154 TEUCHOS_TYPE_NAME_TRAITS_BUILTIN_TYPE_SPECIALIZATION(
unsigned char);
155 TEUCHOS_TYPE_NAME_TRAITS_BUILTIN_TYPE_SPECIALIZATION(
short int);
156 TEUCHOS_TYPE_NAME_TRAITS_BUILTIN_TYPE_SPECIALIZATION(
int);
157 TEUCHOS_TYPE_NAME_TRAITS_BUILTIN_TYPE_SPECIALIZATION(
long int);
158 TEUCHOS_TYPE_NAME_TRAITS_BUILTIN_TYPE_SPECIALIZATION(
unsigned short int);
159 TEUCHOS_TYPE_NAME_TRAITS_BUILTIN_TYPE_SPECIALIZATION(
unsigned int);
160 TEUCHOS_TYPE_NAME_TRAITS_BUILTIN_TYPE_SPECIALIZATION(
unsigned long int);
161 TEUCHOS_TYPE_NAME_TRAITS_BUILTIN_TYPE_SPECIALIZATION(
float);
162 TEUCHOS_TYPE_NAME_TRAITS_BUILTIN_TYPE_SPECIALIZATION(
double);
164 #ifdef HAVE_TEUCHOSCORE_QUADMATH 165 TEUCHOS_TYPE_NAME_TRAITS_BUILTIN_TYPE_SPECIALIZATION(__float128);
166 #endif // HAVE_TEUCHOSCORE_QUADMATH 169 class TEUCHOSCORE_LIB_DLL_EXPORT TypeNameTraits<T*> {
178 class TEUCHOSCORE_LIB_DLL_EXPORT TypeNameTraits<std::string> {
180 static std::string
name() {
return "string"; }
187 class TEUCHOSCORE_LIB_DLL_EXPORT TypeNameTraits<void*> {
189 static std::string
name() {
return "void*"; }
200 class TEUCHOSCORE_LIB_DLL_EXPORT TypeNameTraits<void> {
202 static std::string
name() {
return "void"; }
207 #ifdef HAVE_TEUCHOS_COMPLEX 211 class TEUCHOSCORE_LIB_DLL_EXPORT TypeNameTraits<std::complex<T> > {
213 static std::string
name()
220 #endif // HAVE_TEUCHOS_COMPLEX 227 #endif // _TEUCHOS_TYPE_NAME_TRAITS_HPP_ static std::string concreteName(const T &t)
UnConst< T >::Result NonConstType
TEUCHOSCORE_LIB_DLL_EXPORT std::string demangleName(const std::string &mangledName)
Demangle a C++ name if valid.
std::string concreteTypeName(const T &t)
Template function for returning the type name of the actual concrete name of a passed-in object...
Default traits class that just returns typeid(T).name().
The Teuchos namespace contains all of the classes, structs and enums used by Teuchos, as well as a number of utility routines.
static std::string name()
std::string typeName(const T &t)
Template function for returning the concrete type name of a passed-in object.