Salome HOME
Fix for Bug IPAL8957(3.0.0: GEOM local selections don't work in OCC viewer).
[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 //====================================================================
18 SUIT_DataOwner::SUIT_DataOwner()
19 {
20 }
21
22 //====================================================================
23 // Destructor
24 //====================================================================
25 SUIT_DataOwner::~SUIT_DataOwner()
26 {
27 }
28
29 //====================================================================
30 // operator== : compares two owners
31 //====================================================================
32 bool operator==( const SUIT_DataOwnerPtr& p1, const SUIT_DataOwnerPtr& p2 )
33 {
34   if ( !p1.isNull() && !p2.isNull() )
35     return p1->isEqual( *p2 );
36   return p1.isNull() && p2.isNull();
37 }
38
39 //********************************************************************
40 // SUIT_DataOwnerPtrList class: implements value list with unique
41 // items (uniqueness is provided by operator==())
42 //********************************************************************
43
44 //====================================================================
45 // Constructor (default)
46 //====================================================================
47 SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList()
48 : QValueList<SUIT_DataOwnerPtr>()
49 {
50 }
51
52 //====================================================================
53 // Constructor (copy)
54 //====================================================================
55 SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const SUIT_DataOwnerPtrList& l )
56 : QValueList<SUIT_DataOwnerPtr>( l )
57 {
58 }
59
60 #ifndef QT_NO_STL
61 //====================================================================
62 // Constructor (from stl)
63 //====================================================================
64 SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const std::list<SUIT_DataOwnerPtr>& l )
65 : QValueList<SUIT_DataOwnerPtr>( l )
66 {
67 }
68 #endif
69
70 //====================================================================
71 // Appends an item to the list
72 //====================================================================
73 SUIT_DataOwnerPtrList::iterator SUIT_DataOwnerPtrList::append( const SUIT_DataOwnerPtr& x )
74 {
75   SUIT_DataOwnerPtrList::iterator it = find( x );
76   if ( it != end() )
77     {
78       const _typeinfo& ti1 = typeid( *((*it).operator->()) );
79       const _typeinfo& ti2 = typeid( *(x.operator->()) );
80
81       if (ti1 == ti2)
82         return it;
83     }
84   return QValueList<SUIT_DataOwnerPtr>::append( x );
85 }