|
ACF $AcfVersion:0$
|
Represents an input/output persistence archive for object serialization. More...
#include <IArchive.h>
Public Types | |
| enum | MessageId { MI_TAG_ERROR = 0x3f320a0 , MI_TAG_SKIPPED } |
Public Member Functions | |
| virtual bool | IsStoring () const =0 |
| Checks if this archive is in storing (writing) or loading (reading) mode. | |
| virtual bool | IsTagSkippingSupported () const =0 |
| Checks if skipping to the end of a tag on EndTag() is supported. | |
| virtual const IVersionInfo & | GetVersionInfo () const =0 |
| Gets version information for the archived stream. | |
| virtual bool | BeginTag (const CArchiveTag &tag)=0 |
| Begins a tagged section in the archive. | |
| virtual bool | BeginMultiTag (const CArchiveTag &tag, const CArchiveTag &subTag, int &count)=0 |
| Begins a tagged section containing multiple elements of the same type. | |
| virtual bool | EndTag (const CArchiveTag &tag)=0 |
| Ends a tagged section in the archive. | |
| virtual bool | Process (bool &value)=0 |
| Processes (reads or writes) a boolean value. | |
| virtual bool | Process (char &value)=0 |
| Process primitive type. | |
| virtual bool | Process (quint8 &value)=0 |
| Process primitive type. | |
| virtual bool | Process (qint8 &value)=0 |
| Process primitive type. | |
| virtual bool | Process (quint16 &value)=0 |
| Process primitive type. | |
| virtual bool | Process (qint16 &value)=0 |
| Process primitive type. | |
| virtual bool | Process (quint32 &value)=0 |
| Process primitive type. | |
| virtual bool | Process (qint32 &value)=0 |
| Process primitive type. | |
| virtual bool | Process (quint64 &value)=0 |
| Process primitive type. | |
| virtual bool | Process (qint64 &value)=0 |
| Process primitive type. | |
| virtual bool | Process (float &value)=0 |
| Process primitive type. | |
| virtual bool | Process (double &value)=0 |
| Process primitive type. | |
| virtual bool | Process (QByteArray &value)=0 |
| Process primitive type. | |
| virtual bool | Process (QString &value)=0 |
| Process primitive type. | |
| template<typename Primitive > | |
| bool | TagAndProcess (const CArchiveTag &tag, Primitive &value) |
| virtual bool | ProcessData (void *dataPtr, int size)=0 |
| Process binary data block. | |
| virtual bool | ProcessBits (void *dataPtr, int bitsCount, int bytesCount)=0 |
| Process binary data block. | |
Public Member Functions inherited from istd::IPolymorphic | |
| virtual | ~IPolymorphic () |
Represents an input/output persistence archive for object serialization.
IArchive provides an abstract interface for serializing and deserializing objects to and from various storage media. It acts as a bridge between the logical structure of your data and the physical representation (binary file, XML, JSON, memory buffer, etc.). This abstraction allows the same serialization code to work with different archive types.
ACF provides several archive implementations:
Tags**: Archives organize data using tags (similar to XML elements). Each tag has a name and describes a logical unit of data. Tags can be nested to create hierarchical structures.
Bidirectional**: The same Process() methods are used for both reading and writing. Use IsStoring() to determine the direction.
Type Safety**: Archive provides Process() overloads for common types (int, double, QString, etc.), ensuring type-safe serialization.
Definition at line 163 of file IArchive.h.
| Enumerator | |
|---|---|
| MI_TAG_ERROR | |
| MI_TAG_SKIPPED | |
Definition at line 166 of file IArchive.h.
|
pure virtual |
Begins a tagged section containing multiple elements of the same type.
BeginMultiTag is used for serializing collections, arrays, or lists where you have multiple items of the same structure. The count parameter works differently for reading vs. writing:
| tag | Main container tag for the entire collection |
| subTag | Tag type for each individual element in the collection |
| count | [in/out] For writing: number of elements to serialize For reading: set by archive to number of stored elements |
Implemented in iser::CArchiveBase, iser::CXmlReadArchiveBase, iser::CXmlWriteArchiveBase, iqt::CSettingsReadArchive, iqt::CSettingsWriteArchive, iser::CCompactXmlReadArchiveBase, iser::CCompactXmlWriteArchiveBase, iser::CJsonReadArchiveBase, and iser::CJsonWriteArchiveBase.
Referenced by imath::TFastVector< MaxSize, Element >::Serialize(), imath::TMathVectorWrap< Base >::Serialize(), iattr::TMultiAttribute< Value >::Serialize(), ibase::TFactorisableContainer< InterfaceClass >::Serialize(), ibase::TSerializableContainer< ItemClass, ContainerType >::Serialize(), icmm::TComposedColor< Size >::Serialize(), idoc::TMultiPageDocumentWrap< Base >::Serialize(), imath::TFulcrumGrid< Position, Fulcrums >::Serialize(), iser::CPrimitiveTypesSerializer::SerializeAssociativeContainer(), iser::CPrimitiveTypesSerializer::SerializeAssociativeObjectContainer(), iser::CPrimitiveTypesSerializer::SerializeContainer(), and iser::CPrimitiveTypesSerializer::SerializeObjectContainer().
|
pure virtual |
Begins a tagged section in the archive.
Tags organize data into logical units with names and descriptions. Every BeginTag() must be matched with an EndTag() call. Tags can be nested to create hierarchical data structures.
| tag | The tag object describing this section. Use static CArchiveTag instances to avoid repeated construction overhead. |
Implemented in iser::CBinaryReadArchiveBase, iser::CBinaryWriteArchiveBase, iser::CXmlReadArchiveBase, iser::CXmlWriteArchiveBase, ifile::CFileReadArchive, ifile::CFileWriteArchive, iqt::CSettingsReadArchive, iqt::CSettingsWriteArchive, iser::CCompactXmlReadArchiveBase, iser::CCompactXmlWriteArchiveBase, iser::CJsonReadArchiveBase, and iser::CJsonWriteArchiveBase.
Referenced by imath::TFastVector< MaxSize, Element >::Serialize(), imath::TMathVectorWrap< Base >::Serialize(), imath::TMatrix< Width, Height, Element >::Serialize(), iattr::TAttribute< Value >::Serialize(), iattr::TMultiAttribute< Value >::Serialize(), ibase::TFactorisableContainer< InterfaceClass >::Serialize(), ibase::TSerializableContainer< ItemClass, ContainerType >::Serialize(), icmm::TComposedColor< Size >::Serialize(), idoc::TMultiPageDocumentWrap< Base >::Serialize(), ilog::TExtMessage< Element >::Serialize(), imath::TFulcrumGrid< Position, Fulcrums >::Serialize(), imath::TMultidimensionalPolynomial< Dimensions, Element >::Serialize(), Model::Serialize(), iser::CPrimitiveTypesSerializer::SerializeAssociativeContainer(), iser::CPrimitiveTypesSerializer::SerializeAssociativeObjectContainer(), iser::CPrimitiveTypesSerializer::SerializeContainer(), iser::CPrimitiveTypesSerializer::SerializeObjectContainer(), idoc::TMultiPageDocumentWrap< Base >::SerializePage(), iser::CPrimitiveTypesSerializer::SerializeRange(), and TagAndProcess().
|
pure virtual |
Ends a tagged section in the archive.
Must be called after BeginTag() or BeginMultiTag() to close the section. If tag skipping is supported and not all data was read, this will skip to the end of the tag section, enabling forward compatibility.
| tag | The same tag object passed to BeginTag() or BeginMultiTag() |
Implemented in iser::CBinaryReadArchiveBase, iser::CBinaryWriteArchiveBase, iser::CXmlReadArchiveBase, iser::CXmlWriteArchiveBase, ifile::CFileReadArchive, ifile::CFileWriteArchive, iqt::CSettingsReadArchive, iqt::CSettingsWriteArchive, iser::CCompactXmlReadArchiveBase, iser::CCompactXmlWriteArchiveBase, iser::CJsonReadArchiveBase, and iser::CJsonWriteArchiveBase.
Referenced by imath::TFastVector< MaxSize, Element >::Serialize(), imath::TMathVectorWrap< Base >::Serialize(), imath::TMatrix< Width, Height, Element >::Serialize(), iattr::TAttribute< Value >::Serialize(), iattr::TMultiAttribute< Value >::Serialize(), ibase::TFactorisableContainer< InterfaceClass >::Serialize(), ibase::TSerializableContainer< ItemClass, ContainerType >::Serialize(), icmm::TComposedColor< Size >::Serialize(), idoc::TMultiPageDocumentWrap< Base >::Serialize(), ilog::TExtMessage< Element >::Serialize(), imath::TFulcrumGrid< Position, Fulcrums >::Serialize(), imath::TMultidimensionalPolynomial< Dimensions, Element >::Serialize(), Model::Serialize(), iser::CPrimitiveTypesSerializer::SerializeAssociativeContainer(), iser::CPrimitiveTypesSerializer::SerializeAssociativeObjectContainer(), iser::CPrimitiveTypesSerializer::SerializeContainer(), iser::CPrimitiveTypesSerializer::SerializeObjectContainer(), idoc::TMultiPageDocumentWrap< Base >::SerializePage(), iser::CPrimitiveTypesSerializer::SerializeRange(), and TagAndProcess().
|
pure virtual |
Gets version information for the archived stream.
Version information allows handling compatibility between different versions of your data format. You can query the version to decide whether to read optional or newly added fields.
Implemented in iser::CReadArchiveBase, and iser::CWriteArchiveBase.
Referenced by ilog::TExtMessage< Element >::Serialize().
|
pure virtual |
Checks if this archive is in storing (writing) or loading (reading) mode.
This method is fundamental for implementing bidirectional serialization. The same Serialize() method is used for both reading and writing, and IsStoring() tells you which operation is being performed.
Implemented in iser::CReadArchiveBase, and iser::CWriteArchiveBase.
Referenced by imath::TFastVector< MaxSize, Element >::Serialize(), imath::TMathVectorWrap< Base >::Serialize(), imath::TMatrix< Width, Height, Element >::Serialize(), iattr::TAttribute< Value >::Serialize(), iattr::TMultiAttribute< Value >::Serialize(), ibase::TFactorisableContainer< InterfaceClass >::Serialize(), ibase::TSerializableContainer< ItemClass, ContainerType >::Serialize(), icmm::TComposedColor< Size >::Serialize(), idoc::TMultiPageDocumentWrap< Base >::Serialize(), imath::TFulcrumGrid< Position, Fulcrums >::Serialize(), imath::TMultidimensionalPolynomial< Dimensions, Element >::Serialize(), iser::CPrimitiveTypesSerializer::SerializeAssociativeContainer(), iser::CPrimitiveTypesSerializer::SerializeAssociativeObjectContainer(), iser::CPrimitiveTypesSerializer::SerializeContainer(), iser::CPrimitiveTypesSerializer::SerializeEnum(), iser::CPrimitiveTypesSerializer::SerializeObjectContainer(), and iser::CPrimitiveTypesSerializer::SerializeQEnum().
|
pure virtual |
Checks if skipping to the end of a tag on EndTag() is supported.
Some archive types (like XML) support skipping unread content within a tag, allowing forward compatibility. When reading an archive created by a newer version that added fields, this feature lets you skip unknown data.
Implemented in ifile::CFileReadArchive, ifile::CFileWriteArchive, iser::CArchiveBase, iser::CCompactXmlReadArchiveBase, iser::CCompactXmlWriteArchiveBase, iser::CJsonWriteArchiveBase, iser::CXmlReadArchiveBase, and iser::CXmlWriteArchiveBase.
|
pure virtual |
Processes (reads or writes) a boolean value.
| value | [in/out] For writing: the value to store For reading: receives the loaded value |
Implemented in iqt::CSettingsReadArchive, iqt::CSettingsWriteArchive, iser::CBinaryReadArchiveBase, iser::CBinaryWriteArchiveBase, iser::CCompactXmlWriteArchiveBase, iser::CJsonWriteArchiveBase, iser::CTextReadArchiveBase, iser::CTextWriteArchiveBase, iser::CXmlReadArchiveBase, and iser::CXmlWriteArchiveBase.
Referenced by imath::TFastVector< MaxSize, Element >::Serialize(), imath::TMathVectorWrap< Base >::Serialize(), imath::TMatrix< Width, Height, Element >::Serialize(), imath::TVector< Size, Element >::Serialize(), iattr::TAttribute< Value >::Serialize(), iattr::TMultiAttribute< Value >::Serialize(), ibase::TFactorisableContainer< InterfaceClass >::Serialize(), icmm::TComposedColor< Size >::Serialize(), imath::TFulcrumGrid< Position, Fulcrums >::Serialize(), imath::TMultidimensionalPolynomial< Dimensions, Element >::Serialize(), Model::Serialize(), iser::CPrimitiveTypesSerializer::SerializeAssociativeContainer(), iser::CPrimitiveTypesSerializer::SerializeContainer(), iser::CPrimitiveTypesSerializer::SerializeEnum(), iser::CPrimitiveTypesSerializer::SerializeIndex(), iser::CPrimitiveTypesSerializer::SerializeQEnum(), iser::CPrimitiveTypesSerializer::SerializeRange(), and TagAndProcess().
|
pure virtual |
Process primitive type.
Implemented in iqt::CSettingsReadArchive, iqt::CSettingsWriteArchive, iser::CBinaryReadArchiveBase, iser::CBinaryWriteArchiveBase, iser::CCompactXmlWriteArchiveBase, iser::CJsonWriteArchiveBase, iser::CTextReadArchiveBase, iser::CTextWriteArchiveBase, iser::CXmlReadArchiveBase, and iser::CXmlWriteArchiveBase.
|
pure virtual |
Process primitive type.
Implemented in iqt::CSettingsReadArchive, iqt::CSettingsWriteArchive, iser::CBinaryReadArchiveBase, iser::CBinaryWriteArchiveBase, iser::CCompactXmlWriteArchiveBase, iser::CJsonWriteArchiveBase, iser::CTextReadArchiveBase, iser::CTextWriteArchiveBase, iser::CXmlReadArchiveBase, and iser::CXmlWriteArchiveBase.
|
pure virtual |
Process primitive type.
Implemented in iqt::CSettingsReadArchive, iqt::CSettingsWriteArchive, iser::CBinaryReadArchiveBase, iser::CBinaryWriteArchiveBase, iser::CCompactXmlWriteArchiveBase, iser::CJsonWriteArchiveBase, iser::CTextReadArchiveBase, iser::CTextWriteArchiveBase, iser::CXmlReadArchiveBase, and iser::CXmlWriteArchiveBase.
|
pure virtual |
Process primitive type.
Implemented in iqt::CSettingsReadArchive, iqt::CSettingsWriteArchive, iser::CBinaryReadArchiveBase, iser::CBinaryWriteArchiveBase, iser::CCompactXmlWriteArchiveBase, iser::CJsonWriteArchiveBase, iser::CJsonWriteArchiveBase, iser::CTextReadArchiveBase, iser::CTextWriteArchiveBase, iser::CXmlReadArchiveBase, iser::CXmlReadArchiveBase, iser::CXmlWriteArchiveBase, and iser::CXmlWriteArchiveBase.
|
pure virtual |
Process primitive type.
Implemented in iqt::CSettingsReadArchive, iqt::CSettingsWriteArchive, iser::CBinaryReadArchiveBase, iser::CBinaryWriteArchiveBase, iser::CCompactXmlWriteArchiveBase, iser::CJsonWriteArchiveBase, iser::CTextReadArchiveBase, iser::CTextWriteArchiveBase, iser::CXmlReadArchiveBase, and iser::CXmlWriteArchiveBase.
|
pure virtual |
Process primitive type.
Implemented in iqt::CSettingsReadArchive, iqt::CSettingsWriteArchive, iser::CBinaryReadArchiveBase, iser::CBinaryWriteArchiveBase, iser::CCompactXmlWriteArchiveBase, iser::CJsonWriteArchiveBase, iser::CTextReadArchiveBase, iser::CTextWriteArchiveBase, iser::CXmlReadArchiveBase, and iser::CXmlWriteArchiveBase.
|
pure virtual |
Process primitive type.
Implemented in iqt::CSettingsReadArchive, iqt::CSettingsWriteArchive, iser::CBinaryReadArchiveBase, iser::CBinaryWriteArchiveBase, iser::CCompactXmlWriteArchiveBase, iser::CJsonWriteArchiveBase, iser::CTextReadArchiveBase, iser::CTextWriteArchiveBase, iser::CXmlReadArchiveBase, and iser::CXmlWriteArchiveBase.
|
pure virtual |
Process primitive type.
Implemented in iqt::CSettingsReadArchive, iqt::CSettingsWriteArchive, iser::CBinaryReadArchiveBase, iser::CBinaryWriteArchiveBase, iser::CCompactXmlWriteArchiveBase, iser::CJsonWriteArchiveBase, iser::CTextReadArchiveBase, iser::CTextWriteArchiveBase, iser::CXmlReadArchiveBase, and iser::CXmlWriteArchiveBase.
|
pure virtual |
Process primitive type.
Implemented in iqt::CSettingsReadArchive, iqt::CSettingsWriteArchive, iser::CBinaryReadArchiveBase, iser::CBinaryWriteArchiveBase, iser::CCompactXmlReadArchiveBase, iser::CCompactXmlWriteArchiveBase, iser::CJsonReadArchiveBase, iser::CJsonWriteArchiveBase, iser::CXmlReadArchiveBase, and iser::CXmlWriteArchiveBase.
|
pure virtual |
Process primitive type.
Implemented in iqt::CSettingsReadArchive, iqt::CSettingsWriteArchive, iser::CBinaryReadArchiveBase, iser::CBinaryWriteArchiveBase, iser::CCompactXmlWriteArchiveBase, iser::CJsonWriteArchiveBase, iser::CTextReadArchiveBase, iser::CTextWriteArchiveBase, iser::CXmlReadArchiveBase, and iser::CXmlWriteArchiveBase.
|
pure virtual |
Process primitive type.
Implemented in iqt::CSettingsReadArchive, iqt::CSettingsWriteArchive, iser::CBinaryReadArchiveBase, iser::CBinaryWriteArchiveBase, iser::CCompactXmlWriteArchiveBase, iser::CJsonWriteArchiveBase, iser::CTextReadArchiveBase, iser::CTextWriteArchiveBase, iser::CXmlReadArchiveBase, and iser::CXmlWriteArchiveBase.
|
pure virtual |
Process primitive type.
Implemented in iqt::CSettingsReadArchive, iqt::CSettingsWriteArchive, iser::CBinaryReadArchiveBase, iser::CBinaryWriteArchiveBase, iser::CCompactXmlWriteArchiveBase, iser::CJsonWriteArchiveBase, iser::CTextReadArchiveBase, iser::CTextWriteArchiveBase, iser::CXmlReadArchiveBase, and iser::CXmlWriteArchiveBase.
|
pure virtual |
Process primitive type.
Implemented in iqt::CSettingsReadArchive, iqt::CSettingsWriteArchive, iser::CBinaryReadArchiveBase, iser::CBinaryWriteArchiveBase, iser::CCompactXmlWriteArchiveBase, iser::CJsonWriteArchiveBase, iser::CTextReadArchiveBase, iser::CTextWriteArchiveBase, iser::CXmlReadArchiveBase, and iser::CXmlWriteArchiveBase.
|
pure virtual |
Process binary data block.
| dataPtr | pointer to memory block. |
| bitsCount | number of bits. |
| bytesCount | size of memory block in bytes. |
Implemented in iser::CBitMemoryWriteArchive, iser::CBitMemoryReadArchive, iser::CReadArchiveBase, and iser::CWriteArchiveBase.
|
pure virtual |
Process binary data block.
| dataPtr | pointer to memory block. |
| size | size of memory block in bytes. |
Implemented in ifile::CFileReadArchive, ifile::CFileReadSecureArchive, ifile::CFileWriteArchive, ifile::CFileWriteSecureArchive, iser::CBitMemoryReadArchive, iser::CBitMemoryWriteArchive, iser::CMemoryReadArchive, iser::CMemoryWriteArchive, iqt::CNetworkWriteArchive, iser::CJsonWriteArchiveBase, iser::CTextReadArchiveBase, and iser::CTextWriteArchiveBase.
Referenced by ibase::TMsbWord< Size >::Serialize().
|
inline |
Definition at line 437 of file IArchive.h.
References BeginTag(), EndTag(), and Process().