Back to index

salome-geom  6.5.0
NMTDS_Pair.cxx
Go to the documentation of this file.
00001 // Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
00002 //
00003 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
00004 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
00005 //
00006 // This library is free software; you can redistribute it and/or
00007 // modify it under the terms of the GNU Lesser General Public
00008 // License as published by the Free Software Foundation; either
00009 // version 2.1 of the License.
00010 //
00011 // This library is distributed in the hope that it will be useful,
00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014 // Lesser General Public License for more details.
00015 //
00016 // You should have received a copy of the GNU Lesser General Public
00017 // License along with this library; if not, write to the Free Software
00018 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
00019 //
00020 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
00021 //
00022 
00023 // File:        NMTDS_Pair.cxx
00024 // Author:      Peter KURNEV
00025 
00026 #include <NMTDS_Pair.hxx>
00027 
00028 #include <stdio.h>
00029 #include <string.h>
00030 #include <TColStd_ListIteratorOfListOfInteger.hxx>
00031 #include <TColStd_ListOfInteger.hxx>
00032 
00033 #ifdef WNT
00034 #pragma warning( disable : 4101) 
00035 #endif
00036 
00037 static
00038   Standard_Integer NormalizedId(const Standard_Integer aId,
00039                                 const Standard_Integer aDiv);
00040 
00041 //=======================================================================
00042 //function :
00043 //purpose  : 
00044 //=======================================================================
00045 NMTDS_Pair::NMTDS_Pair()
00046 {
00047   Clear(); 
00048 }
00049 //=======================================================================
00050 //function :
00051 //purpose  : 
00052 //=======================================================================
00053 NMTDS_Pair::NMTDS_Pair(const NMTDS_Pair& aOther)
00054 {
00055   myId1=aOther.myId1;
00056   myId2=aOther.myId2;
00057 }
00058 //=======================================================================
00059 //function :operator =
00060 //purpose  : 
00061 //=======================================================================
00062   NMTDS_Pair& NMTDS_Pair::operator =(const NMTDS_Pair& aOther)
00063 {
00064   myId1=aOther.myId1;
00065   myId2=aOther.myId2;
00066   return *this;
00067 }
00068 //=======================================================================
00069 //function :~
00070 //purpose  : 
00071 //=======================================================================
00072   NMTDS_Pair::~NMTDS_Pair()
00073 {
00074 }
00075 //=======================================================================
00076 //function :Clear
00077 //purpose  : 
00078 //=======================================================================
00079   void NMTDS_Pair::Clear()
00080 {
00081   myId1=0;
00082   myId2=0;
00083 }
00084 //=======================================================================
00085 //function :SetIds
00086 //purpose  : 
00087 //=======================================================================
00088   void NMTDS_Pair::SetIds(const Standard_Integer aId1,
00089                        const Standard_Integer aId2)
00090 {
00091   Clear();
00092   myId1=aId1;
00093   myId2=aId2;
00094   if (aId1>aId2) {
00095     myId1=aId2;
00096     myId2=aId1;
00097   }
00098 }
00099 //=======================================================================
00100 //function :Ids
00101 //purpose  : 
00102 //=======================================================================
00103   void NMTDS_Pair::Ids(Standard_Integer& aId1,
00104                      Standard_Integer& aId2) const
00105 {
00106   aId1=myId1;
00107   aId2=myId2;
00108 }
00109 //=======================================================================
00110 //function :IsEqual
00111 //purpose  : 
00112 //=======================================================================
00113   Standard_Boolean NMTDS_Pair::IsEqual(const NMTDS_Pair& aOther) const
00114 {
00115  
00116   Standard_Boolean bRet;
00117   //
00118   bRet=(myId1==aOther.myId1 && myId2==aOther.myId2);//ZZ
00119   return bRet;
00120 }
00121 //=======================================================================
00122 //function : HashCode
00123 //purpose  : 
00124 //=======================================================================
00125   Standard_Integer NMTDS_Pair::HashCode(const Standard_Integer aUpper) const
00126 {
00127   Standard_Integer aSum;
00128   //
00129   aSum=0;
00130   aSum+=NormalizedId(myId1, 2);
00131   aSum+=NormalizedId(myId2, 2);
00132   return ::HashCode(aSum, aUpper);
00133 }
00134 //=======================================================================
00135 // function: NormalizedId
00136 // purpose : 
00137 //=======================================================================
00138 Standard_Integer NormalizedId(const Standard_Integer aId,
00139                               const Standard_Integer aDiv)
00140 {
00141   Standard_Integer aMax, aTresh, aIdRet;
00142   //
00143   aIdRet=aId;
00144   aMax=::IntegerLast();
00145   aTresh=aMax/aDiv;
00146   if (aId>aTresh) {
00147     aIdRet=aId%aTresh;
00148   }
00149   return aIdRet;
00150 }