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>
140 static const bool supportsDirectSerialization =
false;
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>
313 static const bool supportsDirectSerialization =
true;
315 static Ordinal fromCountToDirectBytes(
const Ordinal count)
316 {
return sizeof(T)*count; }
317 static char* convertToCharPtr( T* ptr )
318 {
return reinterpret_cast<char*
>(ptr); }
319 static const char* convertToCharPtr(
const T* ptr )
320 {
return reinterpret_cast<const char*
>(ptr); }
321 static Ordinal fromDirectBytesToCount(
const Ordinal count)
322 {
return count/
sizeof(T); }
323 static T* convertFromCharPtr(
char* ptr )
324 {
return reinterpret_cast<T*
>(ptr); }
325 static const T* convertFromCharPtr(
const char* ptr )
326 {
return reinterpret_cast<const T*
>(ptr); }
328 static Ordinal fromCountToIndirectBytes(
const Ordinal count,
const T buffer[])
329 {
return fromCountToDirectBytes(count); }
330 static void serialize(
331 const Ordinal count,
const T buffer[],
const Ordinal bytes,
char charBuffer[]
337 const char *_buffer = convertToCharPtr(buffer);
338 std::copy(_buffer,_buffer+bytes,charBuffer);
340 static Ordinal fromIndirectBytesToCount(
const Ordinal bytes,
341 const char charBuffer[])
342 {
return fromDirectBytesToCount(bytes); }
343 static void deserialize(
344 const Ordinal bytes,
const char charBuffer[],
const Ordinal count, T buffer[]
350 char *_buffer = convertToCharPtr(buffer);
351 std::copy(charBuffer,charBuffer+bytes,_buffer);
360 template<
typename Ordinal>
365 template<
typename Ordinal>
370 template<
typename Ordinal>
375 template<
typename Ordinal>
380 template<
typename Ordinal>
385 template<
typename Ordinal>
390 template<
typename Ordinal>
395 template<
typename Ordinal>
400 template<
typename Ordinal>
405 template<
typename Ordinal>
410 template<
typename Ordinal>
416 template<
typename Ordinal,
typename P1,
typename P2>
421 #ifdef HAVE_TEUCHOSCORE_QUADMATH 422 template<
typename Ordinal>
426 #endif // HAVE_TEUCHOSCORE_QUADMATH 428 #ifdef HAVE_TEUCHOS_QD 429 template<
typename Ordinal>
434 template<
typename Ordinal>
440 #ifdef HAVE_TEUCHOS_COMPLEX 442 template<
typename Ordinal>
447 template<
typename Ordinal>
452 #endif // HAVE_TEUCHOS_COMPLEX 454 #if defined(HAVE_TEUCHOS_LONG_LONG_INT) 461 template<
typename Ordinal>
471 template<
typename Ordinal>
480 #elif SIZE_MAX > ULONG_MAX 489 template<
typename Ordinal>
494 template<
typename Ordinal>
499 #endif // HAVE_TEUCHOS_LONG_LONG_INT 503 #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 const char * convertToCharPtr(const T *ptr)
Convert the pointer type to const char*.
static T notDefined()
This function should not compile if there is an attempt to instantiate!
static Ordinal fromCountToIndirectBytes(const Ordinal count, const T buffer[])
Return the number of bytes for count objects.
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)
Convert the pointer type from char*.
static const T * convertFromCharPtr(const char *ptr)
Convert the pointer type from char*.
Report an error if a specialization of SerializationTraits is missing.
Serialization traits class for types T that use value semantics.
The Teuchos namespace contains all of the classes, structs and enums used by Teuchos, as well as a number of utility routines.
Standard test and throw macros.
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.