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
};
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;
+
protected:
GroupID myGroup; ///< ID of the group to be solved
bool myFindFaileds; ///< flag to find conflicting or inappropriate constraints