]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Porting to OCCT 7.8.0
authorjfa <jfa@opencascade.com>
Mon, 15 Jan 2024 13:17:43 +0000 (13:17 +0000)
committerjfa <jfa@opencascade.com>
Mon, 15 Jan 2024 13:17:43 +0000 (13:17 +0000)
src/GeomAPI/GeomAPI_Shape.cpp
src/GeomAlgoAPI/GeomAlgoAPI_STEPExport.cpp
src/GeomAlgoImpl/GEOMAlgo_IndexedDataMapOfIntegerShape.hxx
src/GeomAlgoImpl/GEOMAlgo_PassKeyShape.cxx
src/GeomAlgoImpl/GEOMAlgo_PassKeyShape.hxx
src/GeomAlgoImpl/GEOMAlgo_PassKeyShapeMapHasher.cxx
src/GeomAlgoImpl/GEOMAlgo_PassKeyShapeMapHasher.hxx
src/Model/Model_BodyBuilder.cpp
src/Model/Model_Document.cpp
src/Model/Model_Objects.cpp

index 5fe8500d07c6cc4c2eae6929003dccc308913b8a..a03ded3cd52f72fbce28584eec700fb4a0d05713 100644 (file)
@@ -19,6 +19,8 @@
 
 #include "GeomAPI_Shape.h"
 
+#include <Basics_OCCTVersion.hxx>
+
 #include <GeomAPI_Pnt.h>
 #include <GeomAPI_Vertex.h>
 #include <GeomAPI_Edge.h>
@@ -60,8 +62,6 @@
 #include <sstream>
 #include <algorithm> // for std::transform
 
-#include <BRepTools.hxx>
-
 #define MY_SHAPE implPtr<TopoDS_Shape>()
 
 GeomAPI_Shape::GeomAPI_Shape()
@@ -810,8 +810,13 @@ bool GeomAPI_Shape::Comparator::operator()(const std::shared_ptr<GeomAPI_Shape>&
   const TopoDS_Shape& aShape2 = theShape2->impl<TopoDS_Shape>();
   bool isLess = aShape1.TShape() < aShape2.TShape();
   if (aShape1.TShape() == aShape2.TShape()) {
+#if OCC_VERSION_LARGE < 0x07080000
     Standard_Integer aHash1 = aShape1.Location().HashCode(IntegerLast());
     Standard_Integer aHash2 = aShape2.Location().HashCode(IntegerLast());
+#else
+    Standard_Integer aHash1 = aShape1.Location().HashCode();
+    Standard_Integer aHash2 = aShape2.Location().HashCode();
+#endif
     isLess = aHash1 < aHash2;
   }
   return isLess;
@@ -825,8 +830,13 @@ bool GeomAPI_Shape::ComparatorWithOri::operator()(
   const TopoDS_Shape& aShape2 = theShape2->impl<TopoDS_Shape>();
   bool isLess = aShape1.TShape() < aShape2.TShape();
   if (aShape1.TShape() == aShape2.TShape()) {
+#if OCC_VERSION_LARGE < 0x07080000
     Standard_Integer aHash1 = aShape1.Location().HashCode(IntegerLast());
     Standard_Integer aHash2 = aShape2.Location().HashCode(IntegerLast());
+#else
+    Standard_Integer aHash1 = aShape1.Location().HashCode();
+    Standard_Integer aHash2 = aShape2.Location().HashCode();
+#endif
     isLess = (aHash1 < aHash2) ||
              (aHash1 == aHash2 && aShape1.Orientation() < aShape2.Orientation());
   }
@@ -836,7 +846,11 @@ bool GeomAPI_Shape::ComparatorWithOri::operator()(
 int GeomAPI_Shape::Hash::operator()(const std::shared_ptr<GeomAPI_Shape>& theShape) const
 {
   const TopoDS_Shape& aShape = theShape->impl<TopoDS_Shape>();
+#if OCC_VERSION_LARGE < 0x07080000
   return aShape.HashCode(IntegerLast());
+#else
+  return std::hash<TopoDS_Shape>{}(aShape);
+#endif
 }
 
 bool GeomAPI_Shape::Equal::operator()(const std::shared_ptr<GeomAPI_Shape>& theShape1,
@@ -845,8 +859,13 @@ bool GeomAPI_Shape::Equal::operator()(const std::shared_ptr<GeomAPI_Shape>& theS
   const TopoDS_Shape& aShape1 = theShape1->impl<TopoDS_Shape>();
   const TopoDS_Shape& aShape2 = theShape2->impl<TopoDS_Shape>();
 
+#if OCC_VERSION_LARGE < 0x07080000
   Standard_Integer aHash1 = aShape1.Location().HashCode(IntegerLast());
   Standard_Integer aHash2 = aShape2.Location().HashCode(IntegerLast());
+#else
+  Standard_Integer aHash1 = aShape1.Location().HashCode();
+  Standard_Integer aHash2 = aShape2.Location().HashCode();
+#endif
 
   return aShape1.TShape() == aShape2.TShape() && aHash1 == aHash2;
 }
index 7bca188ec90e982604419f2a3b16e50006a8782a..e46a0a4888cf572dd33a3e0010a68cca1c9c07a8 100644 (file)
@@ -31,6 +31,8 @@
 #include <XCAFDoc_ShapeTool.hxx>
 #include <XCAFDoc_ColorTool.hxx>
 #include <STEPCAFControl_Writer.hxx>
+#include <StepData_StepModel.hxx>
+#include <UnitsMethods.hxx>
 #include <Interface_Static.hxx>
 #include <Quantity_Color.hxx>
 
@@ -153,12 +155,22 @@ bool STEPExport(const std::string& theFileName,
     Interface_Static::SetCVal("xstep.cascade.unit", "M");
     Interface_Static::SetIVal("write.step.nonmanifold", 0); // 1 don't allow to export assemly tree
     Interface_Static::SetCVal("write.step.unit", "M");
-#else
+#elif OCC_VERSION_LARGE < 0x07080000
     STEPCAFControl_Writer aWriterTmp;
     Interface_Static::SetCVal("xstep.cascade.unit", "M");
     Interface_Static::SetIVal("write.step.nonmanifold", 0); // 1 don't allow to export assemly tree
     Interface_Static::SetCVal("write.step.unit", "M");
     STEPCAFControl_Writer aWriter;
+#else
+    STEPCAFControl_Writer aWriter;
+    Interface_Static::SetCVal("xstep.cascade.unit", "M");
+    Interface_Static::SetIVal("write.step.nonmanifold", 0); // 1 don't allow to export assemly tree
+    Interface_Static::SetCVal("write.step.unit", "M");
+    Handle(StepData_StepModel) aModel = aWriter.ChangeWriter().Model();
+    aModel->InternalParameters.InitFromStatic();
+    Standard_Integer aWriteUnitInt = Interface_Static::IVal("write.step.unit");
+    Standard_Real aWriteUnitReal = UnitsMethods::GetLengthFactorValue(aWriteUnitInt);
+    aModel->SetWriteLengthUnit(aWriteUnitReal);
 #endif
 
     auto aStatus = aWriter.Transfer(aDoc, STEPControl_AsIs);
index 1ccb1da63c7eddc6d3f8abb26bba0fe7214b196b..25d1e1dd8c1f9d6d145a06e7a6c2e0c6f2baec3d 100644 (file)
 
 #include <TopoDS_Shape.hxx>
 #include <Standard_Integer.hxx>
+
+#include <Basics_OCCTVersion.hxx>
+
+#if OCC_VERSION_LARGE < 0x07080000
+
 #include <TColStd_MapIntegerHasher.hxx>
 
 #define _NCollection_MapHasher
@@ -39,6 +44,13 @@ typedef NCollection_IndexedDataMap<Standard_Integer, TopoDS_Shape, TColStd_MapIn
 
 #undef _NCollection_MapHasher
 
+#else
+
+#include <NCollection_IndexedDataMap.hxx>
+
+typedef NCollection_IndexedDataMap<Standard_Integer, TopoDS_Shape> GEOMAlgo_IndexedDataMapOfIntegerShape;
+
+#endif // OCC_VERSION_LARGE < 0x07080000
 
 
 #endif
index 3ca56882e836f2a16c211e53a09e51b44d17ca76..143de9c4f6c3fe1bb28af1c3d9b109a915eb3a0f 100644 (file)
@@ -27,6 +27,8 @@
 //
 #include <GEOMAlgo_PassKeyShape.hxx>
 
+#include <Basics_OCCTVersion.hxx>
+
 #include <TopTools_ListOfShape.hxx>
 #include <TopTools_ListIteratorOfListOfShape.hxx>
 
@@ -94,7 +96,11 @@ static
   Clear();
   myNbIds=1;
   myMap.Add(aS1);
+#if OCC_VERSION_LARGE < 0x07080000
   aHC=aS1.HashCode(myUpper);
+#else
+  aHC = std::hash<TopoDS_Shape>{}(aS1);
+#endif
   mySum=NormalizedId(aHC, myNbIds);
 }
 //=======================================================================
@@ -160,7 +166,11 @@ static
   myNbIds=myMap.Extent();
   for(i=1; i<=myNbIds; ++i) {
     const TopoDS_Shape& aS=myMap(i);
+#if OCC_VERSION_LARGE < 0x07080000
     aId=aS.HashCode(myUpper);
+#else
+    aId = std::hash<TopoDS_Shape>{}(aS);
+#endif
     aIdN=NormalizedId(aId, myNbIds);
     mySum+=aIdN;
   }
@@ -195,6 +205,7 @@ static
   }
   return !bRet;
 }
+#if OCC_VERSION_LARGE < 0x07080000
 //=======================================================================
 //function : HashCode
 //purpose  :
@@ -203,6 +214,7 @@ static
 {
   return ::HashCode(mySum, aUpper);
 }
+#endif
 //=======================================================================
 //function : Dump
 //purpose  :
index 5a163067337288440aee37c704b76ea1149ab15f..9c216fa1da8e1d8a39be624d00fa8bf3e0e23144 100644 (file)
@@ -1,4 +1,3 @@
-
 // Copyright (C) 2007-2023  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
@@ -31,6 +30,8 @@
 
 #include <GeomAlgoImpl.h>
 
+#include <Basics_OCCTVersion.hxx>
+
 #include <Standard.hxx>
 #include <Standard_Macro.hxx>
 #include <Standard_Integer.hxx>
@@ -92,8 +93,19 @@ class GEOMAlgo_PassKeyShape  {
   GEOMALGOIMPL_EXPORT
     Standard_Boolean IsEqual(const GEOMAlgo_PassKeyShape& aOther) const;
 
+#if OCC_VERSION_LARGE < 0x07080000
   GEOMALGOIMPL_EXPORT
     Standard_Integer HashCode(const Standard_Integer Upper) const;
+#endif
+
+  GEOMALGOIMPL_EXPORT
+  bool operator==(const GEOMAlgo_PassKeyShape& theOther) const
+  {
+    return IsEqual(theOther);
+  }
+
+  GEOMALGOIMPL_EXPORT
+  size_t GetSum() const { return (size_t)mySum; }
 
   GEOMALGOIMPL_EXPORT
     void Dump(const Standard_Integer aHex = 0) const;
index ec45ecea51830ae342f69fcc125c36460c907d84..3b7f09a6de469d84bbfadbaff580f561990e9135 100644 (file)
@@ -27,6 +27,8 @@
 //
 #include <GEOMAlgo_PassKeyShapeMapHasher.hxx>
 
+#if OCC_VERSION_LARGE < 0x07080000
+
 //=======================================================================
 //function : HashCode
 //purpose  :
 {
   return aPK1.IsEqual(aPK2);
 }
+
+#else
+
+size_t GEOMAlgo_PassKeyShapeMapHasher::operator()(const GEOMAlgo_PassKeyShape& aPKey) const
+{
+  return aPKey.GetSum();
+}
+
+bool GEOMAlgo_PassKeyShapeMapHasher::operator()(const GEOMAlgo_PassKeyShape& aPKey1,
+                                                const GEOMAlgo_PassKeyShape& aPKey2) const
+{
+  return aPKey1.IsEqual(aPKey2);
+}
+
+#endif // OCC_VERSION_LARGE < 0x07080000
index 7f62b22d62d6b866ab28fb1e8e809afb454f1e67..48e3950d519cc43221d43549fcdc9cfc38dcc4d4 100644 (file)
@@ -36,6 +36,8 @@
 #include <Standard_Boolean.hxx>
 #include <GEOMAlgo_PassKeyShape.hxx>
 
+#include <Basics_OCCTVersion.hxx>
+
 //=======================================================================
 //class    : GEOMAlgo_PassKeyShapeMapHasher
 //purpose  :
@@ -43,6 +45,7 @@
 class GEOMAlgo_PassKeyShapeMapHasher
 {
  public:
+#if OCC_VERSION_LARGE < 0x07080000
   GEOMALGOIMPL_EXPORT
     static  Standard_Integer HashCode(const GEOMAlgo_PassKeyShape& aPKey,
                                       const Standard_Integer Upper) ;
@@ -50,5 +53,13 @@ class GEOMAlgo_PassKeyShapeMapHasher
   GEOMALGOIMPL_EXPORT
     static  Standard_Boolean IsEqual(const GEOMAlgo_PassKeyShape& aPKey1,
                                      const GEOMAlgo_PassKeyShape& aPKey2) ;
+#else
+  GEOMALGOIMPL_EXPORT
+  size_t operator()(const GEOMAlgo_PassKeyShape& aPKey) const;
+
+  GEOMALGOIMPL_EXPORT
+  bool operator()(const GEOMAlgo_PassKeyShape& aPKey1,
+                  const GEOMAlgo_PassKeyShape& aPKey2) const;
+#endif // OCC_VERSION_LARGE < 0x07080000
 };
 #endif
index eaea11a1a80681c24452313d3471ee3ebb7d2f6e..9c038bf4817fdcccd366aacb3ca780d6e1101675 100644 (file)
@@ -19,6 +19,8 @@
 
 #include <Model_BodyBuilder.h>
 
+#include <Basics_OCCTVersion.hxx>
+
 #include <Locale_Convert.h>
 
 #include <Model_Data.h>
@@ -923,7 +925,11 @@ int findAmbiguities(const TopoDS_Shape&           theShapeIn,
       continue;
     Standard_Integer anID = 0;
     for(TopTools_ListIteratorOfListOfShape aFaceIt(ancestors); aFaceIt.More(); aFaceIt.Next()) {
+#if OCC_VERSION_LARGE < 0x07080000
       anID ^= HashCode(aFaceIt.ChangeValue(), 1990657); // Pierpont prime
+#else
+      anID ^= ((std::hash<TopoDS_Shape>{}(aFaceIt.ChangeValue()) & IntegerLast()) % 1990657 + 1); // Pierpont prime
+#endif
     }
     if (aFacesIDs.IsBound(anID)) { // there found same edge, check they really have same faces
       const NCollection_List<TopoDS_Shape>& aSameFaces1 =
index 5f8b9fe5352101baec03b6e592d4e7737e744bd9..2a840bd3439a8ef16107bc58b7a8ecefc5aa1883 100644 (file)
@@ -690,7 +690,8 @@ void Model_Document::compactNested()
 /// references and Boolean and Integer Arrays for the current moment.
 static bool isEqualContent(Handle(TDF_Attribute) theAttr1, Handle(TDF_Attribute) theAttr2)
 {
-  if (Standard_GUID::IsEqual(theAttr1->ID(), TDF_Reference::GetID())) { // reference
+  Standard_GUID aGUID1 = theAttr1->ID();
+  if (aGUID1 == TDF_Reference::GetID()) { // reference
     Handle(TDF_Reference) aRef1 = Handle(TDF_Reference)::DownCast(theAttr1);
     Handle(TDF_Reference) aRef2 = Handle(TDF_Reference)::DownCast(theAttr2);
     if (aRef1.IsNull() && aRef2.IsNull())
@@ -698,7 +699,7 @@ static bool isEqualContent(Handle(TDF_Attribute) theAttr1, Handle(TDF_Attribute)
     if (aRef1.IsNull() || aRef2.IsNull())
       return false;
     return aRef1->Get().IsEqual(aRef2->Get()) == Standard_True;
-  } else if (Standard_GUID::IsEqual(theAttr1->ID(), TDataStd_BooleanArray::GetID())) {
+  } else if (aGUID1 == TDataStd_BooleanArray::GetID()) {
     Handle(TDataStd_BooleanArray) anArr1 = Handle(TDataStd_BooleanArray)::DownCast(theAttr1);
     Handle(TDataStd_BooleanArray) anArr2 = Handle(TDataStd_BooleanArray)::DownCast(theAttr2);
     if (anArr1.IsNull() && anArr2.IsNull())
@@ -716,7 +717,7 @@ static bool isEqualContent(Handle(TDF_Attribute) theAttr1, Handle(TDF_Attribute)
       }
       return true;
     }
-  } else if (Standard_GUID::IsEqual(theAttr1->ID(), TDataStd_IntegerArray::GetID())) {
+  } else if (aGUID1 == TDataStd_IntegerArray::GetID()) {
     Handle(TDataStd_IntegerArray) anArr1 = Handle(TDataStd_IntegerArray)::DownCast(theAttr1);
     Handle(TDataStd_IntegerArray) anArr2 = Handle(TDataStd_IntegerArray)::DownCast(theAttr2);
     if (anArr1.IsNull() && anArr2.IsNull())
@@ -734,7 +735,7 @@ static bool isEqualContent(Handle(TDF_Attribute) theAttr1, Handle(TDF_Attribute)
         }
       return true;
     }
-  } else if (Standard_GUID::IsEqual(theAttr1->ID(), TDataStd_ReferenceArray::GetID())) {
+  } else if (aGUID1 == TDataStd_ReferenceArray::GetID()) {
     Handle(TDataStd_ReferenceArray) anArr1 = Handle(TDataStd_ReferenceArray)::DownCast(theAttr1);
     Handle(TDataStd_ReferenceArray) anArr2 = Handle(TDataStd_ReferenceArray)::DownCast(theAttr2);
     if (anArr1.IsNull() && anArr2.IsNull())
@@ -752,7 +753,7 @@ static bool isEqualContent(Handle(TDF_Attribute) theAttr1, Handle(TDF_Attribute)
         }
       return true;
     }
-  } else if (Standard_GUID::IsEqual(theAttr1->ID(), TDataStd_ReferenceList::GetID())) {
+  } else if (aGUID1 == TDataStd_ReferenceList::GetID()) {
     Handle(TDataStd_ReferenceList) aList1 = Handle(TDataStd_ReferenceList)::DownCast(theAttr1);
     Handle(TDataStd_ReferenceList) aList2= Handle(TDataStd_ReferenceList)::DownCast(theAttr2);
     if (aList1.IsNull() && aList2.IsNull())
@@ -768,7 +769,7 @@ static bool isEqualContent(Handle(TDF_Attribute) theAttr1, Handle(TDF_Attribute)
         return false;
     }
     return !aLIter1.More() && !aLIter2.More(); // both lists are with the same size
-  } else if (Standard_GUID::IsEqual(theAttr1->ID(), TDF_TagSource::GetID())) {
+  } else if (aGUID1 == TDF_TagSource::GetID()) {
     return true; // it just for created and removed feature: nothing is changed
   }
   return false;
@@ -797,7 +798,7 @@ static bool isEmptyTransaction(const Handle(TDocStd_Document)& theDoc) {
             continue; // attribute is not changed actually
           }
         } else
-          if (Standard_GUID::IsEqual(anADelta->Attribute()->ID(), TDataStd_AsciiString::GetID())) {
+          if (anADelta->Attribute()->ID() == TDataStd_AsciiString::GetID()) {
             continue; // error message is disappeared
         }
       }
index 41b019b9b386d5425e37240e93fc32a2af8e1eb7..595d8c0c717310d450cd561bb56bb946e2b0093a 100644 (file)
@@ -18,6 +18,9 @@
 //
 
 #include <Model_Objects.h>
+
+#include <Basics_OCCTVersion.hxx>
+
 #include <Model_Data.h>
 #include <Model_Document.h>
 #include <Model_Events.h>
 #include <TDataStd_HLabelArray1.hxx>
 #include <TDF_Reference.hxx>
 #include <TDF_ChildIDIterator.hxx>
-#include <TDF_LabelMapHasher.hxx>
 #include <TDF_LabelMap.hxx>
 #include <TDF_ListIteratorOfLabelList.hxx>
 
+#if OCC_VERSION_LARGE < 0x07080000
+
+#include <TDF_LabelMapHasher.hxx>
 // for TDF_Label map usage
 static Standard_Integer HashCode(const TDF_Label& theLab, const Standard_Integer theUpper);
 static Standard_Boolean IsEqual(const TDF_Label& theLab1, const TDF_Label& theLab2);
 
+#endif
+
 int kUNDEFINED_FEATURE_INDEX = -1;
 
 static const std::string& groupNameFoldering(const std::string& theGroupID,
@@ -1491,7 +1498,7 @@ std::shared_ptr<ModelAPI_Folder> Model_Objects::findFolder(
   int aRefIndex = aRefs->Lower();
   for(; aRefIndex <= aRefs->Upper(); ++aRefIndex) { // iterate all existing features
     TDF_Label aCurLabel = aRefs->Value(aRefIndex);
-    if (IsEqual(aCurLabel, aFirstFeatureLabel))
+    if (aCurLabel.IsEqual(aFirstFeatureLabel))
       break; // no need to continue searching
 
     // searching the folder below, just continue to search last feature from the list
@@ -1502,7 +1509,7 @@ std::shared_ptr<ModelAPI_Folder> Model_Objects::findFolder(
     //               because the folder may end by the feature which is
     //               neither a sub-feature nor a feature in history.
     if (!aLastFeatureInFolder.IsNull()) {
-      if (IsEqual(aCurLabel, aLastFeatureInFolder))
+      if (aCurLabel.IsEqual(aLastFeatureInFolder))
         aLastFeatureInFolder.Nullify(); // the last feature in the folder is achieved
       continue;
     }
@@ -2112,6 +2119,7 @@ std::shared_ptr<ModelAPI_Feature> Model_Objects::internalFeature(const int theIn
   return FeaturePtr(); // invalid
 }
 
+#if OCC_VERSION_LARGE < 0x07080000
 Standard_Integer HashCode(const TDF_Label& theLab, const Standard_Integer theUpper)
 {
   return TDF_LabelMapHasher::HashCode(theLab, theUpper);
@@ -2120,3 +2128,4 @@ Standard_Boolean IsEqual(const TDF_Label& theLab1, const TDF_Label& theLab2)
 {
   return TDF_LabelMapHasher::IsEqual(theLab1, theLab2);
 }
+#endif