Salome HOME
Copyright update 2022
[modules/smesh.git] / src / SMESHUtils / SMESH_TryCatch.cxx
index 0dd02ca13e185df64816016bc425571e4ce1a5d9..b808a791bdcbeda74fe4b1f56a43d109c6ac0c35 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2014  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2022  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -30,10 +30,29 @@ void SMESH::throwSalomeEx(const char* txt)
 
 void SMESH::doNothing(const char* txt)
 {
+  (void)txt; // unused in release mode
   MESSAGE( txt << " " << __FILE__ << ": " << __LINE__ );
 }
+
+const char* SMESH::returnError(const char* txt)
+{
+  return txt;
+}
+
+void SMESH::printErrorInDebugMode(const char* txt)
+{
+#ifdef _DEBUG_
+  std::cerr <<  txt << " " << __FILE__ << ": " << __LINE__ << std::endl;
+#else
+  (void)txt; // unused in release mode
+#endif
+}
+
 // ------------------------------------------------------------------
+
 #include "SMESH_ComputeError.hxx"
+#include "SMDS_SetIterator.hxx"
+#include <boost/make_shared.hpp>
 
 #define _case2char(err) case err: return #err;
 
@@ -72,11 +91,31 @@ SMESH_ComputeErrorPtr SMESH_ComputeError::Worst( SMESH_ComputeErrorPtr er1,
   if ( !er1->IsKO() ) return er2;
   if ( !er2->IsKO() ) return er1;
   // both KO
-  bool hasInfo1 = er1->myComment.size() || !er1->myBadElements.empty();
-  bool hasInfo2 = er2->myComment.size() || !er2->myBadElements.empty();
+  bool hasInfo1 = er1->myComment.size() || er1->HasBadElems();
+  bool hasInfo2 = er2->myComment.size() || er2->HasBadElems();
   if ( er1->myName == er2->myName ||
        hasInfo1    != hasInfo2 )
     return hasInfo1 < hasInfo2 ? er2 : er1;
 
   return er1->myName == COMPERR_CANCELED ? er2 : er1;
 }
+
+// Return bad elements
+SMDS_ElemIteratorPtr SMESH_BadInputElements::getElements()
+{
+  typedef SMDS_SetIterator< const SMDS_MeshElement*,
+                            std::list< const SMDS_MeshElement* >::const_iterator> TIterator;
+  return boost::make_shared< TIterator >( myBadElements.begin(), myBadElements.end() );
+}
+
+// Temporary remove its elements before the mesh compacting
+void SMESH_BadInputElements::tmpClear()
+{
+  myBadElements.clear();
+}
+
+// Re-add elements after the mesh compacting
+void SMESH_BadInputElements::add( const SMDS_MeshElement* element )
+{
+  myBadElements.push_back( element );
+}