-// 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
*/
class SolveSpaceSolver_Solver : public SketchSolver_ISolver
{
- public:
+public:
SolveSpaceSolver_Solver();
virtual ~SolveSpaceSolver_Solver();
*/
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