ACF $AcfVersion:0$
Public Member Functions | Protected Member Functions | List of all members
iser::CReadArchiveBase Class Reference

Basic implementation of an abstract archive for data reading. More...

#include <CReadArchiveBase.h>

Inheritance diagram for iser::CReadArchiveBase:
iser::CArchiveBase iser::IArchive istd::ILogger istd::IPolymorphic istd::IPolymorphic iser::CBinaryReadArchiveBase iser::CTextReadArchiveBase ifile::CFileReadArchive iser::CMemoryReadArchive iqt::CSettingsReadArchive iser::CCompactXmlReadArchiveBase iser::CJsonReadArchiveBase iser::CXmlReadArchiveBase ifile::CFileReadSecureArchive iser::CBitMemoryReadArchive ifile::CCompactXmlFileReadArchive ifile::CCompressedXmlFileReadArchive iser::CCompactXmlMemReadArchive ifile::CJsonFileReadArchive iser::CJsonMemReadArchive iser::CXmlStreamReadArchiveBase

Public Member Functions

virtual bool IsStoring () const override
 Checks if this archive is in storing (writing) or loading (reading) mode.
 
virtual const IVersionInfoGetVersionInfo () const override
 Gets version information for the archived stream.
 
virtual bool ProcessBits (void *dataPtr, int bitsCount, int bytesCount) override
 Process binary data block.
 
- Public Member Functions inherited from iser::CArchiveBase
virtual bool IsTagSkippingSupported () const override
 Checks if skipping to the end of a tag on EndTag() is supported.
 
virtual bool BeginMultiTag (const CArchiveTag &tag, const CArchiveTag &subTag, int &count) override
 Begins a tagged section containing multiple elements of the same type.
 
- Public Member Functions inherited from iser::IArchive
virtual bool BeginTag (const CArchiveTag &tag)=0
 Begins a tagged section in the archive.
 
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.
 
- Public Member Functions inherited from istd::IPolymorphic
virtual ~IPolymorphic ()
 

Protected Member Functions

bool SerializeAcfHeader ()
 Serialize standard header.
 
- Protected Member Functions inherited from iser::CArchiveBase
 CArchiveBase ()
 
- Protected Member Functions inherited from istd::ILogger
virtual void DecorateMessage (IInformationProvider::InformationCategory category, int id, int flags, QString &message, QString &messageSource) const
 Decorate message parts before outputting.
 
virtual bool IsLogConsumed (const IInformationProvider::InformationCategory *categoryPtr=NULL, const int *flagsPtr=NULL) const
 Check if any log message is consumed.
 
virtual bool SendLogMessage (IInformationProvider::InformationCategory category, int id, const QString &message, const QString &messageSource, int flags=0) const
 Send any message to log.
 

Additional Inherited Members

- Public Types inherited from iser::IArchive
enum  MessageId { MI_TAG_ERROR = 0x3f320a0 , MI_TAG_SKIPPED }
 
- Static Public Member Functions inherited from iser::CArchiveBase
static const CArchiveTagGetAcfRootTag ()
 
- Static Protected Attributes inherited from iser::CArchiveBase
static CArchiveTag s_acfRootTag
 

Detailed Description

Basic implementation of an abstract archive for data reading.

Definition at line 17 of file CReadArchiveBase.h.

Member Function Documentation

◆ GetVersionInfo()

virtual const IVersionInfo & iser::CReadArchiveBase::GetVersionInfo ( ) const
overridevirtual

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.

Returns
Reference to version information object
const IVersionInfo& version = archive.GetVersionInfo();
if (version.GetVersion() >= CMyClass::VERSION_WITH_NEW_FIELD) {
// New field exists, read it
archive.Process(m_newField);
}
Provides access to version information.
See also
iser::IVersionInfo, iser::CMinimalVersionInfo

Implements iser::IArchive.

◆ IsStoring()

virtual bool iser::CReadArchiveBase::IsStoring ( ) const
overridevirtual

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.

Returns
true if the archive is writing/storing data, false if reading/loading data
virtual bool Serialize(iser::IArchive& archive)
{
if (archive.IsStoring()) {
// Prepare data for writing
int count = m_items.size();
archive.Process(count);
for (const Item& item : m_items) {
// Write items
}
} else {
// Read data
int count;
archive.Process(count);
m_items.clear();
for (int i = 0; i < count; ++i) {
// Read items
}
}
}
Represents an input/output persistence archive for object serialization.
Definition IArchive.h:164
virtual bool Process(bool &value)=0
Processes (reads or writes) a boolean value.
virtual bool IsStoring() const =0
Checks if this archive is in storing (writing) or loading (reading) mode.
See also
Process()

Implements iser::IArchive.

◆ ProcessBits()

virtual bool iser::CReadArchiveBase::ProcessBits ( void *  dataPtr,
int  bitsCount,
int  bytesCount 
)
overridevirtual

Process binary data block.

Parameters
dataPtrpointer to memory block.
bitsCountnumber of bits.
bytesCountsize of memory block in bytes.

Implements iser::IArchive.

Reimplemented in iser::CBitMemoryReadArchive.

◆ SerializeAcfHeader()

bool iser::CReadArchiveBase::SerializeAcfHeader ( )
protected

Serialize standard header.

During serialization of header list of known versions will be loaded.


The documentation for this class was generated from the following file: