X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSALOMEDS%2FSALOMEDS_SObject_i.hxx;h=a4c73ce43c8bffcf6bef0355079e5c7e01d1ace8;hb=04bbbc8508a7b691c1cc76f1930a5fa6620fa489;hp=e652be1f486e0b7b7bdf9863b0b412f410851fd3;hpb=4655b0b0eb5345da6a86852021014b0cbae2ad30;p=modules%2Fkernel.git diff --git a/src/SALOMEDS/SALOMEDS_SObject_i.hxx b/src/SALOMEDS/SALOMEDS_SObject_i.hxx index e652be1f4..a4c73ce43 100644 --- a/src/SALOMEDS/SALOMEDS_SObject_i.hxx +++ b/src/SALOMEDS/SALOMEDS_SObject_i.hxx @@ -1,72 +1,158 @@ -// File : SALOMEDS_SObject_i.hxx -// Created : Wed Nov 28 16:25:50 2001 -// Author : Yves FRICAUD - -// Project : SALOME -// Module : SALOMEDS -// Copyright : Open CASCADE 2001 +// SALOME SALOMEDS : data structure of SALOME and sources of Salome data server +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// +// +// +// File : SALOMEDS_SObject_i.hxx +// Author : Yves FRICAUD +// Module : SALOME // $Header$ #ifndef __SALOMEDS_SOBJECT_I_H__ #define __SALOMEDS_SOBJECT_I_H__ -// std C++ headers -#include -#include +#include #include +// Cascade headers +#include +#include +#include + +#include "SALOMEDS_Study_i.hxx" + // IDL headers #include #include CORBA_SERVER_HEADER(SALOMEDS) -// Cascade headers -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +class SALOMEDS_GenericAttribute_i; -#include -class SALOMEDS_SObject_i: public POA_SALOMEDS::SObject, - public PortableServer::RefCountServantBase { -protected: - CORBA::ORB_ptr _orb; - TDF_Label _lab; - char* _name; - char* _value; - char* _type; - vector _liste_ba_type; +namespace SALOMEDS +{ + const char* Str(const TCollection_ExtendedString& theString); + + std::string GetType(const Handle(TDF_Attribute)& theAttr); + + Standard_GUID GetGUID(const char* theType); +} + + +class SALOMEDS_SObject_i: public virtual POA_SALOMEDS::SObject, + public virtual PortableServer::RefCountServantBase +{ public: - - SALOMEDS_SObject_i(const TDF_Label, CORBA::ORB_ptr); - - ~SALOMEDS_SObject_i(); - - virtual char* GetID(); + static + SALOMEDS_Study_i::TSObjectHolder + New(SALOMEDS_Study_i* theStudy, + const TDF_Label& theLabel); + + static + SALOMEDS_SObject_i* + NewPtr(SALOMEDS_Study_i* theStudy, + const TDF_Label& theLabel); + + static + SALOMEDS::SObject_var + NewRef(SALOMEDS_Study_i* theStudy, + const TDF_Label& theLabel); + + virtual SALOMEDS::SObject_ptr GetFather() ; virtual SALOMEDS::SComponent_ptr GetFatherComponent(); - virtual SALOMEDS::SObject_ptr GetFather() ; - virtual CORBA::Boolean FindAttribute(SALOMEDS::GenericAttribute_out anAttribute, const char* aTypeOfAttribute); - virtual CORBA::Boolean ReferencedObject(SALOMEDS::SObject_out obj) ; - virtual CORBA::Boolean FindSubObject(long atag, SALOMEDS::SObject_out obj ); + virtual CORBA::Boolean ReferencedObject(SALOMEDS::SObject_out theSObject); + virtual CORBA::Boolean FindSubObject(CORBA::Long theTag, SALOMEDS::SObject_out theSObject); - virtual SALOMEDS::Study_ptr GetStudy() ; - virtual char* Name(); - virtual void Name(const char*); + virtual SALOMEDS::Study_ptr GetStudy(); virtual SALOMEDS::ListOfAttributes* GetAllAttributes(); + virtual CORBA::Object_ptr GetObject(); + virtual char* GetID(); virtual CORBA::Short Tag(); + virtual CORBA::Short Depth(); - static char* AttributeIDToType(Standard_GUID); + virtual char* Name(); + virtual void Name(const char* theName); + + virtual char* GetName(); + virtual char* GetComment(); + virtual char* GetIOR(); + + CORBA::Boolean + FindAttribute(SALOMEDS::GenericAttribute_out theAttribute, + const char* theTypeOfAttribute); + + SALOMEDS::GenericAttribute_ptr + FindOrCreateAttribute(const char* theTypeOfAttribute); + + void RemoveAttribute(const char* theTypeOfAttribute); + void OnRemove(); + + SALOMEDS_Study_i* GetStudyServant(){ return _study;} + + TDF_Label GetLabel(){ return _lab;} + + CORBA::ORB_var GetORB() const; + + PortableServer::POA_var GetPOA() const; - static Standard_GUID ReturnGUIDForAttribute(const char* aTypeOfAttribute); +protected: + friend class SALOMEDS_GenericAttribute_i; + + typedef std::string TAttributeID; + typedef std::pair TAttrHolder; + typedef std::map TAttrMap; + TAttrMap myAttrMap; + + TAttrHolder + _FindGenAttribute(const Handle(TDF_Attribute)& theAttr); + + TAttrHolder + _CreateGenAttribute(const Handle(TDF_Attribute)& theAttr, + const char* theTypeOfAttribute); + + TAttrHolder + _FindGenAttribute(const char* theTypeOfAttribute); + + SALOMEDS::GenericAttribute_ptr + _FindCORBAAttribute(const char* theTypeOfAttribute); + + Handle(TDF_Attribute) + _AddAttribute(const char* theTypeOfAttribute); + + SALOMEDS_Study_i* _study; + std::string _name; + TDF_Label _lab; + + SALOMEDS_SObject_i(SALOMEDS_Study_i* theStudy, + const TDF_Label& theLabel); + + ~SALOMEDS_SObject_i(); + +private: + SALOMEDS_SObject_i(); // Not implemented + void operator=(const SALOMEDS_SObject_i&); // Not implemented }; + + #endif