Back to index

salome-geom  6.5.0
NMTDS_InterfPool.cxx
Go to the documentation of this file.
00001 // Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
00002 //
00003 // This library is free software; you can redistribute it and/or
00004 // modify it under the terms of the GNU Lesser General Public
00005 // License as published by the Free Software Foundation; either
00006 // version 2.1 of the License.
00007 //
00008 // This library is distributed in the hope that it will be useful,
00009 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00010 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00011 // Lesser General Public License for more details.
00012 //
00013 // You should have received a copy of the GNU Lesser General Public
00014 // License along with this library; if not, write to the Free Software
00015 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
00016 //
00017 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
00018 //
00019 
00020 // File:        NMTDS_InterfPool.cxx
00021 // Author:      Peter KURNEV
00022 
00023 #include <NMTDS_InterfPool.hxx>
00024 
00025 #include <NMTDS_PairBoolean.hxx>
00026 #include <NMTDS_ListOfPairBoolean.hxx>
00027 #include <NMTDS_MapIteratorOfMapOfPairBoolean.hxx>
00028 #include <NMTDS_ListIteratorOfListOfPairBoolean.hxx>
00029 
00030 #include <Basics_OCCTVersion.hxx>
00031 
00032 static
00033   Standard_Integer TypeToInteger(const NMTDS_InterfType aType);
00034 
00035 //=======================================================================
00036 //function : 
00037 //purpose  : 
00038 //=======================================================================
00039 NMTDS_InterfPool::NMTDS_InterfPool()
00040 {
00041   myMaxInd=6;
00042 }
00043 //=======================================================================
00044 //function : ~
00045 //purpose  : 
00046 //=======================================================================
00047   NMTDS_InterfPool::~NMTDS_InterfPool()
00048 {
00049 }
00050 //=======================================================================
00051 //function : Add
00052 //purpose  : 
00053 //=======================================================================
00054 Standard_Boolean NMTDS_InterfPool::Add (const NMTDS_PairBoolean& aPKB,
00055                                    const NMTDS_InterfType aType)
00056 {
00057   Standard_Boolean bRet;
00058   Standard_Integer iType;
00059   //
00060   bRet=Standard_False;
00061   //
00062   iType=TypeToInteger(aType);
00063   if (iType>-1 && iType<myMaxInd) {
00064     bRet=myTable[iType].Add(aPKB);
00065   }
00066   return bRet;
00067 }
00068 //=======================================================================
00069 //function : Add
00070 //purpose  : 
00071 //=======================================================================
00072 Standard_Boolean NMTDS_InterfPool::Add (const Standard_Integer aInd1,
00073                                    const Standard_Integer aInd2,
00074                                    const NMTDS_InterfType aType)
00075 {
00076   NMTDS_PairBoolean aPKB;
00077   //
00078   aPKB.SetIds(aInd1, aInd2);
00079   return Add(aPKB, aType);
00080 }
00081 //=======================================================================
00082 //function : Add
00083 //purpose  : 
00084 //=======================================================================
00085 Standard_Boolean NMTDS_InterfPool::Add (const Standard_Integer aInd1,
00086                                    const Standard_Integer aInd2,
00087                                    const Standard_Boolean bFlag,
00088                                    const NMTDS_InterfType aType)
00089 {
00090   NMTDS_PairBoolean aPKB;
00091   //
00092   aPKB.SetIds(aInd1, aInd2);
00093   aPKB.SetFlag(bFlag);
00094   return Add(aPKB, aType);
00095 }
00096 //=======================================================================
00097 //function : Contains 
00098 //purpose  : 
00099 //=======================================================================
00100 Standard_Boolean NMTDS_InterfPool::Contains(const NMTDS_PairBoolean& aPKB)const
00101 {
00102   Standard_Boolean bRet;
00103   Standard_Integer i;
00104   //
00105   for (i=0; i<myMaxInd; ++i) {
00106     bRet=myTable[i].Contains(aPKB);
00107     if (bRet) {
00108       break;
00109     }
00110   }
00111   return bRet;
00112 }
00113 //=======================================================================
00114 //function : Contains 
00115 //purpose  : 
00116 //=======================================================================
00117   Standard_Boolean NMTDS_InterfPool::Contains(const Standard_Integer aInd1,
00118                                               const Standard_Integer aInd2)const
00119 {
00120   NMTDS_PairBoolean aPKB;
00121   //
00122   aPKB.SetIds(aInd1, aInd2);
00123   return Contains(aPKB);
00124 }
00125 //=======================================================================
00126 //function :  Get
00127 //purpose  : 
00128 //=======================================================================
00129 const NMTDS_ListOfPairBoolean& NMTDS_InterfPool::Get()const
00130 {
00131   Standard_Integer i;
00132   NMTDS_ListOfPairBoolean* pL;
00133   //
00134   pL=(NMTDS_ListOfPairBoolean*)&myList;
00135   pL->Clear();
00136   //
00137   for (i=0; i<myMaxInd; ++i) {
00138     NMTDS_MapIteratorOfMapOfPairBoolean aIt;
00139     //
00140     aIt.Initialize(myTable[i]);
00141     for(; aIt.More(); aIt.Next()) {
00142       const NMTDS_PairBoolean& aPKB=aIt.Key();
00143       pL->Append(aPKB);
00144     }
00145   }
00146   return myList;
00147 }
00148 //=======================================================================
00149 //function :  Get
00150 //purpose  : 
00151 //=======================================================================
00152 const NMTDS_ListOfPairBoolean& NMTDS_InterfPool::Get
00153   (const Standard_Integer aInd)const
00154 {
00155   Standard_Integer i, n1, n2;
00156   NMTDS_ListOfPairBoolean* pL;
00157   //
00158   pL=(NMTDS_ListOfPairBoolean*)&myList;
00159   pL->Clear();
00160   //
00161   for (i=0; i<myMaxInd; ++i) {
00162     NMTDS_MapIteratorOfMapOfPairBoolean aIt;
00163     //
00164     aIt.Initialize(myTable[i]);
00165     for(; aIt.More(); aIt.Next()) {
00166       const NMTDS_PairBoolean& aPKB=aIt.Key();
00167       aPKB.Ids(n1, n2);
00168       if(n1==aInd || n2==aInd) {
00169         pL->Append(aPKB);
00170       }
00171     }
00172   }
00173   return myList;
00174 }
00175 //=======================================================================
00176 //function :  Get
00177 //purpose  : 
00178 //=======================================================================
00179 const NMTDS_ListOfPairBoolean& NMTDS_InterfPool::Get
00180   (const NMTDS_InterfType aType)const
00181 {
00182   Standard_Integer iType;
00183   NMTDS_ListOfPairBoolean* pL;
00184   //
00185   pL=(NMTDS_ListOfPairBoolean*)&myList;
00186   pL->Clear();
00187   //
00188   iType=TypeToInteger(aType);
00189   if (iType>-1 && iType<myMaxInd) {
00190     NMTDS_MapIteratorOfMapOfPairBoolean aIt;
00191     //
00192     aIt.Initialize(myTable[iType]);
00193     for(; aIt.More(); aIt.Next()) {
00194       const NMTDS_PairBoolean& aPKB=aIt.Key();
00195       pL->Append(aPKB);
00196     }
00197   }
00198   return myList;
00199 }
00200 //=======================================================================
00201 //function :  Get
00202 //purpose  : 
00203 //=======================================================================
00204 const NMTDS_ListOfPairBoolean& NMTDS_InterfPool::Get
00205   (const Standard_Integer aInd,
00206    const NMTDS_InterfType aType)const
00207 {
00208   Standard_Integer n1, n2;
00209   NMTDS_ListOfPairBoolean *pL, aLPKB;
00210   NMTDS_ListIteratorOfListOfPairBoolean aIt;
00211   //
00212   aLPKB=Get(aType);
00213   //
00214   pL=(NMTDS_ListOfPairBoolean*)&myList;
00215   pL->Clear();
00216   //
00217   aIt.Initialize (aLPKB);
00218   for (; aIt.More(); aIt.Next()) {
00219     const NMTDS_PairBoolean& aPKB=aIt.Value();
00220     aPKB.Ids(n1, n2);
00221     if(n1==aInd || n2==aInd) {
00222       pL->Append(aPKB);
00223     }
00224   }
00225   return myList;
00226 }
00228 //===========================================================================
00229 //function : SSInterferences
00230 //purpose  : 
00231 //===========================================================================
00232 BOPTools_CArray1OfSSInterference&  NMTDS_InterfPool::SSInterferences()
00233 {
00234   return mySSInterferences;
00235 }
00236 //===========================================================================
00237 //function : ESInterferences
00238 //purpose  : 
00239 //===========================================================================
00240 BOPTools_CArray1OfESInterference&  NMTDS_InterfPool::ESInterferences()
00241 {
00242   return myESInterferences;
00243 }
00244 //===========================================================================
00245 //function : VSInterferences
00246 //purpose  : 
00247 //===========================================================================
00248 BOPTools_CArray1OfVSInterference&  NMTDS_InterfPool::VSInterferences()
00249 {
00250   return myVSInterferences;
00251 }
00252 //===========================================================================
00253 //function : EEInterferences
00254 //purpose  : 
00255 //===========================================================================
00256 BOPTools_CArray1OfEEInterference&  NMTDS_InterfPool::EEInterferences()
00257 {
00258   return myEEInterferences;
00259 }
00260 //===========================================================================
00261 //function : VEInterferences
00262 //purpose  : 
00263 //===========================================================================
00264 BOPTools_CArray1OfVEInterference&  NMTDS_InterfPool::VEInterferences()
00265 {
00266   return myVEInterferences;
00267 }
00268 //===========================================================================
00269 //function : VVInterferences
00270 //purpose  : 
00271 //===========================================================================
00272 BOPTools_CArray1OfVVInterference&  NMTDS_InterfPool::VVInterferences()
00273 {
00274   return myVVInterferences;
00275 }
00276 
00277 //modified by NIZNHY-PKV Mon Dec 12 09:07:54 2011f
00278 //=======================================================================
00279 //function : Purge
00280 //purpose  : 
00281 //=======================================================================
00282 void NMTDS_InterfPool::Purge()
00283 {
00284 #if OCC_VERSION_LARGE > 0x06050200
00285   myVVInterferences.Purge();
00286   myVEInterferences.Purge();
00287   myEEInterferences.Purge();
00288   myVSInterferences.Purge();
00289   myESInterferences.Purge();
00290   mySSInterferences.Purge();
00291 #endif
00292 }
00293 //modified by NIZNHY-PKV Mon Dec 12 09:07:58 2011t
00294 
00295 //=======================================================================
00296 //function : TypeToInteger
00297 //purpose  : 
00298 //=======================================================================
00299 Standard_Integer TypeToInteger(const NMTDS_InterfType aType)
00300 {
00301   return (Standard_Integer)aType;
00302 }