45 #ifndef _TEUCHOS_ORDINALTRAITS_HPP_ 
   46 #define _TEUCHOS_ORDINALTRAITS_HPP_ 
   77   static inline T 
notDefined() { 
return T::this_type_is_missing_a_specialization(); }
 
  105 #ifndef DOXYGEN_SHOULD_SKIP_THIS 
  108 struct OrdinalTraits<char> {
 
  110   static inline char zero()                   {
return(0);}
 
  111   static inline char one()                    {
return(1);}
 
  112   static inline char invalid()                {
return(std::numeric_limits<char>::max());}
 
  113   static inline char max()                    {
return(std::numeric_limits<char>::max()-
one());}
 
  114   static inline std::string 
name()            {
return(
"char");}
 
  118 struct OrdinalTraits<short int> {
 
  120   static inline short int zero()              {
return(0);}
 
  121   static inline short int one()               {
return(1);}
 
  122   static inline short int invalid()           {
return(-1);}
 
  123   static inline short int max()               {
return(std::numeric_limits<short int>::max());}
 
  124   static inline std::string 
name()            {
return(
"short int");}
 
  128 struct OrdinalTraits<int> {
 
  130   static inline int zero()                   {
return(0);}
 
  131   static inline int one()                    {
return(1);}
 
  132   static inline int invalid()                {
return(-1);}
 
  133   static inline int max()                    {
return(std::numeric_limits<int>::max());}
 
  134   static inline std::string 
name()           {
return(
"int");}
 
  138 struct OrdinalTraits<unsigned int> {
 
  140   static inline unsigned int zero()                   {
return(0);}
 
  141   static inline unsigned int one()                    {
return(1);}
 
  142   static inline unsigned int invalid()                {
return(std::numeric_limits<unsigned int>::max());}
 
  143   static inline unsigned int max()                    {
return(std::numeric_limits<unsigned int>::max()-1);}
 
  144   static inline std::string 
name()           {
return(
"unsigned int");}
 
  148 struct OrdinalTraits<long int> {
 
  150   static inline long int zero()              {
return(static_cast<long int>(0));}
 
  151   static inline long int one()               {
return(static_cast<long int>(1));}
 
  152   static inline long int invalid()           {
return(static_cast<long int>(-1));}
 
  153   static inline long int max()               {
return(std::numeric_limits<long int>::max());}
 
  154   static inline std::string 
name()           {
return(
"long int");}
 
  158 struct OrdinalTraits<long unsigned int> {
 
  160   static inline long unsigned int zero()              {
return(static_cast<long unsigned int>(0));}
 
  161   static inline long unsigned int one()               {
return(static_cast<long unsigned int>(1));}
 
  162   static inline long unsigned int invalid()           {
return(std::numeric_limits<long unsigned int>::max());}
 
  163   static inline long unsigned int max()               {
return(std::numeric_limits<long unsigned int>::max()-1);}
 
  164   static inline std::string 
name()           {
return(
"long unsigned int");}
 
  168 struct OrdinalTraits<long long int> {
 
  170   static inline long long int zero()          {
return(static_cast<long long int>(0));}
 
  171   static inline long long int one()           {
return(static_cast<long long int>(1));}
 
  172   static inline long long int invalid()       {
return(static_cast<long long int>(-1));}
 
  173   static inline long long int max()           {
return(std::numeric_limits<long long int>::max());}
 
  174   static inline std::string 
name()            {
return(
"long long int");}
 
  178 struct OrdinalTraits<unsigned long long int> {
 
  180   static inline unsigned long long int zero()          {
return(static_cast<unsigned long long int>(0));}
 
  181   static inline unsigned long long int one()           {
return(static_cast<unsigned long long int>(1));}
 
  182   static inline unsigned long long int invalid()       {
return(std::numeric_limits<unsigned long long int>::max());}
 
  183   static inline unsigned long long int max()           {
return(std::numeric_limits<unsigned long long int>::max()-1);}
 
  184   static inline std::string 
name()                     {
return(
"unsigned long long int");}
 
  187 #ifdef HAVE_TEUCHOS___INT64 
  190 struct OrdinalTraits<__int64> {
 
  192   static inline __int64 
zero() {
return(static_cast<__int64>(0));}
 
  193   static inline __int64 
one() {
return(static_cast<__int64>(1));}
 
  194   static inline __int64 
invalid() {
return(std::numeric_limits<__int64>::max());}
 
  195   static inline __int64 
max() {
return(std::numeric_limits<__int64>::max()-1);}
 
  196   static inline std::string 
name() {
return(
"__int64");}
 
  200 struct OrdinalTraits<unsigned __int64> {
 
  202   static inline unsigned __int64 
zero() {
return(static_cast<unsigned __int64>(0));}
 
  203   static inline unsigned __int64 
one() {
return(static_cast<unsigned __int64>(1));}
 
  204   static inline unsigned __int64 
invalid() {
return(std::numeric_limits<unsigned __int64>::max());}
 
  205   static inline unsigned __int64 
max() {
return(std::numeric_limits<unsigned __int64>::max()-1);}
 
  206   static inline std::string 
name() {
return(
"unsigned __int64");}
 
  209 #endif // HAVE_TEUCHOS___INT64 
  211 #endif // DOXYGEN_SHOULD_SKIP_THIS 
  215 #endif // _TEUCHOS_ORDINALTRAITS_HPP_ 
static T one()
Returns representation of one for this ordinal type. 
static T zero()
Returns representation of zero for this ordinal type. 
static T invalid()
Returns a value designating an invalid number. For signed types, this is typically negative one; for ...
static const bool hasMachineParameters
Allows testing to see if ordinal traits machine parameters are defined. 
Teuchos header file which uses auto-configuration information to include necessary C++ headers...
static T max()
Returns a value designating the maximum value accessible by code using OrdinalTraits. 
This structure defines some basic traits for the ordinal field type. 
static T notDefined()
This function should not compile if there is an attempt to instantiate! 
static std::string name()
Returns name of this ordinal type.