Salome HOME
Update copyrights 2014.
[modules/gui.git] / src / OBJECT / SALOME_InteractiveObject.hxx
1 // Copyright (C) 2007-2014  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
10 //
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 // Lesser General Public License for more details.
15 //
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22
23 //  SALOME OBJECT : implementation of interactive object visualization for OCC and VTK viewers
24 //  File   : SALOME_InteractiveObject.hxx
25 //  Module : SALOME
26 //
27 #ifndef _SALOME_InteractiveObject_HeaderFile
28 #define _SALOME_InteractiveObject_HeaderFile
29
30 #ifndef _Standard_HeaderFile
31 // E.A. : Standard.hxx defines PACKAGE and VERSION --> Pb in Werror mode
32 // E.A. : --> Add the undef of PACKAGE and VERSION (really ugly !)
33 #ifdef PACKAGE
34 #undef PACKAGE
35 #endif
36 #ifdef VERSION
37 #undef VERSION
38 #endif
39 #ifdef HAVE_FINITE
40 #undef HAVE_FINITE
41 #endif
42 #include <Standard.hxx>
43 #endif
44 #ifndef _Handle_SALOME_InteractiveObject_HeaderFile
45 #include "Handle_SALOME_InteractiveObject.hxx"
46 #endif
47
48 #ifndef _Standard_CString_HeaderFile
49 #include <Standard_CString.hxx>
50 #endif
51 #ifndef _MMgt_TShared_HeaderFile
52 #include <MMgt_TShared.hxx>
53 #endif
54 #ifndef _Standard_Boolean_HeaderFile
55 #include <Standard_Boolean.hxx>
56 #endif
57
58 #include <string>
59
60 class SALOME_InteractiveObject : public MMgt_TShared {
61
62 public:
63
64     void* operator new(size_t,void* anAddress) 
65       {
66         return anAddress;
67       }
68     void* operator new(size_t size) 
69       { 
70         return Standard::Allocate(size); 
71       }
72     void  operator delete(void *anAddress) 
73       { 
74         if (anAddress) Standard::Free((Standard_Address&)anAddress); 
75       }
76  // Methods PUBLIC
77  // 
78 Standard_EXPORT   SALOME_InteractiveObject();
79 Standard_EXPORT   SALOME_InteractiveObject(const char* anEntry, 
80                                            const char* aComponentDataType,
81                                            const char* aName = "");
82 Standard_EXPORT   void setEntry(const char* anEntry) ;
83 Standard_EXPORT   const char* getEntry() ;
84 Standard_EXPORT   void setName(const char* aName) ;
85 Standard_EXPORT   const char* getName() ;
86 Standard_EXPORT   Standard_Boolean hasEntry() ;
87 Standard_EXPORT   virtual  Standard_Boolean isSame(const Handle(SALOME_InteractiveObject)& anIO) ;
88
89 Standard_EXPORT   Standard_Boolean hasReference() ;
90 Standard_EXPORT   const char* getReference() ;
91 Standard_EXPORT   void setReference(const char* aReference) ;
92
93 Standard_EXPORT   void setComponentDataType(const char* ComponentDataType) ;
94 Standard_EXPORT   const char* getComponentDataType() ;
95 Standard_EXPORT   Standard_Boolean isComponentType(const char* ComponentDataType) ; 
96   //Standard_EXPORT   Standard_Boolean isComponentType(std::string  ComponentDataType) ; 
97 Standard_EXPORT   virtual ~SALOME_InteractiveObject();
98
99 // Must be defined for using by NCollection for ceratin of data map
100 friend Standard_Boolean IsEqual(const Handle(SALOME_InteractiveObject)& anIO1,
101                                 const Handle(SALOME_InteractiveObject)& anIO2)
102 { return anIO1->isSame( anIO2 ); }
103
104
105
106
107
108  // Type management
109  //
110  Standard_EXPORT friend Handle_Standard_Type& SALOME_InteractiveObject_Type_();
111  Standard_EXPORT const Handle(Standard_Type)& DynamicType() const;
112  Standard_EXPORT Standard_Boolean              IsKind(const Handle(Standard_Type)&) const;
113
114 protected:
115
116  // Methods PROTECTED
117  // 
118
119
120  // Fields PROTECTED
121  //
122   std::string myReference;
123   std::string myEntry;
124   std::string myName;
125   std::string myComponentDataType;
126
127 private: 
128
129  // Methods PRIVATE
130  // 
131
132
133  // Fields PRIVATE
134  //
135
136
137 };
138
139
140
141
142
143 // other Inline functions and methods (like "C++: function call" methods)
144 //
145
146
147 #endif