Generalize "Cancel Compute" mechanism to be able to report

"Computation canceled" instead of "Algorithm failed" as failure reason

+  volatile bool _computeCanceled; //!< is set to True while computing to stop it
This commit is contained in:
eap 2012-07-20 16:11:12 +00:00
parent 0a45cd504a
commit 7c5dc4f006
2 changed files with 16 additions and 4 deletions

View File

@ -682,11 +682,17 @@ bool SMESH_Algo::Compute(SMESH_Mesh & /*aMesh*/, SMESH_MesherHelper* /*aHelper*/
return error( COMPERR_BAD_INPUT_MESH, "Mesh built on shape expected"); return error( COMPERR_BAD_INPUT_MESH, "Mesh built on shape expected");
} }
#ifdef WITH_SMESH_CANCEL_COMPUTE //=======================================================================
//function : CancelCompute
//purpose : Sets _computeCanceled to true. It's usage depends on
// * implementation of a particular mesher.
//=======================================================================
void SMESH_Algo::CancelCompute() void SMESH_Algo::CancelCompute()
{ {
_computeCanceled = true;
_error = COMPERR_CANCELED;
} }
#endif
//================================================================================ //================================================================================
/*! /*!
@ -748,6 +754,8 @@ void SMESH_Algo::InitComputeError()
if ( (*elem)->GetID() < 1 ) if ( (*elem)->GetID() < 1 )
delete *elem; delete *elem;
_badInputElements.clear(); _badInputElements.clear();
_computeCanceled = false;
} }
//================================================================================ //================================================================================

View File

@ -134,9 +134,11 @@ public:
*/ */
virtual bool Compute(SMESH_Mesh & aMesh, SMESH_MesherHelper* aHelper); virtual bool Compute(SMESH_Mesh & aMesh, SMESH_MesherHelper* aHelper);
#ifdef WITH_SMESH_CANCEL_COMPUTE /*!
* \brief Sets _computeCanceled to true. It's usage depends on
* implementation of a particular mesher.
*/
virtual void CancelCompute(); virtual void CancelCompute();
#endif
/*! /*!
* \brief evaluates size of prospective mesh on a shape * \brief evaluates size of prospective mesh on a shape
@ -378,6 +380,8 @@ protected:
int _error; //!< SMESH_ComputeErrorName or anything algo specific int _error; //!< SMESH_ComputeErrorName or anything algo specific
std::string _comment; //!< any text explaining what is wrong in Compute() std::string _comment; //!< any text explaining what is wrong in Compute()
std::list<const SMDS_MeshElement*> _badInputElements; //!< to explain COMPERR_BAD_INPUT_MESH std::list<const SMDS_MeshElement*> _badInputElements; //!< to explain COMPERR_BAD_INPUT_MESH
volatile bool _computeCanceled; //!< is set to True while computing to stop it
}; };
#endif #endif