10#ifndef _TEUCHOS_TYPE_NAME_TRAITS_HPP_ 
   11#define _TEUCHOS_TYPE_NAME_TRAITS_HPP_ 
   27#if defined(__IBMCPP__) && ( __IBMCPP__ < 900 || __IBMCPP__ == 1210 ) 
   28# define TEUCHOS_TYPE_NAME_TRAITS_OLD_IBM 
   45TEUCHOSCORE_LIB_DLL_EXPORT std::string 
demangleName( 
const std::string &mangledName );
 
   61#ifndef TEUCHOS_TYPE_NAME_TRAITS_OLD_IBM 
 
   85  typedef typename std::remove_const_t<T> 
ncT;
 
   86#ifndef TEUCHOS_TYPE_NAME_TRAITS_OLD_IBM 
 
  108  typedef typename std::remove_const_t<T> 
ncT;
 
 
  113#define TEUCHOS_TYPE_NAME_TRAITS_BUILTIN_TYPE_SPECIALIZATION(TYPE) \ 
  115class TypeNameTraits<TYPE> { \ 
  117  static std::string name() { return (#TYPE); } \ 
  118  static std::string concreteName(const TYPE&) { return name(); } \ 
  121TEUCHOS_TYPE_NAME_TRAITS_BUILTIN_TYPE_SPECIALIZATION(
bool);
 
  122TEUCHOS_TYPE_NAME_TRAITS_BUILTIN_TYPE_SPECIALIZATION(
char);
 
  123TEUCHOS_TYPE_NAME_TRAITS_BUILTIN_TYPE_SPECIALIZATION(
signed char);
 
  124TEUCHOS_TYPE_NAME_TRAITS_BUILTIN_TYPE_SPECIALIZATION(
unsigned char);
 
  125TEUCHOS_TYPE_NAME_TRAITS_BUILTIN_TYPE_SPECIALIZATION(
short int);
 
  126TEUCHOS_TYPE_NAME_TRAITS_BUILTIN_TYPE_SPECIALIZATION(
int);
 
  127TEUCHOS_TYPE_NAME_TRAITS_BUILTIN_TYPE_SPECIALIZATION(
long int);
 
  128TEUCHOS_TYPE_NAME_TRAITS_BUILTIN_TYPE_SPECIALIZATION(
unsigned short int);
 
  129TEUCHOS_TYPE_NAME_TRAITS_BUILTIN_TYPE_SPECIALIZATION(
unsigned int);
 
  130TEUCHOS_TYPE_NAME_TRAITS_BUILTIN_TYPE_SPECIALIZATION(
unsigned long int);
 
  131TEUCHOS_TYPE_NAME_TRAITS_BUILTIN_TYPE_SPECIALIZATION(
float);
 
  132TEUCHOS_TYPE_NAME_TRAITS_BUILTIN_TYPE_SPECIALIZATION(
double);
 
  134#ifdef HAVE_TEUCHOSCORE_QUADMATH 
  135TEUCHOS_TYPE_NAME_TRAITS_BUILTIN_TYPE_SPECIALIZATION(__float128);
 
  138#ifdef HAVE_TEUCHOS_LONG_DOUBLE 
  139TEUCHOS_TYPE_NAME_TRAITS_BUILTIN_TYPE_SPECIALIZATION(
long double);
 
  143class TEUCHOSCORE_LIB_DLL_EXPORT TypeNameTraits<T*> {
 
  147  static std::string concreteName(T_ptr) { 
return name(); }
 
  152class TEUCHOSCORE_LIB_DLL_EXPORT TypeNameTraits<std::string> {
 
  154  static std::string name() { 
return "string"; }
 
  155  static std::string concreteName(
const std::string&)
 
  161class TEUCHOSCORE_LIB_DLL_EXPORT TypeNameTraits<void*> {
 
  163  static std::string name() { 
return "void*"; }
 
  164  static std::string concreteName(
const std::string&) { 
return name(); }
 
  174class TEUCHOSCORE_LIB_DLL_EXPORT TypeNameTraits<void> {
 
  176  static std::string name() { 
return "void"; }
 
  177  static std::string concreteName(
const std::string&) { 
return name(); }
 
  181#ifdef HAVE_TEUCHOS_COMPLEX 
  185class TEUCHOSCORE_LIB_DLL_EXPORT TypeNameTraits<std::complex<T> > {
 
  187  static std::string name()
 
  188    { 
return "complex<"+TypeNameTraits<T>::name()+
">"; }
 
  189  static std::string concreteName(
const std::complex<T>&)
 
Teuchos header file which uses auto-configuration information to include necessary C++ headers.
 
Smart reference counting pointer class for automatic garbage collection.
 
Default traits class that just returns typeid(T).name().
 
static std::string concreteName(const T &t)
 
static std::string name()
 
std::string typeName(const T &t)
Template function for returning the concrete type name of a passed-in object.
 
std::string concreteTypeName(const T &t)
Template function for returning the type name of the actual concrete name of a passed-in object.
 
TEUCHOSCORE_LIB_DLL_EXPORT std::string demangleName(const std::string &mangledName)
Demangle a C++ name if valid.
 
The Teuchos namespace contains all of the classes, structs and enums used by Teuchos,...