47 #ifndef _MIRA_CHANNELBUFFER_H_ 48 #define _MIRA_CHANNELBUFFER_H_ 52 #include <type_traits> 55 #include <boost/noncopyable.hpp> 56 #include <boost/thread/mutex.hpp> 57 #include <boost/thread/shared_mutex.hpp> 80 template <
typename TargetType>
84 template <
typename TargetType>
134 template <
typename TargetType>
137 template <
typename TargetType>
200 virtual ~Slot() =
default;
211 mStorageDuration(
Duration::seconds(0)),
212 mAutoIncreaseStorageDuration(true),
228 mMinSlots = other.mMinSlots;
229 mMaxSlots = other.mMaxSlots;
230 mStorageDuration = other.mStorageDuration;
231 mAutoIncreaseStorageDuration = other.mAutoIncreaseStorageDuration;
303 virtual bool isTyped()
const = 0;
369 uint8 formatVersion,
bool orLower) = 0;
377 std::list<BinarySerializerCodecPtr>& codecs) = 0;
387 std::list<BinarySerializerCodecPtr>& codecs,
388 uint8 formatVersion,
bool orLower) = 0;
508 std::size_t olderSlots, std::size_t newerSlots,
528 template<
typename TargetType>
538 Slot* findFirstOlderSlot(
const Time& timestamp, Slot* start=NULL);
546 void splice(Slot* first, Slot* last, Slot* position)
const;
552 void splice(Slot* item, Slot* position)
const {
553 splice(item,item,position);
556 static bool isEmpty(
const ListItem& list) {
return list.next == &list; }
557 static Slot* begin(ListItem& list) {
return list.next; }
558 static Slot* last(ListItem& list) {
return list.prev; }
559 static Slot* end(ListItem& list) {
return (Slot*)&list; }
562 void deleteSlots(ListItem& list);
575 void resetSlot(Slot* s);
578 Duration mStorageDuration;
579 bool mAutoIncreaseStorageDuration;
580 std::size_t mMinSlots;
581 std::size_t mMaxSlots;
585 mutable boost::mutex mMutex;
603 ListItem mWaitingOrFree;
614 std::string dbgDumpList(ListItem& list,
bool brief);
618 void dbgDump(
const std::string& prefix,
bool brief=
true);
629 template <
typename T>
646 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
648 template <bool IsCheap = IsCheapToCopy<T>::value>
650 static_assert(IsCheap,
"TypedChannelBufferBase<T>::Slot::clone() must not be called " 651 "with IsCheapToCopy<T>=false");
652 auto slot = std::make_unique<Slot>();
658 slot->flags = this->
flags;
659 slot->data = this->
data;
674 return static_cast<Slot*
>(s);
687 MIRA_THROW(XRuntime,
"Cannot set Typename for typed channels");
729 bs.
serialize(slot->data.internalValueRep(),
false);
737 uint8 formatVersion,
bool orLower)
739 uint8 serializerVersion = BinaryBufferSerializer::getSerializerFormatVersion();
741 if (formatVersion == serializerVersion)
744 if (formatVersion == 0) {
756 bs.
serialize(slot->data.internalValueRep(),
false);
762 MIRA_THROW(XIO,
"Requested serialized data of binary format version " << (
int)formatVersion
763 <<
". Only implemented for versions 0, " << (
int)serializerVersion <<
".");
767 std::list<BinarySerializerCodecPtr>& codecs)
781 bs.
serialize(slot->data.internalValueRep(),
false);
783 return std::move(serializedValue);
787 std::list<BinarySerializerCodecPtr>& codecs,
788 uint8 formatVersion,
bool orLower)
790 uint8 serializerVersion = BinaryBufferSerializer::getSerializerFormatVersion();
792 if (formatVersion == serializerVersion)
795 if (formatVersion == 0) {
808 bs.
serialize(slot->data.internalValueRep(),
false);
810 return std::move(serializedValue);
813 MIRA_THROW(XIO,
"Requested serialized data of binary format version " << (
int)formatVersion
814 <<
". Only implemented for versions 0, " << (
int)serializerVersion <<
".");
828 boost::mutex::scoped_lock lock(mCodecsMutex);
831 bs.
deserialize(slot->data.internalValueRep(),
false);
833 boost::mutex::scoped_lock lock(mCodecsMutex);
844 oValue = json.
serialize(slot->data.internalValueRep());
853 oValue = serializer.
serialize(slot->data.internalValueRep());
870 deserializer.
deserialize(slot->data.internalValueRep());
878 const std::string rootTag = *node;
886 boost::mutex mCodecsMutex;
895 template <
typename T>
917 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
927 return static_cast<Slot*
>(s);
943 virtual bool isTyped()
const {
return false; }
948 MIRA_THROW(XRuntime,
"Cannot create type meta for untyped channels");
982 uint8 formatVersion,
bool orLower)
985 uint8 dataVersion = BinaryBufferDeserializer::getDataFormatVersion(stream);
986 if ((!orLower && (dataVersion != formatVersion)) || (dataVersion > formatVersion)) {
987 MIRA_THROW(XIO,
"Untyped channel contains serialized data of version " << (
int)dataVersion
988 <<
", cannot return data of version " << (
int)formatVersion <<
".");
996 std::list<BinarySerializerCodecPtr>& codecs)
1003 std::list<BinarySerializerCodecPtr>& codecs,
1004 uint8 formatVersion,
bool orLower)
1083 template <
typename T>
1086 static_assert(std::is_base_of<mira::Object,T>::value,
1087 "In channels you can only use pointers of polymorphic " 1088 "classes that are derived from mira::Object. Pointers to " 1089 "other classes cannot be stored in a channel.");
1095 mMostDerivedClass = &T::CLASS();
1108 template <
typename U>
1109 struct ChannelBufferPromoterCommon
1114 "Can promote untyped channels to typed channels only");
1117 MIRA_THROW(XBadCast,
"Invalid promotion from untyped to typed " 1118 "ChannelBuffer. Typename does not match. ('" <<
1119 buffer->
getTypename() <<
"' != '" << typeName<U>() <<
"'");
1133 for(Slot* s=ChannelBufferBase::begin(buffer->mBuffer);
1134 s!=ChannelBufferBase::end(buffer->mBuffer); s=s->next)
1135 s->lock.lock_shared();
1138 for(Slot* s=ChannelBufferBase::begin(buffer->mBuffer);
1139 s!=ChannelBufferBase::end(buffer->mBuffer); s=s->next)
1153 for(Slot* s=ChannelBufferBase::begin(buffer->mBuffer);
1154 s!=ChannelBufferBase::end(buffer->mBuffer); s=s->next)
1155 s->lock.unlock_shared();
1173 template <
typename U>
1174 struct ChannelBufferPromoter :
public ChannelBufferPromoterCommon<U>
1181 return Base::promoteUntyped(buffer);
1191 template <
typename U>
1199 buffer = Base::promoteUntyped(buffer);
1203 assert(polymorphicBuffer!=NULL &&
1204 "We should never reach here if the buffer to promote is not " 1208 const Class* classU = &U::CLASS();
1211 polymorphicBuffer->
promote(classU);
1213 return polymorphicBuffer;
1219 template<
typename U>
Serializer for serializing objects in JSON format.
Definition: JSONSerializer.h:95
virtual void writeJSON(ChannelBufferBase::Slot *s, const JSONValue &value)
Writes data in json representation into the slot, using a default-instantiated JSONDeserializer.
Definition: ChannelBuffer.h:856
Slot * readSlotAtTime(const Time ×tamp, SlotQueryMode mode)
Returns a slot at the given time according to mode.
virtual void freeSlot(ChannelBufferBase::Slot *s)
Called to destroy the slot and free the used memory.
Definition: ChannelBuffer.h:702
void deserialize(T &value)
Definition: JSONSerializer.h:436
virtual ChannelBufferBase::Slot * allocateSlot()
Creates and returns a new slot.
void setStorageDuration(const Duration &storageDuration)
Sets the desired storage duration (the history).
boost::shared_mutex lock
Definition: ChannelBuffer.h:166
Definition: BinarySerializer.h:316
const Time * timestampPtr
Pointer to the actual timestamp in the slot data for easy access.
Definition: ChannelBuffer.h:178
const Class * mFixatedClass
Definition: ChannelBuffer.h:1071
virtual TypeMetaPtr createTypeMeta(ChannelBufferBase::Slot *s, MetaTypeDatabase &ioDB)
Creates meta information for data in slot and stores all meta information in the given database...
Definition: ChannelBuffer.h:947
virtual void readJSON(Slot *s, JSONValue &oValue)=0
Reads data of that slot as json representation using a default-instantiated JSONSerializer.
boost::mutex serializedValueLock
Lock for writing serializedValue in readSerializedData.
Definition: ChannelBuffer.h:173
const Class * mMostDerivedClass
Definition: ChannelBuffer.h:1070
bool isAutoIncreasingStorageDuration() const
Returns whether the storage duration is automatically increased.
Include file for all eigen related things.
virtual ~ChannelBuffer()
Definition: ChannelBuffer.h:934
Typed slot derived from ChannelBufferBase::Slot.
Definition: ChannelBuffer.h:643
void promote(const Class *promotionClass)
Promotes the polymorphic type of the channel to the given class type.
virtual void freeSlot(Slot *s)=0
Called to destroy the slot and free the used memory.
The first slot with timestamp < requested will be chosen.
Definition: ChannelBuffer.h:96
virtual void writeSerializedValue(ChannelBufferBase::Slot *s, Buffer< uint8 > data)
Write the given buffer (that contains binary serialized data WITHOUT the StampedHeader) to the slot...
Definition: ChannelBuffer.h:1010
virtual Buffer< uint8 > readSerializedValue(ChannelBufferBase::Slot *s, std::list< BinarySerializerCodecPtr > &codecs, uint8 formatVersion, bool orLower)
Returns a buffer containing the binary serialized data of the slot.
Definition: ChannelBuffer.h:786
Slot * castSlot(ChannelBufferBase::Slot *s)
Cast an abstract slot to a typed slot.
Definition: ChannelBuffer.h:925
specialize cv::DataType for our ImgPixel and inherit from cv::DataType<Vec>
Definition: IOService.h:67
virtual TypeMetaPtr createTypeMeta(Slot *s, MetaTypeDatabase &ioDB)=0
Creates meta information for data in slot and stores all meta information in the given database...
std::string Typename
Definition: Typename.h:60
virtual ChannelBufferBase::Slot * allocateSlot()
Creates and returns a new slot.
Definition: ChannelBuffer.h:697
Specialization for polymorphic types (only classes derived from mira::Object are supported!) ...
Definition: ChannelBuffer.h:1084
ValueType header
Definition: ChannelBuffer.h:916
virtual bool isTyped() const
Returns true, if the channel is typed and false, if it is untyped.
Definition: ChannelBuffer.h:943
Time and Duration wrapper class.
Class object which supports some kind of class reflection.
Definition: Class.h:97
virtual void freeSlot(ChannelBufferBase::Slot *s)
Called to destroy the slot and free the used memory.
virtual Typename getTypename() const
Returns the Typename of the slot values, in contrast to getTypeId() the Typename is portable and uniq...
Definition: ChannelBuffer.h:945
virtual void setTypename(const Typename &name)=0
Sets the Typename of the slot values.
ListItem()
Definition: ChannelBuffer.h:150
Stamped class specialization for polymorphic pointers.
Definition: Stamped.h:238
StampedHeader & stampedHeader(Stamped< T > &data)
Helper to extract the header from stamped data.
Definition: Stamped.h:482
ChannelBufferBase * promote()
Promotes this buffer to the specified target type (if required).
Definition: ChannelBuffer.h:1220
TypeMetaPtr getTypeMeta() const
Returns the meta information for the slots type.
Definition: ChannelBuffer.h:329
Base class for typed channel buffers.
Definition: ChannelBuffer.h:630
void setMinSlots(std::size_t minSlots)
Sets the desired min.
virtual void fixateType()
Calling this method will fix the type of the ChannelBuffer.
Definition: ChannelBuffer.h:696
static void dbgCheckListIntegrity(const ListItem &list)
Get compiler and platform independent typenames.
virtual Slot * allocateSlot()=0
Creates and returns a new slot.
void serialize(const std::string &name, const T &value, const std::string &comment="")
Serializes the specified object value under the given name.
Definition: Serializer.h:204
#define MIRA_THROW(ex, msg)
Macro for throwing an exception.
Definition: Exception.h:78
void serialize(const T &value, bool enableTypeCheck=true)
Provides a special serialize interface for the BinarySerializer.
Definition: BinarySerializer.h:590
Implements double-linked list item.
Definition: ChannelBuffer.h:148
Const sibling_iterator for iterating over xml nodes that have the same parent (siblings) ...
Definition: XMLDom.h:763
virtual StampedHeader & getStampedHeader(ChannelBufferBase::Slot *s)
Returns a reference to the stamped header information.
Definition: ChannelBuffer.h:968
Wrapper class for boost::posix_time::ptime for adding more functionality to it.
Definition: Time.h:418
Slot * requestWriteSlot()
Returns a slot for writing, where the shared_mutex is already write locked.
virtual const Buffer< uint8 > & readSerializedValue(ChannelBufferBase::Slot *s, uint8 formatVersion, bool orLower)
Returns a buffer containing the binary serialized data of the slot.
Definition: ChannelBuffer.h:736
ChannelBuffer()
Definition: ChannelBuffer.h:1094
virtual int getTypeId() const
Returns typeid of the slot values, the allocator creates.
A channel buffer for polymorphic types (classes derived from mira::Object)
Definition: ChannelBuffer.h:1034
Deserializer for serializing objects from JSON format.
Definition: JSONSerializer.h:406
virtual void writeXML(Slot *s, const XMLDom::const_iterator &node)=0
Writes data in xml representation into the slot, using a default-instantiated XMLDeserializer and the...
virtual int getTypeId() const
Returns typeid of the slot values, the allocator creates.
Definition: ChannelBuffer.h:942
virtual ~TypedChannelBufferBase()
Definition: ChannelBuffer.h:638
void setTypeMeta(TypeMetaPtr meta)
Sets the meta information of the slot's type.
Definition: ChannelBuffer.h:334
Binary serializer and deserializer.
PolymorphicChannelBuffer()
Constructor.
Definition: ChannelBuffer.h:1041
void registerCodec(BinarySerializerCodecPtr codec)
Registers the specified codec instance in this binary serializer.
Definition: BinarySerializer.h:756
virtual Buffer< uint8 > readSerializedValue(ChannelBufferBase::Slot *s, std::list< BinarySerializerCodecPtr > &codecs)
Returns a buffer containing the binary serialized data of the slot.
Definition: ChannelBuffer.h:995
virtual void writeSerializedValue(ChannelBufferBase::Slot *s, Buffer< uint8 > data)
Write the given buffer (that contains binary serialized data WITHOUT the StampedHeader) to the slot...
Definition: ChannelBuffer.h:817
virtual bool isPolymorphic() const
Returns true if the channel has a polymorphic type.
Definition: ChannelBuffer.h:944
virtual const Buffer< uint8 > & readSerializedValue(Slot *s)=0
Returns a buffer containing the binary serialized data of the slot.
virtual TypeMetaPtr createTypeMeta(ChannelBufferBase::Slot *s, MetaTypeDatabase &ioDB)
Creates meta information for data in slot and stores all meta information in the given database...
Definition: ChannelBuffer.h:689
Slot * castSlot(ChannelBufferBase::Slot *s)
Cast an abstract slot to a typed slot.
Definition: ChannelBuffer.h:669
virtual StampedHeader & getStampedHeader(ChannelBufferBase::Slot *s)
Returns a reference to the stamped header information.
Definition: ChannelBuffer.h:710
EIGEN_MAKE_ALIGNED_OPERATOR_NEW std::unique_ptr< Slot > clone()
Definition: ChannelBuffer.h:649
Stamped< T * > ValueType
Definition: ChannelBuffer.h:1089
Core class of the logging library.
Use this class to represent time durations.
Definition: Time.h:106
virtual bool isPolymorphic() const
Returns true if the channel has a polymorphic type.
Definition: ChannelBuffer.h:684
const CodecsMap & getCodecs() const
Return the map of currently known codecs.
Definition: BinarySerializer.h:1570
bool empty() const
Checks if the buffer is empty (used size == 0).
Definition: Buffer.h:299
Typed ChannelBuffer.
Definition: ChannelBuffer.h:896
The slot with smallest time difference to the requested will be chosen.
Definition: ChannelBuffer.h:102
virtual void fixateType()=0
Calling this method will fix the type of the ChannelBuffer.
virtual StampedHeader & getStampedHeader(Slot *s)=0
Returns a reference to the stamped header information.
ChannelBuffer()
Definition: ChannelBuffer.h:932
virtual const Buffer< uint8 > & readSerializedValue(ChannelBufferBase::Slot *s, uint8 formatVersion, bool orLower)
Returns a buffer containing the binary serialized data of the slot.
Definition: ChannelBuffer.h:981
Mix in for adding a time stamp, an optional frame id and an optional sequence id to data types like P...
Definition: Stamped.h:149
boost::shared_ptr< TypeMeta > TypeMetaPtr
Definition: MetaSerializer.h:309
virtual int getTypeId() const
Returns typeid of the slot values, the allocator creates.
Definition: ChannelBuffer.h:682
virtual void freeSlot(ChannelBufferBase::Slot *s)
Called to destroy the slot and free the used memory.
Definition: ChannelBuffer.h:960
Mix in for adding a timestamp to data types.
virtual Buffer< uint8 > readSerializedValue(ChannelBufferBase::Slot *s, std::list< BinarySerializerCodecPtr > &codecs, uint8 formatVersion, bool orLower)
Returns a buffer containing the binary serialized data of the slot.
Definition: ChannelBuffer.h:1002
virtual void readJSON(ChannelBufferBase::Slot *s, JSONValue &oValue, JSONSerializer &serializer)
Reads data of that slot as json representation using the provided JSONSerializer. ...
Definition: ChannelBuffer.h:847
Stamped< T > ValueType
Definition: ChannelBuffer.h:634
void cloneParameters(const ChannelBufferBase &other)
Copies the parameters of other to this.
Definition: ChannelBuffer.h:226
virtual bool isPolymorphic() const =0
Returns true if the channel has a polymorphic type.
void dbgDump(const std::string &prefix, bool brief=true)
void setMaxSlots(std::size_t maxSlots)
Sets the max.
virtual ~ChannelBufferBase()
virtual bool isPolymorphic() const
Returns true if the channel has a polymorphic type.
Definition: ChannelBuffer.h:1050
ValueType data
the actual data value, that is stored in this channel's slots
Definition: ChannelBuffer.h:645
Base class that manages the slots of channels by providing read and write access to them...
Definition: ChannelBuffer.h:132
const Time & timestamp() const
Definition: ChannelBuffer.h:194
Container for storing a single data element in the linked list.
Definition: ChannelBuffer.h:164
std::size_t getMaxSlots() const
Returns the size of the max number of slots.
bool finishWriteSlot(Slot *n, bool *dropped=NULL)
Adds written slot into buffer at the right time position.
void setCodecs(const CodecsMap &codecs)
Set the map of known codecs.
Definition: BinarySerializer.h:1575
Slot * readNewestSlot()
Returns the newest(latest) slot for reading, where the shared_mutex is already read locked...
virtual void setTypename(const Typename &name)
Sets the Typename of the slot values.
Definition: ChannelBuffer.h:686
virtual void fixateType()
Calling this method will fix the type of the ChannelBuffer.
Definition: ChannelBuffer.h:952
Input stream adapter that can be assigned to any input stream and allows binary input using the >> st...
Definition: BinaryStream.h:525
Slot * next
Definition: ChannelBuffer.h:157
std::size_t getSize() const
Returns the size of the buffer.
virtual Typename getTypename() const
Returns the Typename of the slot values, in contrast to getTypeId() the Typename is portable and uniq...
Buffer< uint8 > serializedValue
The data of this slot as serialized data.
Definition: ChannelBuffer.h:184
virtual void readJSON(ChannelBufferBase::Slot *s, JSONValue &oValue)
Reads data of that slot as json representation using a default-instantiated JSONSerializer.
Definition: ChannelBuffer.h:838
virtual void fixateType()
Calling this method will fix the type of the ChannelBuffer.
virtual const Buffer< uint8 > & readSerializedValue(ChannelBufferBase::Slot *s)
Returns a buffer containing the binary serialized data of the slot.
Definition: ChannelBuffer.h:976
void deserialize(T &value, bool enableTypeCheck=true, bool recursive=false)
Provides a special deserialize interface for the BinaryDeserializer.
Definition: BinarySerializer.h:1329
StampedHeader ValueType
Definition: ChannelBuffer.h:910
virtual void writeSerializedValue(ChannelBufferBase::Slot *s, Buffer< uint8 > data)
Write the given buffer (that contains binary serialized data WITHOUT the StampedHeader) to the slot...
virtual bool isTyped() const
Returns true, if the channel is typed and false, if it is untyped.
Definition: ChannelBuffer.h:683
virtual ChannelBufferBase::Slot * allocateSlot()
Creates and returns a new slot.
Definition: ChannelBuffer.h:954
XMLSerializer and XMLDeserializer.
std::size_t getMinSlots() const
Returns the size of the min number of slots.
virtual void writeSerializedValue(Slot *s, Buffer< uint8 > data)=0
Write the given buffer (that contains binary serialized data WITHOUT the StampedHeader) to the slot...
Prefer filling the interval with slots with timestamp > requested.
Definition: ChannelBuffer.h:114
void discardWriteSlot(Slot *n)
Discards written slot.
Prefer filling the interval with slots with timestamp < requested.
Definition: ChannelBuffer.h:112
void setAutoIncreaseStorageDuration(bool increase)
Sets whether the storage duration is automatically increased on read accesses.
uint32 flags
Used to store internal flags that are especially used by the remote capability of the framework...
Definition: ChannelBuffer.h:192
void deserializeFromNode(const char *name, T &value)
In contrast to the deserialize() method this method will use the node that was specified in the const...
Definition: XMLSerializer.h:362
IntervalFillMode
Mode that is used to determine what slots should be added to the interval when not enough slots are a...
Definition: ChannelBuffer.h:109
virtual const Buffer< uint8 > & readSerializedValue(ChannelBufferBase::Slot *s)
Returns a buffer containing the binary serialized data of the slot.
Definition: ChannelBuffer.h:716
void writeXML(ChannelBufferBase::Slot *s, const XMLDom::const_iterator &node) override
Writes data in xml representation into the slot, using a default-instantiated XMLDeserializer and the...
Definition: ChannelBuffer.h:873
virtual Buffer< uint8 > readSerializedValue(ChannelBufferBase::Slot *s, std::list< BinarySerializerCodecPtr > &codecs)
Returns a buffer containing the binary serialized data of the slot.
Definition: ChannelBuffer.h:766
virtual Typename getTypename() const =0
Returns the Typename of the slot values, in contrast to getTypeId() the Typename is portable and uniq...
SlotQueryMode
Mode that is used to determine the slot obtained from a channel when no slot exists at the exact time...
Definition: ChannelBuffer.h:93
json::Value JSONValue
Imports the json::Value type into mira namespace.
Definition: JSON.h:361
void clear()
Deletes all slots in all lists and therefore clears the whole buffer.
Provides method for generating a unique id for any type.
Duration getStorageDuration() const
Returns the storage duration.
Slot * prev
Definition: ChannelBuffer.h:158
virtual Typename getTypename() const
Returns the Typename of the slot values, in contrast to getTypeId() the Typename is portable and uniq...
Definition: ChannelBuffer.h:685
virtual void writeJSON(Slot *s, const JSONValue &value)=0
Writes data in json representation into the slot, using a default-instantiated JSONDeserializer.
void readInterval(const Time ×tamp, std::size_t nrSlots, std::size_t olderSlots, std::size_t newerSlots, IntervalFillMode fillMode, std::list< Slot *> &oSlots)
Reads an interval of slots.
ChannelBufferBase()
Constructor.
Definition: ChannelBuffer.h:210
Serializer and Deserializer for JSON format.
virtual void writeJSON(ChannelBufferBase::Slot *s, JSONDeserializer &deserializer)
Writes data from an initialized json deserializer into the slot.
Definition: ChannelBuffer.h:865
virtual int getTypeId() const =0
Returns typeid of the slot values, the allocator creates.
virtual bool isTyped() const =0
Returns true, if the channel is typed and false, if it is untyped.
The first slot with timestamp > requested will be chosen.
Definition: ChannelBuffer.h:99
std::map< TypeId, BinarySerializerCodecPtr > CodecsMap
A map of binary serialization codecs.
Definition: BinarySerializer.h:1259
boost::shared_ptr< BinarySerializerCodec > BinarySerializerCodecPtr
Shared pointer of BinarySerializerCodec.
Definition: BinarySerializerCodec.h:64
Deserializer for serializing objects from XML format.
Definition: XMLSerializer.h:314