ACF $AcfVersion:0$
TDeviceWriteTextArchiveWrap.h
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ACF-Commercial
2#pragma once
3
4
5// Qt includes
6#include <QtCore/QIODevice>
7
8// ACF includes
9#include <iser/IVersionInfo.h>
10#include <iser/CArchiveBase.h>
11#include <iser/CArchiveTag.h>
12
13
14namespace ifile
15{
16
17
21template <class Base, class Device = QIODevice>
23{
24public:
25 typedef Base BaseClass;
26
28 QIODevice& device,
29 const iser::IVersionInfo* versionInfoPtr = NULL,
30 bool serializeHeader = true,
33
34 bool Flush();
35
36protected:
37 QIODevice& GetDevice() const;
38
39 // pseudo-reimplemented (iser::CTextWriteArchiveBase)
40 virtual bool WriteTextNode(const QByteArray& text) override;
41
42private:
43 Device& m_device;
44};
45
46
47// public methods
48
49template <class Base, class Device>
51 QIODevice& device,
52 const iser::IVersionInfo* versionInfoPtr,
53 bool serializeHeader,
54 const iser::CArchiveTag& rootTag)
55 :BaseClass(versionInfoPtr, serializeHeader, rootTag),
56 m_device(device)
57{
58 if (!m_device.isOpen()){
59 if (m_device.open(QIODevice::WriteOnly | QIODevice::Text)){
60 BaseClass::InitArchive(&m_device);
61 }
62 else{
63 Q_ASSERT(false);
64 }
65 }
66 else{
67 Q_ASSERT(m_device.isWritable());
68 Q_ASSERT(m_device.isTextModeEnabled());
69
70 BaseClass::InitArchive(&m_device);
71 }
72}
73
74
75template <class Base, class Device>
80
81
82template <class Base, class Device>
84{
85 BaseClass::Flush();
86
87 if (m_device.isOpen()){
88 m_device.close();
89
90 return true;
91 }
92
93 return false;
94}
95
96
97// protected methods
98
99template <class Base, class Device>
101{
102 return m_device;
103}
104
105
106// pseudo-reimplemented (iser::CTextWriteArchiveBase)
107
108template <class Base, class Device>
110{
111 if (!m_device.isOpen()){
112 return false;
113 }
114
115 return BaseClass::WriteTextNode(text);
116}
117
118
119} // namespace ifile
120
121
Template wrapper for the text-based writing archives using an i/o-device given from outside.
virtual bool WriteTextNode(const QByteArray &text) override
TDeviceWriteTextArchiveWrap(QIODevice &device, const iser::IVersionInfo *versionInfoPtr=NULL, bool serializeHeader=true, const iser::CArchiveTag &rootTag=iser::CArchiveBase::s_acfRootTag)
static CArchiveTag s_acfRootTag
Process tag used to group data in archive stream.
Definition CArchiveTag.h:22
Provides access to version information.
#define NULL
Definition istd.h:74
Contains interfaces and implementations of file system related components.