ACF $AcfVersion:0$
Classes | Public Types | Public Member Functions | Protected Member Functions | List of all members
ifile::CFileReadArchive Class Reference

Simple implementation of archive reading from own ACF format binary file. More...

#include <CFileReadArchive.h>

Inheritance diagram for ifile::CFileReadArchive:
iser::CBinaryReadArchiveBase ifile::CFileArchiveInfo iser::CReadArchiveBase ifile::IFileArchiveInfo iser::CArchiveBase istd::IPolymorphic iser::IArchive istd::ILogger istd::IPolymorphic istd::IPolymorphic ifile::CFileReadSecureArchive

Classes

struct  TagStackElement
 

Public Types

typedef iser::CBinaryReadArchiveBase BaseClass
 
typedef CFileArchiveInfo BaseClass2
 
- Public Types inherited from iser::CBinaryReadArchiveBase
enum  MessageId { MI_STRING_TOO_LONG = 0x3f320b0 }
 
typedef CReadArchiveBase BaseClass
 
- Public Types inherited from iser::IArchive
enum  MessageId { MI_TAG_ERROR = 0x3f320a0 , MI_TAG_SKIPPED }
 

Public Member Functions

 CFileReadArchive (const QString &filePath, bool supportTagSkipping=true, bool serializeHeader=true)
 Contructor.
 
virtual bool IsTagSkippingSupported () const override
 Checks if skipping to the end of a tag on EndTag() is supported.
 
virtual bool BeginTag (const iser::CArchiveTag &tag) override
 Begins a tagged section in the archive.
 
virtual bool EndTag (const iser::CArchiveTag &tag) override
 Ends a tagged section in the archive.
 
virtual bool ProcessData (void *data, int size) override
 Process binary data block.
 
- Public Member Functions inherited from iser::CBinaryReadArchiveBase
virtual bool Process (bool &value) override
 Processes (reads or writes) a boolean value.
 
virtual bool Process (char &value) override
 Process primitive type.
 
virtual bool Process (quint8 &value) override
 Process primitive type.
 
virtual bool Process (qint8 &value) override
 Process primitive type.
 
virtual bool Process (quint16 &value) override
 Process primitive type.
 
virtual bool Process (qint16 &value) override
 Process primitive type.
 
virtual bool Process (quint32 &value) override
 Process primitive type.
 
virtual bool Process (qint32 &value) override
 Process primitive type.
 
virtual bool Process (quint64 &value) override
 Process primitive type.
 
virtual bool Process (qint64 &value) override
 Process primitive type.
 
virtual bool Process (float &value) override
 Process primitive type.
 
virtual bool Process (double &value) override
 Process primitive type.
 
virtual bool Process (QByteArray &value) override
 Process primitive type.
 
virtual bool Process (QString &value) override
 Process primitive type.
 
- Public Member Functions inherited from iser::CReadArchiveBase
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 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
template<typename Primitive >
bool TagAndProcess (const CArchiveTag &tag, Primitive &value)
 
- Public Member Functions inherited from istd::IPolymorphic
virtual ~IPolymorphic ()
 
- Public Member Functions inherited from ifile::CFileArchiveInfo
 CFileArchiveInfo (const QString &filePath)
 
virtual const QString & GetCurrentFilePath () const override
 

Protected Member Functions

virtual void DecorateMessage (istd::IInformationProvider::InformationCategory category, int id, int flags, QString &message, QString &messageSource) const override
 Decorate message parts before outputting.
 
virtual int GetMaxStringLength () const override
 Get maximal allowed string size.
 
- Protected Member Functions inherited from iser::CReadArchiveBase
bool SerializeAcfHeader ()
 Serialize standard header.
 
- Protected Member Functions inherited from iser::CArchiveBase
 CArchiveBase ()
 
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

- Static Public Member Functions inherited from iser::CArchiveBase
static const CArchiveTagGetAcfRootTag ()
 
- Protected Attributes inherited from ifile::CFileArchiveInfo
QString m_filePath
 
- Static Protected Attributes inherited from iser::CArchiveBase
static CArchiveTag s_acfRootTag
 

Detailed Description

Simple implementation of archive reading from own ACF format binary file.

This imlementation is very fast and efficient and should be used if any standardized file format is needed.

Definition at line 24 of file CFileReadArchive.h.

Member Typedef Documentation

◆ BaseClass

Definition at line 29 of file CFileReadArchive.h.

◆ BaseClass2

Definition at line 30 of file CFileReadArchive.h.

Constructor & Destructor Documentation

◆ CFileReadArchive()

ifile::CFileReadArchive::CFileReadArchive ( const QString &  filePath,
bool  supportTagSkipping = true,
bool  serializeHeader = true 
)

Contructor.

Parameters
filePathname of file.
supportTagSkippingif it is true skipping of tags on EndTag is supported. Please note that supporting of tag skipping store additional data in file and it is not compatible with files created without tag skipping.
See also
EndTag and IsTagSkippingSupported.
Parameters
serializeHeaderif it is true (default) archive header will be serialized.

Member Function Documentation

◆ BeginTag()

virtual bool ifile::CFileReadArchive::BeginTag ( const iser::CArchiveTag tag)
overridevirtual

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.

Parameters
tagThe tag object describing this section. Use static CArchiveTag instances to avoid repeated construction overhead.
Returns
true if the tag was successfully opened, false on error
Note
Always match BeginTag() with EndTag()
Check the return value and propagate errors
For collections, use BeginMultiTag() instead
static iser::CArchiveTag personTag("Person", "Person data");
if (archive.BeginTag(personTag)) {
archive.Process(name);
archive.Process(age);
archive.EndTag(personTag);
}
Process tag used to group data in archive stream.
Definition CArchiveTag.h:22
See also
EndTag(), BeginMultiTag(), CArchiveTag

Reimplemented from iser::CBinaryReadArchiveBase.

◆ DecorateMessage()

virtual void ifile::CFileReadArchive::DecorateMessage ( istd::IInformationProvider::InformationCategory  category,
int  id,
int  flags,
QString &  message,
QString &  messageSource 
) const
overrideprotectedvirtual

Decorate message parts before outputting.

Reimplemented from istd::ILogger.

◆ EndTag()

virtual bool ifile::CFileReadArchive::EndTag ( const iser::CArchiveTag tag)
overridevirtual

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.

Parameters
tagThe same tag object passed to BeginTag() or BeginMultiTag()
Returns
true if successful, false on error
Note
Always call EndTag() even if errors occurred within the tag
The tag parameter must match the one used in BeginTag()
If IsTagSkippingSupported() returns false, you must read all data before calling EndTag()
static iser::CArchiveTag dataTag("Data", "My data");
if (archive.BeginTag(dataTag)) {
bool success = archive.Process(myData);
archive.EndTag(dataTag); // Always call, even if Process failed
if (!success) return false;
}
See also
BeginTag(), BeginMultiTag(), IsTagSkippingSupported()

Reimplemented from iser::CBinaryReadArchiveBase.

◆ GetMaxStringLength()

virtual int ifile::CFileReadArchive::GetMaxStringLength ( ) const
overrideprotectedvirtual

Get maximal allowed string size.

Reimplemented from iser::CBinaryReadArchiveBase.

◆ IsTagSkippingSupported()

virtual bool ifile::CFileReadArchive::IsTagSkippingSupported ( ) const
overridevirtual

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.

Returns
true if the archive supports tag skipping, false otherwise
Note
Binary archives typically don't support skipping, requiring all data to be read sequentially.
XML and JSON archives usually support skipping.
if (archive.IsTagSkippingSupported()) {
// Can safely skip new fields added in future versions
} else {
// Must read all data in exact order
}
See also
EndTag()

Reimplemented from iser::CArchiveBase.

◆ ProcessData()

virtual bool ifile::CFileReadArchive::ProcessData ( void *  dataPtr,
int  size 
)
overridevirtual

Process binary data block.

Parameters
dataPtrpointer to memory block.
sizesize of memory block in bytes.

Implements iser::IArchive.

Reimplemented in ifile::CFileReadSecureArchive.


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