#ifndef PlaneGCSSolver_Solver_H_
#define PlaneGCSSolver_Solver_H_
-#include <SketchSolver_IConstraintWrapper.h>
#include <PlaneGCSSolver_Defs.h>
+#include <PlaneGCSSolver_ConstraintWrapper.h>
#include <GCS.h>
/// \brief Initialize memory for new solver's parameter
double* createParameter();
+ /// \brief Add parameters created elsewhere
+ void addParameters(const GCS::SET_pD& theParams);
/// \brief Release memory occupied by parameters
void removeParameters(const GCS::SET_pD& theParams);
+ /// \brief Preliminary initialization of solver (useful for moving a feature).
+ /// When called, the solve() method does not reinitialize a set of constraints.
+ void initialize();
+
/// \brief Solve the set of equations
/// \return identifier whether solution succeeded
SolveStatus solve();
/// \brief Check the constraint is conflicted with others
bool isConflicting(const ConstraintID& theConstraint) const;
+ /// \brief Check conflicting/redundant constraints and DoF
+ void diagnose();
+
/// \brief Degrees of freedom
int dof();
ConstraintMap myConstraints; ///< list of constraints
std::shared_ptr<GCS::System> myEquationSystem; ///< set of equations for solving in FreeGCS
+ bool myDiagnoseBeforeSolve; ///< is the diagnostic necessary
+ bool myInitilized; ///< is the system already initialized
GCS::SET_I myConflictingIDs; ///< list of IDs of conflicting constraints
-
/// specifies the conflicting constraints are already collected
bool myConfCollected;