13#ifndef TEUCHOS_SERIALIZATION_TRAITS_HPP 
   14#define TEUCHOS_SERIALIZATION_TRAITS_HPP 
   20#ifdef HAVE_TEUCHOSCORE_QUADMATH 
   25#include <qd/dd_real.h> 
   26#include <qd/qd_real.h> 
   40  static inline T notDefined() {
return(T::this_type_is_missing_a_specialization());}
 
 
   97template <
typename Ordinal, 
typename T>
 
  243template <
typename Ordinal, 
typename T>
 
  278template <
typename Ordinal, 
typename T>
 
  281  static const bool supportsDirectSerialization = 
true;
 
  283  static Ordinal fromCountToDirectBytes(
const Ordinal count)
 
  284    { 
return sizeof(
T)*count; }
 
  285  static char* convertToCharPtr( 
T* ptr )
 
  286    { 
return reinterpret_cast<char*
>(ptr); }
 
  287  static const char* convertToCharPtr( 
const T* ptr )
 
  288    { 
return reinterpret_cast<const char*
>(ptr); }
 
  289  static Ordinal fromDirectBytesToCount(
const Ordinal count)
 
  290    { 
return count/
sizeof(
T); }
 
  291  static T* convertFromCharPtr( 
char* ptr )
 
  292    { 
return reinterpret_cast<T*
>(ptr); }
 
  293  static const T* convertFromCharPtr( 
const char* ptr )
 
  294    { 
return reinterpret_cast<const T*
>(ptr); }
 
  296  static Ordinal fromCountToIndirectBytes(
const Ordinal count, 
const T buffer[])
 
  297    { 
return fromCountToDirectBytes(count); }
 
  298  static void serialize(
 
  310  static Ordinal fromIndirectBytesToCount(
const Ordinal 
bytes,
 
  312    { 
return fromDirectBytesToCount(
bytes); }
 
  313  static void deserialize(
 
 
  330template<
typename Ordinal>
 
  335template<
typename Ordinal>
 
  336class SerializationTraits<Ordinal,signed char>
 
  337  : 
public DirectSerializationTraits<Ordinal,signed char>
 
  340template<
typename Ordinal>
 
  341class SerializationTraits<Ordinal,unsigned char>
 
  342  : 
public DirectSerializationTraits<Ordinal,unsigned char>
 
  345template<
typename Ordinal>
 
  346class SerializationTraits<Ordinal,short int>
 
  347  : 
public DirectSerializationTraits<Ordinal,short int>
 
  350template<
typename Ordinal>
 
  351class SerializationTraits<Ordinal,unsigned short int>
 
  352  : 
public DirectSerializationTraits<Ordinal,unsigned short int>
 
  355template<
typename Ordinal>
 
  356class SerializationTraits<Ordinal,int>
 
  357  : 
public DirectSerializationTraits<Ordinal,int>
 
  360template<
typename Ordinal>
 
  361class SerializationTraits<Ordinal,unsigned int>
 
  362  : 
public DirectSerializationTraits<Ordinal,unsigned int>
 
  365template<
typename Ordinal>
 
  366class SerializationTraits<Ordinal,long int>
 
  367  : 
public DirectSerializationTraits<Ordinal,long int>
 
  370template<
typename Ordinal>
 
  371class SerializationTraits<Ordinal,unsigned long int>
 
  372  : 
public DirectSerializationTraits<Ordinal,long unsigned int>
 
  375template<
typename Ordinal>
 
  376class SerializationTraits<Ordinal,float>
 
  377  : 
public DirectSerializationTraits<Ordinal,float>
 
  380template<
typename Ordinal>
 
  381class SerializationTraits<Ordinal,double>
 
  382  : 
public DirectSerializationTraits<Ordinal,double>
 
  385#ifdef HAVE_TEUCHOS_LONG_DOUBLE 
  386template<
typename Ordinal>
 
  387class SerializationTraits<Ordinal,long double>
 
  388  : 
public DirectSerializationTraits<Ordinal,long double>
 
  394template<
typename Ordinal, 
typename P1, 
typename P2>
 
  395class SerializationTraits<Ordinal,std::pair<P1,P2> >
 
  396  : 
public DirectSerializationTraits<Ordinal,std::pair<P1,P2> >
 
  399#ifdef HAVE_TEUCHOSCORE_QUADMATH 
  400template<
typename Ordinal>
 
  401class SerializationTraits<Ordinal,__float128>
 
  402  : 
public DirectSerializationTraits<Ordinal,__float128>
 
  406#ifdef HAVE_TEUCHOS_QD 
  407template<
typename Ordinal>
 
  408class SerializationTraits<Ordinal,dd_real>
 
  409  : 
public DirectSerializationTraits<Ordinal,dd_real>
 
  412template<
typename Ordinal>
 
  413class SerializationTraits<Ordinal,qd_real>
 
  414  : 
public DirectSerializationTraits<Ordinal,qd_real>
 
  418#ifdef HAVE_TEUCHOS_COMPLEX 
  420template<
typename Ordinal>
 
  421class SerializationTraits<Ordinal,std::complex<float> >
 
  422  : 
public DirectSerializationTraits<Ordinal,std::complex<float> >
 
  425template<
typename Ordinal>
 
  426class SerializationTraits<Ordinal,std::complex<double> >
 
  427  : 
public DirectSerializationTraits<Ordinal,std::complex<double> >
 
  437template<
typename Ordinal>
 
  438class SerializationTraits<Ordinal, long long int>
 
  439  : 
public DirectSerializationTraits<Ordinal, long long int>
 
  447template<
typename Ordinal>
 
  448class SerializationTraits<Ordinal, unsigned long long int>
 
  449  : 
public DirectSerializationTraits<Ordinal, unsigned long long int>
 
Teuchos header file which uses auto-configuration information to include necessary C++ headers.
 
Standard test and throw macros.
 
Serialization traits for objects that support direct serialization.
 
Smart reference counting pointer class for automatic garbage collection.
 
Serialization traits class for types T that use value semantics.
 
static const bool supportsDirectSerialization
Whether the type T supports direct serialization.
 
static void serialize(const Ordinal count, const T buffer[], const Ordinal bytes, char charBuffer[])
Serialize to an indirect char[] buffer.
 
static Ordinal fromIndirectBytesToCount(const Ordinal bytes, const char charBuffer[])
Return the number of objects for bytes of storage.
 
static Ordinal fromCountToDirectBytes(const Ordinal count)
Return the number of bytes for count objects.
 
static Ordinal fromDirectBytesToCount(const Ordinal bytes)
Return the number of objects for bytes of storage.
 
static void deserialize(const Ordinal bytes, const char charBuffer[], const Ordinal count, T buffer[])
Deserialize from an indirect char[] buffer.
 
static char * convertToCharPtr(T *ptr)
Convert the pointer type to char*.
 
static T * convertFromCharPtr(char *ptr)
Convert the pointer type from char*.
 
static const char * convertToCharPtr(const T *ptr)
Convert the pointer type to const char*.
 
static const T * convertFromCharPtr(const char *ptr)
Convert the pointer type from char*.
 
static Ordinal fromCountToIndirectBytes(const Ordinal count, const T buffer[])
Return the number of bytes for count objects.
 
Serialization class for types T that use value semantics.
 
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)
This macro is designed to be a short version of TEUCHOS_TEST_FOR_EXCEPTION() that is easier to call.
 
The Teuchos namespace contains all of the classes, structs and enums used by Teuchos,...
 
Report an error if a specialization of SerializationTraits is missing.
 
static T notDefined()
This function should not compile if there is an attempt to instantiate!