]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
improve DataOwnerList to append only non equal owners if additional flag is set
authorptv <ptv@opencascade.com>
Fri, 11 Nov 2005 11:39:40 +0000 (11:39 +0000)
committerptv <ptv@opencascade.com>
Fri, 11 Nov 2005 11:39:40 +0000 (11:39 +0000)
src/SUIT/SUIT_DataOwner.cxx
src/SUIT/SUIT_DataOwner.h

index 3a85389bc00bbebdff8e40d8553ffc16c91c16bc..401b763df028bb442d8cd19b17d93d7d23975221 100755 (executable)
@@ -46,6 +46,15 @@ SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList()
 {
 }
 
+//====================================================================
+//! Constructor (default)
+//====================================================================
+SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const bool skipAllEqal )
+: QValueList<SUIT_DataOwnerPtr>(),
+mySkipEqual( skipAllEqal )
+{
+}
+
 //====================================================================
 //! Constructor (copy)
 //====================================================================
@@ -54,6 +63,24 @@ SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const SUIT_DataOwnerPtrList& l )
 {
 }
 
+//====================================================================
+//! Constructor (copy)
+//====================================================================
+SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const SUIT_DataOwnerPtrList& l, const bool skipAllEqal )
+: QValueList<SUIT_DataOwnerPtr>(),
+mySkipEqual( skipAllEqal )
+{
+  if ( skipAllEqal == l.mySkipEqual )
+    operator =( l );
+  else
+  {
+    SUIT_DataOwnerPtrList::const_iterator beginIt = l.begin();
+    SUIT_DataOwnerPtrList::const_iterator endIt = l.end();
+    for( ; beginIt != endIt; ++beginIt )
+      append( *beginIt );
+  }
+}
+
 #ifndef QT_NO_STL
 //====================================================================
 //! Constructor (from stl)
@@ -64,6 +91,21 @@ SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const std::list<SUIT_DataOwnerPtr>
 }
 #endif
 
+#ifndef QT_NO_STL
+//====================================================================
+//! Constructor (from stl)
+//====================================================================
+SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const std::list<SUIT_DataOwnerPtr>& l, const bool skipAllEqal )
+: QValueList<SUIT_DataOwnerPtr>(),
+mySkipEqual( skipAllEqal )
+{
+  std::list<SUIT_DataOwnerPtr>::const_iterator beginIt = l.begin();
+  std::list<SUIT_DataOwnerPtr>::const_iterator endIt = l.begin();
+  for( ; beginIt != endIt; ++beginIt )
+    append( *beginIt );
+}
+#endif
+
 //====================================================================
 //! Appends an item to the list
 //====================================================================
@@ -71,12 +113,14 @@ SUIT_DataOwnerPtrList::iterator SUIT_DataOwnerPtrList::append( const SUIT_DataOw
 {
   SUIT_DataOwnerPtrList::iterator it = find( x );
   if ( it != end() )
-    {
-      const _typeinfo& ti1 = typeid( *((*it).operator->()) );
-      const _typeinfo& ti2 = typeid( *(x.operator->()) );
+  {
+    if ( mySkipEqual )
+      return it;
+    const _typeinfo& ti1 = typeid( *((*it).operator->()) );
+    const _typeinfo& ti2 = typeid( *(x.operator->()) );
 
-      if (ti1 == ti2)
-       return it;
-    }
+    if (ti1 == ti2)
+      return it;
+  }
   return QValueList<SUIT_DataOwnerPtr>::append( x );
 }
index faa0f283ee5ecabe8e6c520e82f15c7cb7a6a3e6..c78679e75b99df43a724d6501d2b7a7410868be4 100755 (executable)
@@ -37,9 +37,12 @@ class SUIT_EXPORT SUIT_DataOwnerPtrList : public QValueList<SUIT_DataOwnerPtr>
 {
 public:
   SUIT_DataOwnerPtrList();//!< constructor
+  SUIT_DataOwnerPtrList( const bool skipAllEqal );//!< constructor
   SUIT_DataOwnerPtrList( const SUIT_DataOwnerPtrList& l );//!< copy constructor
+  SUIT_DataOwnerPtrList( const SUIT_DataOwnerPtrList& l, const bool skipAllEqal );//!< copy constructor
 #ifndef QT_NO_STL
   SUIT_DataOwnerPtrList( const std::list<SUIT_DataOwnerPtr>& l );//!< copy constructor for STL list
+  SUIT_DataOwnerPtrList( const std::list<SUIT_DataOwnerPtr>& l, const bool skipAllEqal );//!< copy constructor for STL list
 #endif
 
   iterator append      ( const SUIT_DataOwnerPtr& x );//!< append function
@@ -50,6 +53,8 @@ private:
   iterator insert ( iterator it, const SUIT_DataOwnerPtr& x );//!< hide method
   void push_front ( const SUIT_DataOwnerPtr& x );//!< hide method
   void push_back  ( const SUIT_DataOwnerPtr& x );//!< hide method
+private:
+  bool mySkipEqual;
 };
 
 #ifdef WIN32