45 #ifndef TEUCHOS_SERIALIZATION_TRAITS_HPP
46 #define TEUCHOS_SERIALIZATION_TRAITS_HPP
52 #ifdef HAVE_TEUCHOSCORE_QUADMATH
54 #endif // HAVE_TEUCHOSCORE_QUADMATH
56 #ifdef HAVE_TEUCHOS_QD
57 #include <qd/dd_real.h>
58 #include <qd/qd_real.h>
72 static inline T
notDefined() {
return(T::this_type_is_missing_a_specialization());}
129 template <
typename Ordinal,
typename T>
197 (void)count; (void)buffer;
222 (void)count; (void)buffer; (void)bytes; (void)charBuffer;
228 const char charBuffer[]) {
229 (void)bytes; (void)charBuffer;
250 const char charBuffer[],
254 (void)bytes; (void)charBuffer; (void)count; (void)buffer;
275 template <
typename Ordinal,
typename T>
310 template <
typename Ordinal,
typename T>
316 {
return sizeof(T)*count; }
318 {
return reinterpret_cast<char*
>(ptr); }
320 {
return reinterpret_cast<const char*
>(ptr); }
322 {
return count/
sizeof(T); }
324 {
return reinterpret_cast<T*
>(ptr); }
326 {
return reinterpret_cast<const T*
>(ptr); }
331 const Ordinal count,
const T buffer[],
const Ordinal bytes,
char charBuffer[]
340 std::copy(_buffer,_buffer+bytes,charBuffer);
343 const char charBuffer[])
346 const Ordinal bytes,
const char charBuffer[],
const Ordinal count, T buffer[]
353 std::copy(charBuffer,charBuffer+bytes,_buffer);
362 template<
typename Ordinal>
367 template<
typename Ordinal>
372 template<
typename Ordinal>
377 template<
typename Ordinal>
382 template<
typename Ordinal>
387 template<
typename Ordinal>
392 template<
typename Ordinal>
397 template<
typename Ordinal>
402 template<
typename Ordinal>
407 template<
typename Ordinal>
412 template<
typename Ordinal>
418 template<
typename Ordinal,
typename P1,
typename P2>
423 #ifdef HAVE_TEUCHOSCORE_QUADMATH
424 template<
typename Ordinal>
428 #endif // HAVE_TEUCHOSCORE_QUADMATH
430 #ifdef HAVE_TEUCHOS_QD
431 template<
typename Ordinal>
432 class SerializationTraits<Ordinal,dd_real>
433 :
public DirectSerializationTraits<Ordinal,dd_real>
436 template<
typename Ordinal>
437 class SerializationTraits<Ordinal,qd_real>
438 :
public DirectSerializationTraits<Ordinal,qd_real>
442 #ifdef HAVE_TEUCHOS_COMPLEX
444 template<
typename Ordinal>
445 class SerializationTraits<Ordinal,std::complex<float> >
446 :
public DirectSerializationTraits<Ordinal,std::complex<float> >
449 template<
typename Ordinal>
450 class SerializationTraits<Ordinal,std::complex<double> >
451 :
public DirectSerializationTraits<Ordinal,std::complex<double> >
454 #endif // HAVE_TEUCHOS_COMPLEX
461 template<
typename Ordinal>
471 template<
typename Ordinal>
478 #endif // TEUCHOS_SERIALIZATION_TRAITS_HPP
Serialization traits for objects that support direct serialization.
static char * convertToCharPtr(T *ptr)
Convert the pointer type to char*.
static void serialize(const Ordinal count, const T buffer[], const Ordinal bytes, char charBuffer[])
static Ordinal fromCountToIndirectBytes(const Ordinal count, const T buffer[])
static const char * convertToCharPtr(const T *ptr)
Convert the pointer type to const char*.
static Ordinal fromCountToDirectBytes(const Ordinal count)
static T notDefined()
This function should not compile if there is an attempt to instantiate!
static void deserialize(const Ordinal bytes, const char charBuffer[], const Ordinal count, T buffer[])
static Ordinal fromCountToIndirectBytes(const Ordinal count, const T buffer[])
Return the number of bytes for count objects.
static const bool supportsDirectSerialization
Whether the type T supports direct serialization.
Teuchos header file which uses auto-configuration information to include necessary C++ headers...
static void deserialize(const Ordinal bytes, const char charBuffer[], const Ordinal count, T buffer[])
Deserialize from an indirect char[] buffer.
Serialization class for types T that use value semantics.
static Ordinal fromIndirectBytesToCount(const Ordinal bytes, const char charBuffer[])
Return the number of objects for bytes of storage.
static T * convertFromCharPtr(char *ptr)
static T * convertFromCharPtr(char *ptr)
Convert the pointer type from char*.
static char * convertToCharPtr(T *ptr)
static const T * convertFromCharPtr(const char *ptr)
Convert the pointer type from char*.
static const char * convertToCharPtr(const T *ptr)
static const T * convertFromCharPtr(const char *ptr)
static Ordinal fromIndirectBytesToCount(const Ordinal bytes, const char charBuffer[])
Report an error if a specialization of SerializationTraits is missing.
Serialization traits class for types T that use value semantics.
Standard test and throw macros.
static Ordinal fromDirectBytesToCount(const Ordinal count)
static const bool supportsDirectSerialization
static Ordinal fromDirectBytesToCount(const Ordinal bytes)
Return the number of objects for bytes of storage.
static void serialize(const Ordinal count, const T buffer[], const Ordinal bytes, char charBuffer[])
Serialize to an indirect char[] buffer.
#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...
static Ordinal fromCountToDirectBytes(const Ordinal count)
Return the number of bytes for count objects.