Salome HOME
bos #20256: [CEA 18523] Porting SMESH to int 64 bits
[modules/smesh.git] / src / SMESH_I / SMESH_Hypothesis_i.cxx
index c1b5c956a72edb85ca224c2fe54e358c5fced769..00b60b226d75d341afb3cfbb4bd458545fa3f16a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2021  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
@@ -6,7 +6,7 @@
 // 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.
+// 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
@@ -20,7 +20,7 @@
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
+//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's classes
 //  File   : SMESH_Hypothesis_i.cxx
 //  Author : Paul RASCLE, EDF
 //  Module : SMESH
@@ -34,6 +34,8 @@
 #include <iostream>
 #include <sstream>
 
+#include <TopExp_Explorer.hxx>
+
 using namespace std;
 
 //=============================================================================
@@ -47,11 +49,8 @@ using namespace std;
 SMESH_Hypothesis_i::SMESH_Hypothesis_i( PortableServer::POA_ptr thePOA )
   : SALOME::GenericObj_i( thePOA )
 {
-  MESSAGE( "SMESH_Hypothesis_i::SMESH_Hypothesis_i / Début" );
   myBaseImpl = 0;
-  
-  MESSAGE( "SMESH_Hypothesis_i::SMESH_Hypothesis_i / Fin" );
-};
+}
 
 //=============================================================================
 /*!
@@ -63,10 +62,10 @@ SMESH_Hypothesis_i::SMESH_Hypothesis_i( PortableServer::POA_ptr thePOA )
 
 SMESH_Hypothesis_i::~SMESH_Hypothesis_i()
 {
-  MESSAGE( "SMESH_Hypothesis_i::~SMESH_Hypothesis_i" );
+  //MESSAGE( "SMESH_Hypothesis_i::~SMESH_Hypothesis_i" );
   if ( myBaseImpl )
     delete myBaseImpl;
-};
+}
 
 //=============================================================================
 /*!
@@ -78,9 +77,8 @@ SMESH_Hypothesis_i::~SMESH_Hypothesis_i()
 
 char* SMESH_Hypothesis_i::GetName()
 {
-  //MESSAGE( "SMESH_Hypothesis_i::GetName" );
   return CORBA::string_dup( myBaseImpl->GetName() );
-};
+}
 
 //=============================================================================
 /*!
@@ -92,9 +90,8 @@ char* SMESH_Hypothesis_i::GetName()
 
 char* SMESH_Hypothesis_i::GetLibName()
 {
-  MESSAGE( "SMESH_Hypothesis_i::GetLibName" );
   return CORBA::string_dup( myBaseImpl->GetLibName() );
-};
+}
 
 //=============================================================================
 /*!
@@ -106,9 +103,8 @@ char* SMESH_Hypothesis_i::GetLibName()
 
 void SMESH_Hypothesis_i::SetLibName(const char* theLibName)
 {
-  MESSAGE( "SMESH_Hypothesis_i::SetLibName" );
   myBaseImpl->SetLibName( theLibName );
-};
+}
 
 //=============================================================================
 /*!
@@ -118,9 +114,8 @@ void SMESH_Hypothesis_i::SetLibName(const char* theLibName)
  */
 //=============================================================================
 
-CORBA::Long SMESH_Hypothesis_i::GetId()
+CORBA::Short SMESH_Hypothesis_i::GetId()
 {
-  MESSAGE( "SMESH_Hypothesis_i::GetId" );
   return myBaseImpl->GetID();
 }
 
@@ -133,10 +128,9 @@ CORBA::Long SMESH_Hypothesis_i::GetId()
 bool SMESH_Hypothesis_i::IsPublished()
 {
   bool res = false;
-  if ( SMESH_Gen_i *gen = SMESH_Gen_i::GetSMESHGen())
+  if ( SMESH_Gen_i::GetSMESHGen() )
   {
-    SALOMEDS::Study_var study = gen->GetCurrentStudy();
-    SALOMEDS::SObject_wrap SO = SMESH_Gen_i::ObjectToSObject( study, _this());
+    SALOMEDS::SObject_wrap SO = SMESH_Gen_i::GetSMESHGen()->ObjectToSObject( _this());
     res = !SO->_is_nil();
   }
   return res;
@@ -244,6 +238,19 @@ void SMESH_Hypothesis_i::setOldParameters (const char* theParameters)
   return myBaseImpl;
 }
 
+//================================================================================
+/*!
+ * \brief Return true if a hypothesis has parameters
+ */
+//================================================================================
+
+CORBA::Boolean SMESH_Hypothesis_i::HasParameters()
+{
+  std::ostringstream os;
+  myBaseImpl->SaveTo( os );
+  return ( !os.str().empty() );
+}
+
 //=============================================================================
 /*!
  *  SMESH_Hypothesis_i::SaveTo
@@ -321,3 +328,24 @@ void SMESH_Hypothesis_i::UpdateAsMeshesRestored()
 {
   // for hyps needing full data restored
 }
+
+//================================================================================
+/*!
+ * \brief Check if a shape includes sub-shapes of a given dimension
+ */
+//================================================================================
+
+bool GenericHypothesisCreator_i::IsShapeOfDim( const TopoDS_Shape & S,
+                                               int                  dim )
+{
+  TopAbs_ShapeEnum shapeType;
+  switch ( dim )
+  {
+  case 0: shapeType = TopAbs_VERTEX; break;
+  case 1: shapeType = TopAbs_EDGE; break;
+  case 2: shapeType = TopAbs_FACE; break;
+  case 3: shapeType = TopAbs_SOLID; break;
+  default: return true;
+  }
+  return TopExp_Explorer( S, shapeType ).More();
+}