]> SALOME platform Git repositories - modules/gui.git/blob - src/SUIT/SUIT_DataOwner.cxx
Salome HOME
Method setShown( bool ) was added. This method allow to show or hide all views.
[modules/gui.git] / src / SUIT / SUIT_DataOwner.cxx
1 #include "SUIT_DataOwner.h"
2
3 #ifndef WNT
4 #include <typeinfo>
5 #define _typeinfo std::type_info
6 #else
7 #include <typeinfo.h>
8 #define _typeinfo type_info
9 #endif
10
11 //********************************************************************
12 // SUIT_DataOwner class
13 //********************************************************************
14
15
16 /*! Constructor*/
17 SUIT_DataOwner::SUIT_DataOwner()
18 {
19 }
20
21 /*! Destructor*/
22 SUIT_DataOwner::~SUIT_DataOwner()
23 {
24 }
25
26 /*! operator== : compares two owners*/
27 bool operator==( const SUIT_DataOwnerPtr& p1, const SUIT_DataOwnerPtr& p2 )
28 {
29   if ( !p1.isNull() && !p2.isNull() )
30     return p1->isEqual( *p2 );
31   return p1.isNull() && p2.isNull();
32 }
33
34 //********************************************************************
35 /*! \class SUIT_DataOwnerPtrList 
36  * implements value list with unique items (uniqueness is 
37  * provided by operator==())
38  */
39 //********************************************************************
40
41 //====================================================================
42 //! Constructor (default)
43 //====================================================================
44 SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList()
45 : QValueList<SUIT_DataOwnerPtr>()
46 {
47 }
48
49 //====================================================================
50 //! Constructor (default)
51 //====================================================================
52 SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const bool skipAllEqal )
53 : QValueList<SUIT_DataOwnerPtr>(),
54 mySkipEqual( skipAllEqal )
55 {
56 }
57
58 //====================================================================
59 //! Constructor (copy)
60 //====================================================================
61 SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const SUIT_DataOwnerPtrList& l )
62 : QValueList<SUIT_DataOwnerPtr>( l )
63 {
64 }
65
66 //====================================================================
67 //! Constructor (copy)
68 //====================================================================
69 SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const SUIT_DataOwnerPtrList& l, const bool skipAllEqal )
70 : QValueList<SUIT_DataOwnerPtr>(),
71 mySkipEqual( skipAllEqal )
72 {
73   if ( skipAllEqal == l.mySkipEqual )
74     operator =( l );
75   else
76   {
77     SUIT_DataOwnerPtrList::const_iterator beginIt = l.begin();
78     SUIT_DataOwnerPtrList::const_iterator endIt = l.end();
79     for( ; beginIt != endIt; ++beginIt )
80       append( *beginIt );
81   }
82 }
83
84 #ifndef QT_NO_STL
85 //====================================================================
86 //! Constructor (from stl)
87 //====================================================================
88 SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const std::list<SUIT_DataOwnerPtr>& l )
89 : QValueList<SUIT_DataOwnerPtr>( l )
90 {
91 }
92 #endif
93
94 #ifndef QT_NO_STL
95 //====================================================================
96 //! Constructor (from stl)
97 //====================================================================
98 SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const std::list<SUIT_DataOwnerPtr>& l, const bool skipAllEqal )
99 : QValueList<SUIT_DataOwnerPtr>(),
100 mySkipEqual( skipAllEqal )
101 {
102   std::list<SUIT_DataOwnerPtr>::const_iterator beginIt = l.begin();
103   std::list<SUIT_DataOwnerPtr>::const_iterator endIt = l.begin();
104   for( ; beginIt != endIt; ++beginIt )
105     append( *beginIt );
106 }
107 #endif
108
109 //====================================================================
110 //! Appends an item to the list
111 //====================================================================
112 SUIT_DataOwnerPtrList::iterator SUIT_DataOwnerPtrList::append( const SUIT_DataOwnerPtr& x )
113 {
114   SUIT_DataOwnerPtrList::iterator it = find( x );
115   if ( it != end() )
116   {
117     if ( mySkipEqual )
118       return it;
119     const _typeinfo& ti1 = typeid( *((*it).operator->()) );
120     const _typeinfo& ti2 = typeid( *(x.operator->()) );
121
122     if (ti1 == ti2)
123       return it;
124   }
125   return QValueList<SUIT_DataOwnerPtr>::append( x );
126 }