ICF 3.0.5.47
Technical documentation of ICF Libraries
istd::IChangeable Class Reference

Common interface for data model objects, which can be changed. More...

#include <IChangeable.h>

Inherits istd::IPolymorphic.

Inherited by ibase::TContainer< ItemClass, typename TContainer< ItemClass >::Container > [virtual], i2d::CSplineSegment [virtual], i2d::ICalibration2dProvider [virtual], i2d::IMultiCalibrationProvider [virtual], iattr::IAttributeMetaInfo [virtual], iattr::IAttributesMetaInfoProvider [virtual], iattr::IAttributesProvider [virtual], iauth::ILogin [virtual], iauth::IRightsProvider [virtual], ibase::ICommandsProvider [virtual], ibase::IRuntimeStatusProvider [virtual], ibase::ITranslationManager [virtual], ibase::TContainer< ItemClass, ContainerType > [virtual], icam::CCameraDelegatorComp [protected, virtual], icam::ICameraListProvider [virtual], icam::IExposureConstraints [virtual], icmpstr::IComponentNoteController [virtual], icmpstr::IElementSelectionInfo [virtual], icmpstr::IRegistryPreview [virtual], icomp::IComponentListProvider [virtual], icomp::IPackagesManager [virtual], idoc::IDocumentManager [virtual], idoc::IDocumentMetaInfo [virtual], idoc::IDocumentStateComparator [virtual], idoc::IMultiPageDocument [virtual], idoc::IMultiPageDocumentProvider [virtual], ifile::IFileListProvider [virtual], ifile::IFileSystemInfoProvider [virtual], iimg::IBitmapProvider [virtual], iimg::IMultiBitmapProvider [virtual], iinsp::CInspectionTaskComp::Status [virtual], iinsp::CSupplierCompBase::Status [virtual], iinsp::IIdProvider [virtual], iinsp::IModelTeachController [virtual], iinsp::ISupplier [virtual], iinsp::ITimeStampProvider [virtual], iipr::CDelegatedBitmapSupplierComp [virtual], iipr::IFeaturesConsumer [virtual], iipr::IFeaturesProvider [virtual], iipr::IPatternController [virtual], iipr::ISearchConstraints [virtual], imath::IUnitInfo [virtual], imath::TISampledFunction< ArgumentDimensions, ResultDimensions > [virtual], imeas::IDataSequenceProvider [virtual], imeas::IDataStatistics [virtual], imeas::ILinearAdjustConstraints [virtual], imeas::IMultiDataSequenceProvider [virtual], imeas::INumericConstraints [virtual], iprm::IOptionsList [virtual], iproc::CDelegatedProgressManager [virtual], iproc::IElapsedTimeProvider [virtual], iser::ISerializable [virtual], iser::IVersionInfo [virtual], isig::IPulseConstraints [virtual], istd::IChangeDelegator [virtual], istd::IInformationProvider [virtual], istd::ITimeStamp [virtual], istdgui::IMultiVisualStatusProvider [virtual], istdgui::IVisualStatus [virtual], istdgui::IVisualStatusProvider [virtual], iview::IRuler [virtual], iview::IShapeStatusInfo [virtual], iview::ITextLabelParams [virtual], iview::IToolsLayerInfo [virtual], and iview::IVisualCalibrationInfo [virtual].

Collaboration diagram for istd::IChangeable:

Classes

class  ChangeSet
 Set of change flags (its IDs). More...
 

Public Types

enum  ChangeFlags {
  CF_ICF_INTERNAL = 0 , CF_ALL_DATA , CF_ANY , CF_DESTROYING ,
  CF_DELEGATED , CF_NO_UNDO
}
 Data model change notification flags. More...
 
enum  SupportedOperations {
  SO_NONE = 0 , SO_OBSERVE = 1 << 0 , SO_COPY = 1 << 1 , SO_CLONE = 1 << 2 ,
  SO_COMPARE = 1 << 3 , SO_RESET = 1 << 4 , SO_CHANGE_LOCK = 1 << 5
}
 Flags for supported operations. More...
 
enum  CompatibilityMode { CM_STRICT , CM_WITHOUT_REFS , CM_WITH_REFS , CM_CONVERT }
 Control how relationship betweeen objects are interpreted. More...
 

Public Member Functions

virtual int GetSupportedOperations () const
 Get set of flags for supported operations.
 
virtual bool CopyFrom (const IChangeable &object, CompatibilityMode mode=CM_WITHOUT_REFS)
 Copy this object from another one.
 
virtual bool IsEqual (const IChangeable &object) const
 Compare this object with another object.
 
virtual std::unique_ptr< IChangeableCloneMe (CompatibilityMode mode=CM_WITHOUT_REFS) const
 Make a copy of this object.
 
virtual bool ResetData (CompatibilityMode mode=CM_WITHOUT_REFS)
 Reset data to its default state.
 
virtual QMutex * GetChangesLock () const
 Get mutex beeing locked during changes, if available.
 
virtual void BeginChanges (const ChangeSet &changeSet)
 Starts the change transaction.
 
virtual void EndChanges (const ChangeSet &changeSet)
 Ends the change transaction.
 
virtual void BeginChangeGroup (const ChangeSet &changeSet)
 Starts group of changes.
 
virtual void EndChangeGroup (const ChangeSet &changeSet)
 Ends group of changes.
 

Static Public Member Functions

static const ChangeSetGetNoChanges ()
 Get empty set of changes.
 
static const ChangeSetGetAnyChange ()
 Get anonymous change set.
 
static const ChangeSetGetAllChanges ()
 Get anonymous change set.
 
static const ChangeSetGetDelegatedChanges ()
 Get delegated change set.
 

Protected Member Functions

virtual void OnBeginChanges ()
 Callback function for begin change event.
 
virtual void OnEndChanges (const ChangeSet &changeSet)
 Callback function for end change event.
 

Detailed Description

Common interface for data model objects, which can be changed.

Data model changes are executed in two steps: begin and end. The caller can also put some flags and additional data to the update functions, to control the update logic.

Definition at line 31 of file IChangeable.h.

Member Enumeration Documentation

◆ ChangeFlags

Data model change notification flags.

Enumerator
CF_ICF_INTERNAL 

Internal ICF flag.

Indicate that internal update is done.

CF_ALL_DATA 

All object data are changed.

CF_ANY 

Indicate anonymous change.

CF_DESTROYING 

Change flag indicate that model is during destruction.

CF_DELEGATED 

Change flag indicate that this change was delegated (is indirect) for example from aggregated object.

CF_NO_UNDO 

Used to avoid adding of changes to undo list.

Definition at line 120 of file IChangeable.h.

◆ CompatibilityMode

Control how relationship betweeen objects are interpreted.

It is also used to define how objects are copied.

Enumerator
CM_STRICT 

If external references are different this object are not compatible and cannot be compared or copied.

Copy without references to external objects only if objects are compatible.

CM_WITHOUT_REFS 

External references are simple ignored.

Copy without references to external objects.

CM_WITH_REFS 

External references are part of object integrity.

For comparation external references must be equal, for copy operations they will be copied.

CM_CONVERT 

Data of object are interpreted in context of external references.

For comparation the meaning of object (e.g. after transformation using externals) will be compared. Copying will converting the data to be compatible according to existing references to external objects.

Definition at line 200 of file IChangeable.h.

◆ SupportedOperations

Flags for supported operations.

This flags can be combined.

Enumerator
SO_NONE 

No operations are supported.

SO_OBSERVE 

Observing of this object via observer-observable pattern.

SO_COPY 

Copying from other object.

SO_CLONE 

Creating of copy of this object.

SO_COMPARE 

Comparison with another object.

SO_RESET 

Resetting of object state.

SO_CHANGE_LOCK 

Locking of object during changes with mutex.

Definition at line 158 of file IChangeable.h.

Member Function Documentation

◆ BeginChangeGroup()

◆ BeginChanges()

◆ CloneMe()

std::unique_ptr< IChangeable > istd::IChangeable::CloneMe ( CompatibilityMode mode = CM_WITHOUT_REFS) const
inlinevirtual

Make a copy of this object.

You may check, if this functionality is supported over GetSupportedOperations().

Returns
new instance or nullptr, if this operation is not supported.

Reimplemented in i2d::CAffineTransformation2d, i2d::CAnnulus, i2d::CAnnulusSegment, i2d::CArc, i2d::CCircle, i2d::CLabel, i2d::CLine2d, i2d::COrientedCircle, i2d::COrientRectangle, i2d::CParallelogram, i2d::CPolygon, i2d::CPolyline, i2d::CPolypoint, i2d::CPosition2d, i2d::CQuadrangle, i2d::CRectangle, i2d::CSpline, i2d::CSplineSegment, icalib::CAffineCalibration2d, icalib::CCalibration2dProxyComp, icalib::CPerspectiveCalibration2d, icalib::CPointGrid, icalib::CSimpleLensCorrection, idoc::CStandardDocumentMetaInfo, ifileproc::CFileNamingParams, iimg::CBitmap, iimg::CBitmapSlice, iimg::CGeneralBitmap, iimg::TMultiPageBitmap< BitmapImpl >, iimg::TMultiPageBitmap< iimg::CBitmap >, iipr::CBlobFeature, iipr::CObjectFeature, iipr::CPointGridFeature, iipr::CSearchFeature, iipr::TWeightedFeatureWrap< BaseObject >, iipr::TWeightedFeatureWrap< i2d::CLine2d >, iipr::TWeightedFeatureWrap< i2d::CPosition2d >, iipr::TWeightedFeatureWrap< icalib::CPointGrid >, ilog::CExtMessage, ilog::CMessage, ilog::CMessageContainer, ilog::TExtMessage< Element >, imeas::CGeneralDataSequence, imeas::CGeneralNumericValue, imeas::TMeasurementValue< ValueType >, imeas::TMeasurementValue< double >, imod::TModelWrap< i2d::CCircle >, imod::TModelWrap< i2d::CLine2d >, imod::TModelWrap< icmpstr::CPackagesLoaderExtComp::ParamsManager >, imod::TModelWrap< iimg::CBitmap >, imod::TModelWrap< iiprgui::CMultiLineSupplierGuiComp::LineSelection >, imod::TModelWrap< ilog::CMessageContainer >, imod::TModelWrap< imeas::CGeneralDataSequence >, imod::TModelWrap< imeas::CSimpleSamplesSequence32 >, imod::TModelWrap< iprm::CEnableableParam >, imod::TModelWrap< iprm::COptionsManager >, imod::TModelWrap< iprm::CParamsManagerCompBase::SelectedParams >, imod::TModelWrap< istdgui::CGuiComponentBase::VisualStatus >, iprm::CEnableableParam, iprm::CIdParam, iprm::CNameParam, iprm::CSelectionParam, iprm::CTextParam, and istdgui::CHierarchicalCommand.

Definition at line 363 of file IChangeable.h.

Referenced by iinspgui::TSupplierGuiCompBase< UI >::AddItemsToScene(), and iinspgui::TSupplierGuiCompBase< UI >::BeforeSupplierGuiUpdated().

◆ CopyFrom()

bool istd::IChangeable::CopyFrom ( const IChangeable & object,
CompatibilityMode mode = CM_WITHOUT_REFS )
inlinevirtual

Copy this object from another one.

Default implementation in istd::IChangeable does nothing. You may check, if this functionality is supported over GetSupportedOperations().

Reimplemented in i2d::CAffineTransformation2d, i2d::CObject2dBase, icalib::CAffineCalibration2d, icalib::CPerspectiveCalibration2d, icalib::CSimpleLensCorrection, idoc::TMultiPageDocumentWrap< Base >, idoc::TMultiPageDocumentWrap< idoc::IMultiPageDocument >, ifileproc::CFileNamingParams, iimg::CBitmap, iimg::CBitmapSlice, iimg::CGeneralBitmap, iimg::CMultiPageBitmapBase, iimg::CScanlineMask, iinsp::CInspectionTaskComp::Parameters, ilog::CExtMessage, ilog::CMessage, ilog::CMessageContainer, ilog::TExtMessage< Element >, imeas::CGeneralDataSequence, imeas::CGeneralNumericValue, imeas::TDiscreteDataSequence< Element >, imeas::TMeasurementValue< ValueType >, imeas::TMeasurementValue< double >, iprm::CComposedParamsSetComp, iprm::CParamsManagerComp, iprm::CParamsManagerCompBase::ParamSet, iprm::CSelectionParam, iser::CArchiveHeaderInfo, iser::TCopySerializedWrap< i2d::CCircle >, iser::TCopySerializedWrap< i2d::CLine2d >, iser::TCopySerializedWrap< icmpstr::CPackagesLoaderExtComp::ParamsManager >, iser::TCopySerializedWrap< iimg::CBitmap >, iser::TCopySerializedWrap< iiprgui::CMultiLineSupplierGuiComp::LineSelection >, iser::TCopySerializedWrap< ilog::CMessageContainer >, iser::TCopySerializedWrap< imeas::CGeneralDataSequence >, iser::TCopySerializedWrap< imeas::CSimpleSamplesSequence32 >, iser::TCopySerializedWrap< iprm::CEnableableParam >, iser::TCopySerializedWrap< iprm::COptionsManager >, iser::TCopySerializedWrap< iprm::CParamsManagerCompBase::SelectedParams >, iser::TCopySerializedWrap< iser::IObject >, iser::TCopySerializedWrap< istdgui::CGuiComponentBase::VisualStatus >, and istdgui::CHierarchicalCommand.

Definition at line 351 of file IChangeable.h.

Referenced by idoc::TMultiPageDocumentWrap< Base >::CopyFrom().

◆ EndChangeGroup()

◆ EndChanges()

◆ GetAllChanges()

const IChangeable::ChangeSet & istd::IChangeable::GetAllChanges ( )
inlinestatic

Get anonymous change set.

Definition at line 419 of file IChangeable.h.

Referenced by ibase::TFactorisableContainer< InterfaceClass >::Serialize().

◆ GetAnyChange()

const IChangeable::ChangeSet & istd::IChangeable::GetAnyChange ( )
inlinestatic

Get anonymous change set.

Definition at line 413 of file IChangeable.h.

◆ GetChangesLock()

◆ GetDelegatedChanges()

const IChangeable::ChangeSet & istd::IChangeable::GetDelegatedChanges ( )
inlinestatic

Get delegated change set.

Definition at line 425 of file IChangeable.h.

◆ GetNoChanges()

const IChangeable::ChangeSet & istd::IChangeable::GetNoChanges ( )
inlinestatic

Get empty set of changes.

Definition at line 407 of file IChangeable.h.

◆ GetSupportedOperations()

int istd::IChangeable::GetSupportedOperations ( ) const
inlinevirtual

Get set of flags for supported operations.

See also
SupportedOperations

Reimplemented in i2d::CAnnulus, i2d::CAnnulusSegment, i2d::CArc, i2d::CCircle, i2d::CLabel, i2d::CLine2d, i2d::COrientedCircle, i2d::CParallelogram, i2d::CPolypoint, i2d::CPosition2d, i2d::CQuadrangle, i2d::CRectangle, i2d::CSpline, i2d::CSplineSegment, icalib::CAffineCalibration2d, icalib::CPerspectiveCalibration2d, icalib::CSimpleLensCorrection, ifile::CFileNameParam, ifileproc::CFileNamingParams, iimg::CBitmap, iimg::CBitmapSlice, iimg::CGeneralBitmap, iimg::CScanlineMask, ilog::CMessageContainer, imeas::CGeneralDataSequence, imod::TModelWrap< i2d::CCircle >, imod::TModelWrap< i2d::CLine2d >, imod::TModelWrap< icmpstr::CPackagesLoaderExtComp::ParamsManager >, imod::TModelWrap< iimg::CBitmap >, imod::TModelWrap< iiprgui::CMultiLineSupplierGuiComp::LineSelection >, imod::TModelWrap< ilog::CMessageContainer >, imod::TModelWrap< imeas::CGeneralDataSequence >, imod::TModelWrap< imeas::CSimpleSamplesSequence32 >, imod::TModelWrap< iprm::CEnableableParam >, imod::TModelWrap< iprm::COptionsManager >, imod::TModelWrap< iprm::CParamsManagerCompBase::SelectedParams >, imod::TModelWrap< istdgui::CGuiComponentBase::VisualStatus >, iprm::CComposedParamsSetComp, iprm::CIdParam, iprm::COptionsManager, iprm::CParamsManagerComp, iprm::CTextParam, iser::TCopySerializedWrap< i2d::CCircle >, iser::TCopySerializedWrap< i2d::CLine2d >, iser::TCopySerializedWrap< icmpstr::CPackagesLoaderExtComp::ParamsManager >, iser::TCopySerializedWrap< iimg::CBitmap >, iser::TCopySerializedWrap< iiprgui::CMultiLineSupplierGuiComp::LineSelection >, iser::TCopySerializedWrap< ilog::CMessageContainer >, iser::TCopySerializedWrap< imeas::CGeneralDataSequence >, iser::TCopySerializedWrap< imeas::CSimpleSamplesSequence32 >, iser::TCopySerializedWrap< iprm::CEnableableParam >, iser::TCopySerializedWrap< iprm::COptionsManager >, iser::TCopySerializedWrap< iprm::CParamsManagerCompBase::SelectedParams >, iser::TCopySerializedWrap< iser::IObject >, iser::TCopySerializedWrap< istdgui::CGuiComponentBase::VisualStatus >, and istdgui::CHierarchicalCommand.

Definition at line 345 of file IChangeable.h.

References SO_NONE.

◆ IsEqual()

◆ OnBeginChanges()

void istd::IChangeable::OnBeginChanges ( )
inlineprotectedvirtual

Callback function for begin change event.

Please note, that in some cases no following OnEndChanges can be called.

Reimplemented in istd::CChangeDelegator, istd::TChangeDelegator< Base >, istd::TChangeDelegator< ibase::IHierarchicalCommand >, and istd::TChangeDelegator< IHierarchicalMessageContainer >.

Definition at line 433 of file IChangeable.h.

Referenced by BeginChanges().

◆ OnEndChanges()

◆ ResetData()


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

© Witold Gantzke and Kirill Lepskiy