ACF $AcfVersion:0$
CParamsSet.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/QMap>
7
8// ACF includes
10#include <istd/TPointerVector.h>
12#include <iprm/IParamsSet.h>
13
14
15namespace iprm
16{
17
18
22class CParamsSet: virtual public IParamsSet
23{
24public:
26 {
28 {
29 this->parameterPtr.SetUnmanagedPtr(parameterPtr);
30 this->parameterId = parameterId;
31 }
32
34 {
35 this->parameterPtr.TakeOver(parameterPtr);
36 this->parameterId = parameterId;
37 }
38
39 QByteArray parameterId;
41 };
43
44 explicit CParamsSet(const IParamsSet* slaveSetPtr = NULL);
45
51 const IParamsSet* GetSlaveSet() const;
57 void SetSlaveSet(const IParamsSet* slaveSetPtr);
58
63 virtual bool SetEditableParameter(const QByteArray& id, iser::ISerializable* parameterPtr, bool releaseFlag = false);
64
69 virtual bool SetEditableParameter(const QByteArray& id, iser::ISerializableUniquePtr& parameterPtr);
70
75
79 const QByteArray& GetParametersTypeId() const;
83 void SetParametersTypeId(const QByteArray& id);
84
85 // reimplemented (iser::IObject)
86 virtual QByteArray GetFactoryId() const override;
87
88 // reimplemented (iprm::IParamsSet)
89 virtual Ids GetParamIds(bool editableOnly = false) const override;
90 virtual const iser::ISerializable* GetParameter(const QByteArray& id) const override;
91 virtual iser::ISerializable* GetEditableParameter(const QByteArray& id) override;
92 virtual const IParamsInfoProvider* GetParamsInfoProvider() const override;
93
94 // reimplemented (iser::ISerializable)
95 virtual bool Serialize(iser::IArchive& archive) override;
96 virtual quint32 GetMinimalVersion(int versionId) const override;
97
98 // reimplemented (istd::IChangeable)
99 virtual bool CopyFrom(const IChangeable& object, CompatibilityMode mode = CM_WITHOUT_REFS) override;
100 virtual bool ResetData(CompatibilityMode mode = CM_WITHOUT_REFS) override;
101
102protected:
103 ParameterInfo* FindParameterInfo(const QByteArray& parameterId) const;
104
106
107 QByteArray m_paramsTypeId;
108
110
112};
113
114
115// inline methods
116
118{
119 return m_slaveSetPtr;
120}
121
122
123inline void CParamsSet::SetSlaveSet(const IParamsSet* slaveSetPtr)
124{
125 m_slaveSetPtr = slaveSetPtr;
126}
127
128
129} // namespace iprm
130
131
132
133
Reflects the changes of observed objects as changes of some other object (over istd::IChangeable),...
Basic implementation of interface IParamsSet.
Definition CParamsSet.h:23
virtual bool CopyFrom(const IChangeable &object, CompatibilityMode mode=CM_WITHOUT_REFS) override
const QByteArray & GetParametersTypeId() const
Get ID of this parameters type.
virtual quint32 GetMinimalVersion(int versionId) const override
Get minimal needed version to correct storing of this data.
const ParameterInfos & GetParameterInfos() const
Get access to all parameters.
virtual iser::ISerializable * GetEditableParameter(const QByteArray &id) override
Get access to editable parameter (read-write access).
ParameterInfo * FindParameterInfo(const QByteArray &parameterId) const
void SetParametersTypeId(const QByteArray &id)
Set ID of this parameters type.
virtual const iser::ISerializable * GetParameter(const QByteArray &id) const override
Get any parameter (read-only access).
const IParamsSet * m_slaveSetPtr
Definition CParamsSet.h:109
ParameterInfos m_params
Definition CParamsSet.h:105
virtual Ids GetParamIds(bool editableOnly=false) const override
Get list of used parameter IDs in the parameter set.
virtual bool SetEditableParameter(const QByteArray &id, iser::ISerializableUniquePtr &parameterPtr)
Set editable parameter in this set.
istd::TPointerVector< ParameterInfo > ParameterInfos
Definition CParamsSet.h:42
virtual bool Serialize(iser::IArchive &archive) override
Load or store state of this object as a archive stream.
imod::CModelUpdateBridge m_updateBridge
Definition CParamsSet.h:111
virtual bool ResetData(CompatibilityMode mode=CM_WITHOUT_REFS) override
Reset data to its default state.
const IParamsSet * GetSlaveSet() const
Get slave parameter set.
Definition CParamsSet.h:117
void SetSlaveSet(const IParamsSet *slaveSetPtr)
Set slave parameter set.
Definition CParamsSet.h:123
virtual bool SetEditableParameter(const QByteArray &id, iser::ISerializable *parameterPtr, bool releaseFlag=false)
Set editable parameter in this set.
virtual QByteArray GetFactoryId() const override
virtual const IParamsInfoProvider * GetParamsInfoProvider() const override
Get parameter information provider.
QByteArray m_paramsTypeId
Definition CParamsSet.h:107
CParamsSet(const IParamsSet *slaveSetPtr=NULL)
Provider of parameter information (name and description).
Set of general parameters.
Definition IParamsSet.h:81
QSet< QByteArray > Ids
Definition IParamsSet.h:83
Represents an input/output persistence archive for object serialization.
Definition IArchive.h:164
Common class for all classes which objects can be archived or restored from archive.
CompatibilityMode
Control how relationship betweeen objects are interpreted.
@ CM_WITHOUT_REFS
External references are simple ignored.
A wrapper for managed and unmanaged interface pointers.
Implementation of a pointer container, which controls the live cycle of the pointer object.
void TakeOver(TUniqueInterfacePtr< InterfaceType > &from) noexcept
Transfer ownership from another unique ptr (take over raw ownership).
#define NULL
Definition istd.h:74
Contains interfaces and implementations of flexible parameter concept.
ParameterInfo(const QByteArray &parameterId, iser::ISerializable *parameterPtr)
Definition CParamsSet.h:27
ParameterInfo(const QByteArray &parameterId, iser::ISerializableUniquePtr &parameterPtr)
Definition CParamsSet.h:33
istd::TOptInterfacePtr< iser::ISerializable > parameterPtr
Definition CParamsSet.h:40