6#ifndef imod_TModelWrap_included
7#define imod_TModelWrap_included
33 template<
typename... Args>
55 mutable QMutex m_changesLock;
64 Base::operator=(baseObject);
73 int baseOperations = Base::GetSupportedOperations();
75 if constexpr (std::is_constructible_v<Base>) {
87 if constexpr (std::is_constructible_v<Base>) {
90 if (clonePtr->CopyFrom(*
this, mode)){
102 return &m_changesLock;
109 BaseClass2::NotifyBeforeChange(changeSet,
false);
116 BaseClass2::NotifyAfterChange(changeSet);
123 BaseClass2::NotifyBeforeChange(changeSet,
true);
130 BaseClass2::NotifyAfterChange(changeSet);
141 this->OnBeginChanges();
143 m_changesLock.lock();
150 m_changesLock.unlock();
152 this->OnEndChanges(changeSet);
Basic implementation of a model.
This model wrapper provides a simple connection between a concrete istd::IChangeable implementation a...
void EndChangeGroup(const istd::IChangeable::ChangeSet &changeSet) override
void OnEndGlobalChanges(const istd::IChangeable::ChangeSet &changeSet) override
Called after global changes are finished.
TModelWrap(Args &&... args)
QMutex * GetChangesLock() const override
std::unique_ptr< istd::IChangeable > CloneMe(istd::IChangeable::CompatibilityMode mode=istd::IChangeable::CM_WITHOUT_REFS) const override
void EndChanges(const istd::IChangeable::ChangeSet &changeSet) override
iser::TCopySerializedWrap< Base > BaseClass
void SetBaseObject(const Base &baseObject)
void BeginChanges(const istd::IChangeable::ChangeSet &changeSet) override
void OnBeginGlobalChanges() override
Called before global changes will be started.
int GetSupportedOperations() const override
imod::CModelBase BaseClass2
void BeginChangeGroup(const istd::IChangeable::ChangeSet &changeSet) override
Set of change flags (its IDs).
CompatibilityMode
Control how relationship betweeen objects are interpreted.
@ CM_WITHOUT_REFS
External references are simple ignored.
@ SO_CLONE
Creating of copy of this object.
@ SO_OBSERVE
Observing of this object via observer-observable pattern.
This namespace containes basic implementation of Model/Observer design pattern This package is system...