ICF 3.0.5.47
Technical documentation of ICF Libraries
TVersionInfoBase.h
Go to the documentation of this file.
1/********************************************************************************
2** This file is part of the ICF Framework. Copyright (C) Witold Gantzke & Kirill Lepskiy
3** ICF Framework may be used under the terms of the LGPL License v. 2.1 by the Free Software Foundation.
4********************************************************************************/
5
6#pragma once
7
8
9// ICF includes
10#include <iser/IVersionInfo.h>
12#include <istd/IcfVersion.h>
13
14
15namespace ibase
16{
17
18
22template <class BaseComponent>
23class TVersionInfoBase: public BaseComponent, virtual public iser::IVersionInfo
24{
25public:
26 typedef BaseComponent BaseClass;
27
28 I_BEGIN_BASE_COMPONENT(TVersionInfoBase);
29 I_REGISTER_INTERFACE(iser::IVersionInfo);
30 I_ASSIGN(m_slaveVersionInfoCompPtr, "SlaveVersionInfo", "Slave version info, unknown version information requests will be delegated here", false, "SlaveVersionInfo");
31 I_END_COMPONENT;
32
33 // reimplemented (iser::IVersionInfo)
34 bool GetVersionNumber(int versionId, quint32& result) const override;
35 QString GetVersionIdDescription(int versionId) const override;
36 VersionIds GetVersionIds() const override;
37 QString GetEncodedVersionName(int versionId, quint32 versionNumber) const override;
38
39private:
40 I_REF(iser::IVersionInfo, m_slaveVersionInfoCompPtr);
41};
42
43
44// public methods
45
46// reimplemented (iser::IVersionInfo)
47
48template <class BaseComponent>
49bool TVersionInfoBase<BaseComponent>::GetVersionNumber(int versionId, quint32& result) const
50{
51 if (m_slaveVersionInfoCompPtr != nullptr) {
52 return m_slaveVersionInfoCompPtr->GetVersionNumber(versionId, result);
53 }
54 else if (versionId == iser::IVersionInfo::IcfVersionId) {
55 result = istd::RS_USE_VERSION;
56
57 return true;
58 }
59
60 result = 0xffffffff;
61
62 return false;
63}
64
65
66template <class BaseComponent>
68{
69 if (m_slaveVersionInfoCompPtr != nullptr) {
70 return m_slaveVersionInfoCompPtr->GetVersionIdDescription(versionId);
71 }
72
73 return "";
74}
75
76
77template <class BaseComponent>
79{
80 VersionIds retVal;
81 if (m_slaveVersionInfoCompPtr != nullptr) {
82 retVal = m_slaveVersionInfoCompPtr->GetVersionIds();
83 }
84
85 return retVal;
86}
87
88
89template <class BaseComponent>
90QString TVersionInfoBase<BaseComponent>::GetEncodedVersionName(int versionId, quint32 versionNumber) const
91{
92 QString retVal;
93
94 if (m_slaveVersionInfoCompPtr != nullptr) {
95 retVal = m_slaveVersionInfoCompPtr->GetEncodedVersionName(versionId, versionNumber);
96 }
97 else {
98 retVal = QString("<") + QString("%1").arg(versionNumber) + ">";
99 }
100
101 return retVal;
102}
103
104
105// Standard definitions
108
109
110} // namespace ibase
111
112
Generic implementation for a version component.
QString GetVersionIdDescription(int versionId) const override
Get description of version ID.
bool GetVersionNumber(int versionId, quint32 &result) const override
Get version of archived stream for specific versioning type.
VersionIds GetVersionIds() const override
Get list of version ID's.
QString GetEncodedVersionName(int versionId, quint32 versionNumber) const override
Encode version number to human readable form.
Provides access to version information.
QSet< int > VersionIds
This namespace contains standard classes based on Qt.
TVersionInfoBase< icomp::CComponentBase > CVersionInfoCompBase
TVersionInfoBase< ilog::CLoggerComponentBase > CVersionInfoLoggerCompBase
@ RS_USE_VERSION
Definition IcfVersion.h:14

© Witold Gantzke and Kirill Lepskiy