]> SALOME platform Git repositories - modules/kernel.git/blob - src/SALOMEDSClient/SALOMEDSClient_definitions.hxx
Salome HOME
Ajout des properties
[modules/kernel.git] / src / SALOMEDSClient / SALOMEDSClient_definitions.hxx
1 // Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
2 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
3 // 
4 // This library is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU Lesser General Public
6 // License as published by the Free Software Foundation; either 
7 // version 2.1 of the License.
8 // 
9 // This library is distributed in the hope that it will be useful 
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
12 // Lesser General Public License for more details.
13 //
14 // You should have received a copy of the GNU Lesser General Public  
15 // License along with this library; if not, write to the Free Software 
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17 //
18 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 //
20 #ifndef  SALOMEDSCLIENT_DEF_HXX
21 #define  SALOMEDSCLIENT_DEF_HXX
22
23 #include <boost/shared_ptr.hpp> 
24
25 template<class T> class clt_shared_ptr: public boost::shared_ptr<T>
26 {
27 public:
28   clt_shared_ptr() {}
29   
30   template<class Y>
31     explicit clt_shared_ptr(Y * p)
32       {
33         reset(p);
34       }
35   
36   template<class Y>
37     clt_shared_ptr(clt_shared_ptr<Y> const & r):
38       boost::shared_ptr<T>(r,boost::detail::dynamic_cast_tag())
39         {}
40   
41   template<class Y>
42     clt_shared_ptr & operator=(clt_shared_ptr<Y> const & r)
43       {
44         clt_shared_ptr<T>(r).swap(*this);
45         return *this;
46       }
47   
48   template<class Y> clt_shared_ptr& operator()(Y * p) // Y must be complete
49     {
50       if(T* pt = dynamic_cast<T*>(p))
51         boost::shared_ptr<T>::reset(pt);
52       else
53         boost::throw_exception(std::bad_cast());
54       return *this;
55     }
56     
57 };
58
59 #define _PTR(Class) clt_shared_ptr<SALOMEDSClient_##Class>
60 #define _CAST(Class, shared_ptr_Obj) dynamic_cast<SALOMEDS_##Class*>(shared_ptr_Obj.get())
61
62 struct STextColor
63 {
64     double R;
65     double G;
66     double B;
67 };
68
69 #endif