Salome HOME
updated copyright message
[modules/shaper.git] / src / SketchSolver / SolveSpaceSolver / SolveSpaceSolver_Solver.h
index c853970a34d43eb53025c67226357f489215e48f..a3b674dbd8695f6364513d849f7719d16e7f397f 100644 (file)
@@ -1,15 +1,29 @@
-// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
-
-// File:    SolveSpaceSolver_Solver.h
-// Created: 07 May 2014
-// Author:  Artem ZHIDKOV
+// Copyright (C) 2014-2023  CEA, EDF
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 
 #ifndef SolveSpaceSolver_Solver_H_
 #define SolveSpaceSolver_Solver_H_
 
 #include <SketchSolver_ISolver.h>
 
-// Need to be defined before including SolveSpace to avoid additional dependences on Windows platform
+// Need to be defined before including SolveSpace to avoid additional
+// dependences on Windows platform
 #if defined(WIN32) && !defined(HAVE_C99_INTEGER_TYPES)
 typedef unsigned int UINT32;
 #else
@@ -41,7 +55,7 @@ typedef unsigned int UINT32;
  */
 class SolveSpaceSolver_Solver : public SketchSolver_ISolver
 {
- public:
+public:
   SolveSpaceSolver_Solver();
   virtual ~SolveSpaceSolver_Solver();
 
@@ -74,8 +88,25 @@ class SolveSpaceSolver_Solver : public SketchSolver_ISolver
    */
   virtual SketchSolver_SolveStatus solve();
 
- private:
+  /// \brief Prepare for solving. Store initial values of parameters for undo
+  virtual void prepare();
+
+  /// \brief Revert solution to initial values
+  virtual void undo();
+
+  /// \brief Check the constraint is conflicted with others
+  virtual bool isConflicting(const ConstraintID& theConstraint) const;
+
+  /// \brief Degrees of freedom
+  virtual int dof() const;
+
+private:
+  /// \brief Check whether degenerated arcs exist
+  bool hasDegeneratedArcs() const;
+
+private:
   Slvs_System myEquationsSystem; ///< set of equations for solving in SolveSpace
+  Slvs_Param* myParamsCopy;      ///< copy of parameters
 };
 
 #endif