10#ifndef TEUCHOS_SERIALIZATION_TRAITS_HELPERS_HPP
11#define TEUCHOS_SERIALIZATION_TRAITS_HELPERS_HPP
14#include "Teuchos_ArrayView.hpp"
37template <
typename Ordinal,
typename T>
62template <
typename Ordinal,
typename T,
typename Serializer,
63 bool direct = Serializer::supportsDirectSerialization>
73template <
typename Ordinal,
typename T,
typename Serializer,
74 bool direct = Serializer::supportsDirectSerialization>
85template <
typename Ordinal,
typename T,
typename Serializer,
86 bool direct = Serializer::supportsDirectSerialization>
97template <
typename Ordinal,
typename T,
typename Serializer,
98 bool direct = Serializer::supportsDirectSerialization>
106template <
typename Ordinal,
typename T,
typename Serializer>
111 const Ordinal count, T buffer[],
141template <
typename Ordinal,
typename T,
typename Serializer>
146 const Ordinal count,
const T buffer[],
163 const char *charBuffer_;
177template <
typename Ordinal,
typename T,
typename Serializer>
182 const Ordinal bytes,
char charBuffer[],
211template <
typename Ordinal,
typename T,
typename Serializer>
216 const Ordinal bytes,
const char charBuffer[],
229 const char *charBuffer_;
244template <
typename Ordinal,
typename T,
typename Serializer>
249 const Ordinal count, T buffer[],
279template <
typename Ordinal,
typename T,
typename Serializer>
284 const Ordinal count,
const T buffer[],
315template <
typename Ordinal,
typename T,
typename Serializer>
320 const Ordinal bytes,
char charBuffer[],
349template <
typename Ordinal,
typename T,
typename Serializer>
354 const Ordinal bytes,
const char charBuffer[],
367 const char *charBuffer_;
381template <
typename Ordinal,
typename T,
389 const Ordinal count, T buffer[],
391 ) : Base(count,buffer,serializer) {}
397template <
typename Ordinal,
typename T,
405 const Ordinal count,
const T buffer[],
407 ) : Base(count,buffer,serializer) {}
414template <
typename Ordinal,
typename T,
422 const Ordinal bytes,
char charBuffer[],
424 ) : Base(bytes,charBuffer,serializer) {}
431template <
typename Ordinal,
typename T,
439 const Ordinal bytes,
const char charBuffer[],
441 ) : Base(bytes,charBuffer,serializer) {}
450template <
typename Ordinal,
typename T>
459 const Ordinal count, T buffer[],
461 ) : Base(count,buffer,serializer) {}
470template <
typename Ordinal,
typename T>
479 const Ordinal count,
const T buffer[],
481 ) : Base(count,buffer,serializer) {}
491template <
typename Ordinal,
typename T>
500 const Ordinal bytes,
char charBuffer[],
502 ) : Base(bytes,charBuffer,serializer) {}
512template <
typename Ordinal,
typename T>
521 const Ordinal bytes,
const char charBuffer[],
523 ) : Base(bytes,charBuffer,serializer) {}
533template <
typename Ordinal,
typename T,
typename Serializer>
538 :count_(count), buffer_(buffer), serializer_(serializer)
540 bytes_ = serializer_->fromCountToDirectBytes(count_);
541 charBuffer_ = serializer_->convertToCharPtr(buffer_);
544template <
typename Ordinal,
typename T,
typename Serializer>
551template <
typename Ordinal,
typename T,
typename Serializer>
558template <
typename Ordinal,
typename T,
typename Serializer>
566template <
typename Ordinal,
typename T,
typename Serializer>
579template <
typename Ordinal,
typename T,
typename Serializer>
584 :count_(count), buffer_(buffer), serializer_(serializer)
586 bytes_ = serializer_->fromCountToDirectBytes(count_);
587 charBuffer_ = serializer_->convertToCharPtr(buffer_);
590template <
typename Ordinal,
typename T,
typename Serializer>
597template <
typename Ordinal,
typename T,
typename Serializer>
604template <
typename Ordinal,
typename T,
typename Serializer>
611template <
typename Ordinal,
typename T,
typename Serializer>
623template <
typename Ordinal,
typename T,
typename Serializer>
628 :bytes_(bytes), charBuffer_(charBuffer), serializer_(serializer)
630 count_ = serializer_->fromDirectBytesToCount(bytes_);
631 buffer_ = serializer_->convertFromCharPtr(charBuffer_);
634template <
typename Ordinal,
typename T,
typename Serializer>
641template <
typename Ordinal,
typename T,
typename Serializer>
648template <
typename Ordinal,
typename T,
typename Serializer>
659template <
typename Ordinal,
typename T,
typename Serializer>
664 :bytes_(bytes), charBuffer_(charBuffer), serializer_(serializer)
666 count_ = serializer_->fromDirectBytesToCount(bytes_);
667 buffer_ = serializer_->convertFromCharPtr(charBuffer_);
670template <
typename Ordinal,
typename T,
typename Serializer>
677template <
typename Ordinal,
typename T,
typename Serializer>
684template <
typename Ordinal,
typename T,
typename Serializer>
699template <
typename Ordinal,
typename T,
typename Serializer>
704 :count_(count), buffer_(buffer), serializer_(serializer)
706 bytes_ = serializer_->fromCountToIndirectBytes(count_, buffer_);
707 charBuffer_.resize(bytes_);
708 serializer_->serialize(count_, buffer_, bytes_, &charBuffer_[0]);
711template <
typename Ordinal,
typename T,
typename Serializer>
715 serializer_->deserialize(bytes_, &charBuffer_[0], count_, buffer_);
718template <
typename Ordinal,
typename T,
typename Serializer>
722 return &charBuffer_[0];
725template <
typename Ordinal,
typename T,
typename Serializer>
732template <
typename Ordinal,
typename T,
typename Serializer>
737 return charBuffer_.view(0, bytes_);
745template <
typename Ordinal,
typename T,
typename Serializer>
750 :count_(count), buffer_(buffer), serializer_(serializer)
752 bytes_ = serializer_->fromCountToIndirectBytes(count_, buffer_);
753 charBuffer_.resize(bytes_);
754 serializer_->serialize(count_, buffer_, bytes_, &charBuffer_[0]);
757template <
typename Ordinal,
typename T,
typename Serializer>
763template <
typename Ordinal,
typename T,
typename Serializer>
767 return &charBuffer_[0];
770template <
typename Ordinal,
typename T,
typename Serializer>
777template <
typename Ordinal,
typename T,
typename Serializer>
782 return charBuffer_.view(0, bytes_);
789template <
typename Ordinal,
typename T,
typename Serializer>
794 :bytes_(bytes), charBuffer_(charBuffer), serializer_(serializer)
796 count_ = serializer_->fromIndirectBytesToCount(bytes_, charBuffer_);
797 buffer_.resize(count_);
798 serializer_->deserialize(bytes_, charBuffer_, count_, &buffer_[0]);
801template <
typename Ordinal,
typename T,
typename Serializer>
805 serializer_->serialize(count_, &buffer_[0], bytes_, charBuffer_);
808template <
typename Ordinal,
typename T,
typename Serializer>
815template <
typename Ordinal,
typename T,
typename Serializer>
826template <
typename Ordinal,
typename T,
typename Serializer>
831 :bytes_(bytes), charBuffer_(charBuffer), serializer_(serializer)
833 count_ = serializer_->fromIndirectBytesToCount(bytes_, charBuffer_);
834 buffer_.resize(count_);
835 serializer_->deserialize(bytes_, charBuffer_, count_, &buffer_[0]);
838template <
typename Ordinal,
typename T,
typename Serializer>
844template <
typename Ordinal,
typename T,
typename Serializer>
851template <
typename Ordinal,
typename T,
typename Serializer>
Templated array class derived from the STL std::vector.
Teuchos::SerializationTraits and Teuchos::DirectSerializationTraits definitions.
ArrayView< T > arrayView(T *p, typename ArrayView< T >::size_type size)
Construct a const or non-const view to const or non-const data.
Replacement for std::vector that is compatible with the Teuchos Memory Management classes.
const T * getBuffer() const
ConstValueTypeDeserializationBufferImp(const Ordinal bytes, const char charBuffer[], const RCP< const Serializer > &serializer)
Serialize to an internally stored char[] buffer.
const T * getBuffer() const
ConstValueTypeDeserializationBufferImp(const Ordinal bytes, const char charBuffer[], const RCP< const Serializer > &serializer)
Serialize to an internally stored char[] buffer.
Encapsulate how an array of non-const serialized objects with value sematics stored in a char[] array...
ConstValueTypeDeserializationBuffer(const Ordinal bytes, const char charBuffer[], const RCP< const Serializer > &serializer=DS::getDefaultSerializerRCP())
Serialize to an internally stored char[] buffer.
ConstValueTypeDeserializationBuffer(const Ordinal bytes, const char charBuffer[], const RCP< const Serializer > &serializer)
Serialize to an internally stored char[] buffer.
const char * getCharBuffer() const
ConstValueTypeSerializationBufferImp(const Ordinal count, const T buffer[], const RCP< const Serializer > &serializer)
Serialize to an internally stored char[] buffer.
const ArrayView< const char > getCharBufferView() const
const char * getCharBuffer() const
ConstValueTypeSerializationBufferImp(const Ordinal count, const T buffer[], const RCP< const Serializer > &serializer)
Serialize to an internally stored char[] buffer.
const ArrayView< const char > getCharBufferView() const
Encapsulate how an array of const objects with value sematics is serialized into a const char[] array...
ConstValueTypeSerializationBuffer(const Ordinal count, const T buffer[], const RCP< const Serializer > &serializer=DS::getDefaultSerializerRCP())
Serialize to an internally stored char[] buffer.
ConstValueTypeSerializationBuffer(const Ordinal count, const T buffer[], const RCP< const Serializer > &serializer)
Serialize to an internally stored char[] buffer.
A class for instantiating a default serialization object.
static DefaultSerializerType getDefaultSerializer()
Return an instance of the default serializer.
SerializationTraits< Ordinal, T > DefaultSerializerType
Typename of default serializer.
static Teuchos::RCP< DefaultSerializerType > getDefaultSerializerRCP()
Return an RCP of an instance of the default serializer.
Smart reference counting pointer class for automatic garbage collection.
Serialization traits class for types T that use value semantics.
Strategy interface for the indirect serializing and deserializing objects of a given type handled usi...
ValueTypeDeserializationBufferImp(const Ordinal bytes, char charBuffer[], const RCP< const Serializer > &serializer)
Serialize to an internally stored char[] buffer.
ValueTypeDeserializationBufferImp(const Ordinal bytes, char charBuffer[], const RCP< const Serializer > &serializer)
Serialize to an internally stored char[] buffer.
Encapsulate how an array of non-const serialized objects with value sematics stored in a char[] array...
ValueTypeDeserializationBuffer(const Ordinal bytes, char charBuffer[], const RCP< const Serializer > &serializer=DS::getDefaultSerializerRCP())
Serialize to an internally stored char[] buffer.
ValueTypeDeserializationBuffer(const Ordinal bytes, char charBuffer[], const RCP< const Serializer > &serializer)
Serialize to an internally stored char[] buffer.
char * getCharBuffer() const
ValueTypeSerializationBufferImp(const Ordinal count, T buffer[], const RCP< const Serializer > &serializer)
Serialize to an internally stored char[] buffer.
const ArrayView< char > getCharBufferView() const
ValueTypeSerializationBufferImp(const Ordinal count, T buffer[], const RCP< const Serializer > &serializer)
Serialize to an internally stored char[] buffer.
char * getCharBuffer() const
const ArrayView< char > getCharBufferView() const
Encapsulate how an array of non-const objects with value sematics is serialized into a char[] array.
ValueTypeSerializationBuffer(const Ordinal count, T buffer[], const RCP< const Serializer > &serializer=DS::getDefaultSerializerRCP())
Serialize to an internally stored char[] buffer.
ValueTypeSerializationBuffer(const Ordinal count, T buffer[], const RCP< const Serializer > &serializer)
Serialize to an internally stored char[] buffer.
The Teuchos namespace contains all of the classes, structs and enums used by Teuchos,...
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Deprecated.