1 // SALOME SALOMEDS : data structure of SALOME and sources of Salome data server
3 // Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
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.
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.
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
20 // See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
24 // File : SALOMEDS_GenericAttribute_i.hxx
25 // Author : Yves FRICAUD
29 #ifndef _GENERIC_ATTRIBUTE_I_HXX_
30 #define _GENERIC_ATTRIBUTE_I_HXX_
33 #include <SALOMEconfig.h>
34 #include CORBA_SERVER_HEADER(SALOMEDS)
35 #include <TDF_Attribute.hxx>
36 #include "SALOMEDS_SObject_i.hxx"
38 class SALOMEDS_GenericAttribute_i: public POA_SALOMEDS::GenericAttribute,
39 public PortableServer::RefCountServantBase {
41 Handle(TDF_Attribute) _myAttr;
42 CORBA::ORB_ptr _myOrb;
44 SALOMEDS_GenericAttribute_i() {};
46 void CheckLocked() throw (SALOMEDS::GenericAttribute::LockProtection);
48 char* Store() {return "";};
50 void Restore(const char*) {};
54 SALOMEDS::SObject_ptr GetSObject();
56 ~SALOMEDS_GenericAttribute_i() {};
58 static Standard_GUID GetGUID(const char* theType);
60 static SALOMEDS::GenericAttribute_ptr CreateAttribute(CORBA::ORB_ptr theOrb, const Handle(TDF_Attribute)& theAttr);
63 // defines for creation attributes objects
65 //cout<<"*** Create new CORBA attribute for "<<#CORBA_Name<<endl;
66 #define __ReturnCORBAAttribute(OCAF_Name, CORBA_Name) if (theAttr->ID() == OCAF_Name::GetID()) { \
67 SALOMEDS_##CORBA_Name##_i* Attr = new SALOMEDS_##CORBA_Name##_i(Handle(OCAF_Name)::DownCast(theAttr), theOrb); \
68 return Attr->CORBA_Name::_this(); \
71 //cout<<"Create New Attribute "<<#CORBA_Name<<endl;
72 #define __FindOrCreateAttribute(OCAF_Name, CORBA_Name) if (strcmp(aTypeOfAttribute, #CORBA_Name) == 0) { \
73 Handle(OCAF_Name) anAttr; \
74 if (!Lab.FindAttribute(OCAF_Name::GetID(), anAttr)) { \
75 anAttr = new OCAF_Name; \
76 Lab.AddAttribute(anAttr); \
78 SALOMEDS_##CORBA_Name##_i* Attr = new SALOMEDS_##CORBA_Name##_i(anAttr, _orb); \
79 return Attr->CORBA_Name::_this(); \
82 //cout<<"Create New Attribute "<<#CORBA_Name<<endl;
83 #define __FindOrCreateAttributeLocked(OCAF_Name, CORBA_Name) if (strcmp(aTypeOfAttribute, #CORBA_Name) == 0) { \
84 Handle(OCAF_Name) anAttr; \
85 if (!Lab.FindAttribute(OCAF_Name::GetID(), anAttr)) { \
87 anAttr = new OCAF_Name; \
88 Lab.AddAttribute(anAttr); \
90 SALOMEDS_##CORBA_Name##_i* Attr = new SALOMEDS_##CORBA_Name##_i(anAttr, _orb); \
91 return Attr->CORBA_Name::_this(); \