Version: 8.3.0
StdMeshers_ObjRefUlils.hxx
Go to the documentation of this file.
1 // Copyright (C) 2007-2016 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 // SMESH SMESH : implementaion of SMESH idl descriptions
24 // File : StdMeshers_ObjRefUlils.hxx
25 // Created : Wed Oct 18 15:15:27 2006
26 // Author : Edward AGAPOV (eap)
27 //
28 #ifndef StdMeshers_ObjRefUlils_HeaderFile
29 #define StdMeshers_ObjRefUlils_HeaderFile
30 
31 #include "SMESH_Gen_i.hxx"
32 
42 {
43 public:
49  static GEOM::GEOM_Object_ptr ShapeToGeomObject (const TopoDS_Shape& theShape ) {
51  return gen->ShapeToGeomObject( theShape );
52  else
53  return GEOM::GEOM_Object::_nil();
54  }
55 
61  static TopoDS_Shape GeomObjectToShape(GEOM::GEOM_Object_ptr theGeomObject) {
63  return gen->GeomObjectToShape( theGeomObject );
64  else
65  return TopoDS_Shape();
66  }
67 
71  static std::string GeomObjectToEntry(GEOM::GEOM_Object_ptr theGeomObject);
72 
76  static GEOM::GEOM_Object_ptr EntryOrShapeToGeomObject (const std::string& theEntry,
77  const TopoDS_Shape& theShape);
78 
79 
85  static void SaveToStream( const TopoDS_Shape& theShape, std::ostream & stream);
86 
92  static TopoDS_Shape LoadFromStream( std::istream & stream, std::string* entry=NULL );
93 
99  static void SaveToStream( CORBA::Object_ptr obj, std::ostream & stream );
100 
106  template<class TInterface>
107  static
108  typename TInterface::_var_type LoadObjectFromStream( std::istream & stream )
109  {
110  if (SMESH_Gen_i* gen = SMESH_Gen_i::GetSMESHGen()) {
111  std::string str;
112  if (stream >> str) {
113  if ( StudyContext* myStudyContext = gen->GetCurrentStudyContext() ) {
114  std::string ior = myStudyContext->getIORbyOldId( atoi( str.c_str() ));
115  if ( !ior.empty() )
116  return TInterface::_narrow(gen->GetORB()->string_to_object( ior.c_str() ));
117  }
118  }
119  }
120  return TInterface::_nil();
121  }
122 
128  static void SaveToStream( const std::string& studyEntry, std::ostream & stream);
129 
130 };
131 
132 #endif