Salome HOME
bos #20256: [CEA 18523] Porting SMESH to int 64 bits V9_7_0a1 V9_7_0a2 V9_7_0b1
authoreap <eap@opencascade.com>
Wed, 17 Mar 2021 11:57:28 +0000 (14:57 +0300)
committervsr <vsr@opencascade.com>
Wed, 21 Apr 2021 13:57:02 +0000 (16:57 +0300)
CMakeLists.txt
SalomeKERNELConfig.cmake.in
src/Basics/CMakeLists.txt
src/Basics/smIdType.hxx.in [new file with mode: 0644]
src/DSC/DSC_User/Datastream/Palm/PalmCouplingPolicy.hxx

index 652b7c175c00bf8999f751e9f19c17eadd9562d6..473aab7013f2d9d13347493b8035f4a627fb364f 100755 (executable)
@@ -61,6 +61,7 @@ OPTION(SALOME_BUILD_TESTS "Build SALOME tests" ON)
 # Advanced:
 OPTION(SALOME_LIGHT_ONLY "Build SALOME Light only (no CORBA)" OFF)
 OPTION(SALOME_USE_LIBBATCH "Use LibBatch in KERNEL" OFF)
+OPTION(SALOME_USE_64BIT_IDS "Size of IDs to refer cells and nodes. 32 bits when OFF (default), 64 bits when ON." OFF)
 CMAKE_DEPENDENT_OPTION(SALOME_PACO_PARALLEL "Build with PACO (implies SALOME_USE_MPI)" OFF
                        "NOT SALOME_LIGHT_ONLY" OFF)
 CMAKE_DEPENDENT_OPTION(SALOME_USE_MPI "Use MPI containers" OFF
index 13c0d81c986fb3318e04c159565098f2c971c586..58751735314c4aab260c03297c402149346213a5 100644 (file)
@@ -66,6 +66,7 @@ SET(SALOME_KERNEL_BUILD_DOC   @SALOME_BUILD_DOC@)
 SET(SALOME_KERNEL_BUILD_TESTS @SALOME_BUILD_TESTS@)
 SET(SALOME_KERNEL_LIGHT_ONLY  @SALOME_LIGHT_ONLY@)
 SET(SALOME_USE_LIBBATCH       @SALOME_USE_LIBBATCH@)
+SET(SALOME_USE_64BIT_IDS      @SALOME_USE_64BIT_IDS@)
 
 # Prerequisites:
 IF(SALOME_KERNEL_BUILD_TESTS)
index 9939866a180d83a7fcc2f0e216c0839d26dfc9c3..e3d8550962c0597276cbf94177c83659c1734c47 100644 (file)
@@ -38,3 +38,5 @@ TARGET_LINK_LIBRARIES(SALOMEBasics ${PLATFORM_LIBS} ${PTHREAD_LIBRARIES})
 
 FILE(GLOB SALOMEBasics_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
 INSTALL(FILES ${SALOMEBasics_HEADERS_HXX} DESTINATION ${SALOME_INSTALL_HEADERS})
+
+SALOME_CONFIGURE_FILE(smIdType.hxx.in smIdType.hxx INSTALL ${SALOME_INSTALL_HEADERS})
\ No newline at end of file
diff --git a/src/Basics/smIdType.hxx.in b/src/Basics/smIdType.hxx.in
new file mode 100644 (file)
index 0000000..9d62cca
--- /dev/null
@@ -0,0 +1,59 @@
+// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// 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, 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
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+//  SALOME Basics : general SALOME definitions and tools (C++ part - no CORBA)
+//  File   : smIdType.hxx
+
+#ifndef _SMIDTYPE_HXX_
+#define _SMIDTYPE_HXX_
+
+#cmakedefine SALOME_USE_64BIT_IDS
+
+#include <cinttypes>
+#include <limits>
+
+#ifndef SALOME_USE_64BIT_IDS
+typedef std::int32_t smIdType;
+#else
+typedef std::int64_t smIdType;
+#endif
+
+struct smIdHasher
+{
+  static int HashCode(const smIdType theValue,  const int theUpperBound)
+  {
+    return static_cast<int> ((theValue & std::numeric_limits<smIdType>::max()) % theUpperBound + 1);
+  }
+
+  static bool IsEqual( const smIdType& id1, const smIdType& id2 )
+  {
+    return id1 == id2;
+  }
+};
+
+template <class T> inline smIdType ToSmIdType(T val)
+{
+  return static_cast<smIdType>(val);
+}
+template <class T> inline T FromSmIdType(smIdType val)
+{
+  return static_cast<T>(val);
+}
+
+#endif //_SMIDTYPE_HXX_
index bfd2e148f71d2d5fe668685011d48e85d92fb3f9..2e5bb815ac872ec1798645caedd58f020d8dfda9 100644 (file)
@@ -139,12 +139,12 @@ public:
  
       // Pas encore testé
       DataIdIterator(const InternalDataIdContainer<TTIME,TTAG> & pc):
-        _pc(pc),_itTime(pc._lTime.begin()),_itTag(pc._lTag.begin()) {}
+        _itTime(pc._lTime.begin()),_itTag(pc._lTag.begin()),_pc(pc){}
       DataIdIterator(const InternalDataIdContainer<TTIME,TTAG> & pc, ItTime itTime, ItTag itTag):
-        _pc(pc),_itTime(itTime),_itTag(itTag) {}
+        _itTime(itTime),_itTag(itTag),_pc(pc) {}
       // Pas encore testé
       DataIdIterator(const DataIdIterator & dIt):
-        _pc(dIt._pc),_itTime(dIt._itTime),_itTag(dIt._itTag) {}
+        _itTime(dIt._itTime),_itTag(dIt._itTag), _pc(dIt._pc) {}
       ~DataIdIterator() {}