Salome HOME
Issue #1299, Issue #1393 Angle constraint: support of additional and complementary...
[modules/shaper.git] / src / SketchSolver / SketchSolver_ISolver.h
index 75ddbfdf4d66a05d94b5f71f42b53f43437e3d91..cd525405737336e56b39985edd012189e9797934 100644 (file)
@@ -16,7 +16,8 @@ enum SketchSolver_SolveStatus {
   STATUS_OK,
   STATUS_INCONSISTENT,
   STATUS_EMPTYSET,
-  STATUS_FAILED // set if no one other status is applicable
+  STATUS_FAILED, // set if no one other status is applicable
+  STATUS_UNKNOWN // set for newly created groups
 };
 
 
@@ -36,10 +37,22 @@ public:
   void calculateFailedConstraints(bool theSic)
   { myFindFaileds = theSic; }
 
+  /// \brief Prepare for solving. Store initial values of parameters for undo
+  virtual void prepare() = 0;
+
   /// \brief Solve the set of equations
   /// \return identifier whether solution succeeded
   virtual SketchSolver_SolveStatus solve() = 0;
 
+  /// \brief Revert solution to initial values
+  virtual void undo() = 0;
+
+  /// \brief Check the constraint is conflicted with others
+  virtual bool isConflicting(const ConstraintID& theConstraint) const = 0;
+
+  /// \brief Degrees of freedom
+  virtual int dof() const = 0;
+
 protected:
   GroupID myGroup;       ///< ID of the group to be solved
   bool    myFindFaileds; ///< flag to find conflicting or inappropriate constraints