From ad4aae7a3d7279875de4bc70b4a65aebded4d120 Mon Sep 17 00:00:00 2001 From: eap Date: Wed, 17 Mar 2021 14:57:28 +0300 Subject: [PATCH] bos #20256: [CEA 18523] Porting SMESH to int 64 bits --- CMakeLists.txt | 1 + SalomeKERNELConfig.cmake.in | 1 + src/Basics/CMakeLists.txt | 2 + src/Basics/smIdType.hxx.in | 59 +++++++++++++++++++ .../Datastream/Palm/PalmCouplingPolicy.hxx | 6 +- 5 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 src/Basics/smIdType.hxx.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 652b7c175..473aab701 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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 diff --git a/SalomeKERNELConfig.cmake.in b/SalomeKERNELConfig.cmake.in index 13c0d81c9..587517353 100644 --- a/SalomeKERNELConfig.cmake.in +++ b/SalomeKERNELConfig.cmake.in @@ -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) diff --git a/src/Basics/CMakeLists.txt b/src/Basics/CMakeLists.txt index 9939866a1..e3d855096 100644 --- a/src/Basics/CMakeLists.txt +++ b/src/Basics/CMakeLists.txt @@ -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 index 000000000..9d62ccad4 --- /dev/null +++ b/src/Basics/smIdType.hxx.in @@ -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 +#include + +#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 ((theValue & std::numeric_limits::max()) % theUpperBound + 1); + } + + static bool IsEqual( const smIdType& id1, const smIdType& id2 ) + { + return id1 == id2; + } +}; + +template inline smIdType ToSmIdType(T val) +{ + return static_cast(val); +} +template inline T FromSmIdType(smIdType val) +{ + return static_cast(val); +} + +#endif //_SMIDTYPE_HXX_ diff --git a/src/DSC/DSC_User/Datastream/Palm/PalmCouplingPolicy.hxx b/src/DSC/DSC_User/Datastream/Palm/PalmCouplingPolicy.hxx index bfd2e148f..2e5bb815a 100644 --- a/src/DSC/DSC_User/Datastream/Palm/PalmCouplingPolicy.hxx +++ b/src/DSC/DSC_User/Datastream/Palm/PalmCouplingPolicy.hxx @@ -139,12 +139,12 @@ public: // Pas encore testé DataIdIterator(const InternalDataIdContainer & pc): - _pc(pc),_itTime(pc._lTime.begin()),_itTag(pc._lTag.begin()) {} + _itTime(pc._lTime.begin()),_itTag(pc._lTag.begin()),_pc(pc){} DataIdIterator(const InternalDataIdContainer & 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() {} -- 2.39.2