Salome HOME
Update copyrights 2014.
[modules/yacs.git] / src / SALOMEDS / SALOMEDS_SComponent_i.cxx
index 896859cca1bd7bb366e8d213a7dbe9aa3113bd20..7f21a0c1ab02355b5841f87e213aba96d9085c8c 100644 (file)
@@ -1,45 +1,49 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
+// Copyright (C) 2007-2014  CEA/DEN, EDF R&D, OPEN CASCADE
 //
-//  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 
+// Copyright (C) 2003-2007  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, or (at your option) any later version.
 //
+// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
 //  File   : SALOMEDS_SComponent_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
-
-using namespace std;
+//
 #include "SALOMEDS_SComponent_i.hxx"
+#include "SALOMEDS.hxx"
 #include "utilities.h"
+#include <map>
+
+SALOMEDS::SComponent_ptr SALOMEDS_SComponent_i::New(const SALOMEDSImpl_SComponent& theImpl, CORBA::ORB_ptr theORB)
+{
+  SALOMEDS_SComponent_i* sco_servant = new SALOMEDS_SComponent_i(theImpl, theORB);
 
+  return sco_servant->_this();
+}    
 
 //============================================================================
 /*! Function : constructor
  *  Purpose  : 
  */
 //============================================================================
-SALOMEDS_SComponent_i::SALOMEDS_SComponent_i(const TDF_Label lab, CORBA::ORB_ptr orb)
-  :SALOMEDS_SObject_i(lab,orb)
-{
-}
+SALOMEDS_SComponent_i::SALOMEDS_SComponent_i(const SALOMEDSImpl_SComponent& theImpl, CORBA::ORB_ptr orb)
+  :SALOMEDS_SObject_i(theImpl, orb)
+{}
   
 //============================================================================
 /*! Function : destructor
@@ -47,10 +51,8 @@ SALOMEDS_SComponent_i::SALOMEDS_SComponent_i(const TDF_Label lab, CORBA::ORB_ptr
  */
 //============================================================================
 SALOMEDS_SComponent_i::~SALOMEDS_SComponent_i()
-{
-}
-  
-  
+{}
+   
 //============================================================================
 /*! Function : ComponentDataType
  *  Purpose  : 
@@ -58,21 +60,9 @@ SALOMEDS_SComponent_i::~SALOMEDS_SComponent_i()
 //============================================================================
 char* SALOMEDS_SComponent_i::ComponentDataType()
 {
-  //DEB
-  //    MESSAGE("In SALOMEDS_SComponent_i::ComponentDataType");
-  //    TCollection_AsciiString anEntry;
-  //    TDF_Tool::Entry (_lab,anEntry);
-  //    MESSAGE("in SALOMEDS_SComponent_i, Entry :"<<anEntry);
-  // END DEB
-
-  Standard_CString res = "";
-  Handle(TDataStd_Comment) type;
-  if ( _lab.FindAttribute(TDataStd_Comment::GetID(),type) ) {
-    TCollection_AsciiString ch(type->Get());
-    res = ch.ToCString();
-  }
-
-  return CORBA::string_dup(res);
+  SALOMEDS::Locker lock;
+  std::string aType = dynamic_cast<SALOMEDSImpl_SComponent*>(_impl)->ComponentDataType();
+  return CORBA::string_dup(aType.c_str());
 }
   
 
@@ -83,28 +73,12 @@ char* SALOMEDS_SComponent_i::ComponentDataType()
 //============================================================================
 CORBA::Boolean SALOMEDS_SComponent_i::ComponentIOR(CORBA::String_out IOR)
 {
-  Handle(SALOMEDS_IORAttribute) ior;
-  if (!_lab.FindAttribute(SALOMEDS_IORAttribute::GetID(),ior) )
-      return false;
-  TCollection_AsciiString ch(ior->Get());
-  IOR = strdup(ch.ToCString());
-  return true;
-}
-  
-
-//============================================================================
-/*! Function : IsA
- *  Purpose  : 
- */
-//============================================================================
-Standard_Boolean SALOMEDS_SComponent_i::IsA(const TDF_Label Lab)
-{
-  Handle(TDF_Attribute) Att;
-  // scomponent must contain comment and belong to the 2th depth label
-  if ( Lab.FindAttribute(TDataStd_Comment::GetID(), Att) && Lab.Depth() == 2) {
-    return Standard_True;
+  SALOMEDS::Locker lock;
+  std::string ior;
+  if(!dynamic_cast<SALOMEDSImpl_SComponent*>(_impl)->ComponentIOR(ior)) {
+    IOR = CORBA::string_dup("");
+    return false;
   }
-  return Standard_False;
+  IOR = CORBA::string_dup(ior.c_str());
+  return true;
 }
-  
-