Salome HOME
Integrate patch from E.ADAM (Qt 4.5.0 compatibility)
[modules/smesh.git] / src / SMDS / SMDS_IteratorOfElements.cxx
index 3f1a392fd231843b441e1695ceb4b6aedb2d7292..220e67ac9cdbc24e363e41ec4d742d4d60b5a7c2 100644 (file)
@@ -1,33 +1,38 @@
+//  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+//  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+//  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.
+//
+//  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
+//
 //  SMESH SMDS : implementaion of Salome mesh data structure
 //
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  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. 
-// 
-//  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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#ifdef _MSC_VER
+#pragma warning(disable:4786)
+#endif
 
 #include "SMDS_IteratorOfElements.hxx"
 
 bool SMDS_IteratorOfElements::subMore()
 {
-       if((t2Iterator==NULL)||(!t2Iterator->more()))
+       if((t2Iterator.get()==NULL)||(!t2Iterator->more()))
        {
                if(t1Iterator->more())
                {
-                       if(t2Iterator!=NULL) delete t2Iterator;
                        t2Iterator=t1Iterator->next()->elementsIterator(myType);
                        return subMore();
                }
@@ -38,14 +43,9 @@ bool SMDS_IteratorOfElements::subMore()
 
 const SMDS_MeshElement * SMDS_IteratorOfElements::subNext()
 {
-       if((t2Iterator==NULL)||(!t2Iterator->more()))
-       {
+       if((t2Iterator.get()==NULL)||(!t2Iterator->more()))
                if(t1Iterator->more())
-               {
-                       if(t2Iterator!=NULL) delete t2Iterator;
                        t2Iterator=t1Iterator->next()->elementsIterator(myType);
-               }
-       }
        return t2Iterator->next();
 }
 
@@ -54,9 +54,12 @@ const SMDS_MeshElement * SMDS_IteratorOfElements::subNext()
 /// to the element element. it is the iterator to get connectivity of element
 //////////////////////////////////////////////////////////////////////////////
 SMDS_IteratorOfElements::SMDS_IteratorOfElements(const SMDS_MeshElement * element,
-       SMDSAbs_ElementType type, SMDS_Iterator<const SMDS_MeshElement *>* it)
-       :t1Iterator(it), t2Iterator(NULL), myType(type), myElement(element),
-       myProxyElement(NULL)
+                                                 SMDSAbs_ElementType type,
+                                                 const SMDS_ElemIteratorPtr& it)
+     : t1Iterator(it),
+       t2Iterator(SMDS_ElemIteratorPtr((SMDS_ElemIterator*)NULL)),
+       myType(type), myElement(element),
+       myProxyElement(NULL)
 {
        while(subMore())
                alreadyReturnedElements.insert(subNext());
@@ -81,7 +84,7 @@ bool SMDS_IteratorOfElements::more()
 
                        if(myReverseIteration)
                        {
-                               SMDS_Iterator<const SMDS_MeshElement*> * it=
+                               SMDS_ElemIteratorPtr it=
                                        myProxyElement->elementsIterator(myElement->GetType());
                                while(it->more())
                                {                               
@@ -103,9 +106,3 @@ const SMDS_MeshElement * SMDS_IteratorOfElements::next()
        myProxyElement=NULL;
        return e;
 }
-
-SMDS_IteratorOfElements::~SMDS_IteratorOfElements()
-{
-       delete t1Iterator;
-       if(t2Iterator!=NULL) delete t2Iterator;
-}