+// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
+
// File: ModelAPI_Data.hxx
// Created: 21 Mar 2014
// Author: Mikhail PONIKAROV
class ModelAPI_Feature;
class ModelAPI_AttributeSelection;
class ModelAPI_AttributeSelectionList;
+class ModelAPI_Object;
class GeomAPI_Shape;
+/// Enumeration that contains the execution status of the Object
+enum ModelAPI_ExecState {
+ ModelAPI_StateDone, ///< execution was performed and result is up to date
+ ModelAPI_StateMustBeUpdated, ///< execution must be performed to obtain the up to date result
+ ModelAPI_StateExecFailed, ///< execution was failed (results are deleted in this case)
+ ModelAPI_StateInvalidArgument, ///< execution was not performed (results are deleted in this case)
+ ModelAPI_StateNothing ///< internal state that actually means that nothing must be changed
+};
+
/**\class ModelAPI_Data
* \ingroup DataModel
* \brief General object of the application that allows
/// Useful method for "set" methods of the attributes: sends an UPDATE event and
/// makes attribute initialized
virtual void sendAttributeUpdated(ModelAPI_Attribute* theAttr) = 0;
+ /// Blocks sending "attribute updated" if theBlock is true
+ virtual void blockSendAttributeUpdated(const bool theBlock) = 0;
/// Erases all the data from the data model
virtual void erase() = 0;
/// To virtually destroy the fields of successors
- virtual ~ModelAPI_Data()
- {
- }
+ virtual ~ModelAPI_Data();
+
+ /// Stores the state of the object to execute it later accordingly
+ virtual void execState(const ModelAPI_ExecState theState) = 0;
- /// Makes feature must be updated later (on rebuild). Normally the Updater must call it
- /// in case of not-automatic update to true
- virtual void mustBeUpdated(const bool theFlag) = 0;
+ /// Returns the state of the latest execution of the feature
+ virtual ModelAPI_ExecState execState() = 0;
- /// Returns true if feature must be updated (re-executed) on rebuild
- virtual bool mustBeUpdated() = 0;
+ /// Registers error during the execution, causes the ExecutionFailed state
+ virtual void setError(const std::string& theError) = 0;
/// Returns the identifier of feature-owner, unique in this document
virtual int featureId() const = 0;
- // returns all objects referenced to this
+ /// returns all objects referenced to this
virtual const std::set<std::shared_ptr<ModelAPI_Attribute> >& refsToMe() = 0;
+ /// returns all references by attributes of this data
+ /// \param theRefs returned list of pairs: id of referenced attribute and list of referenced objects
+ virtual void referencesToObjects(
+ std::list<std::pair<std::string, std::list<std::shared_ptr<ModelAPI_Object> > > >& theRefs) = 0;
protected:
/// Objects are created for features automatically
- ModelAPI_Data()
- {
- }
+ ModelAPI_Data();
};
typedef std::shared_ptr<ModelAPI_Data> DataPtr;