Version: 8.3.0
SalomeProc.cxx
Go to the documentation of this file.
1 // Copyright (C) 2006-2016 CEA/DEN, EDF R&D
2 //
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19 
20 #include <Python.h>
21 #include "SalomeProc.hxx"
22 #include "Runtime.hxx"
23 #include "TypeCode.hxx"
24 #include "Container.hxx"
26 #include "Basics_Utils.hxx"
27 #include <iostream>
28 #include <cstdlib>
29 
30 using namespace YACS::ENGINE;
31 
32 SalomeProc::SalomeProc(const std::string& name):Proc(name)
33 {
34  // create default container with some default properties
35  Container* cont=createContainer("DefaultContainer");
36  cont->setProperty("name", "localhost");
37  cont->setProperty("container_name","FactoryServer");
38  cont->decrRef();
39 }
40 
41 TypeCode * SalomeProc::createInterfaceTc(const std::string& id, const std::string& name,
42  std::list<TypeCodeObjref *> ltc)
43 {
44  std::string myName;
45  if(id == "") myName = "IDL:" + name + ":1.0";
46  else myName = id;
47  return Proc::createInterfaceTc(myName,name,ltc);
48 }
49 TypeCode * SalomeProc::createStructTc(const std::string& id, const std::string& name)
50 {
51  std::string myName;
52  if(id == "") myName = "IDL:" + name + ":1.0";
53  else myName = id;
54  return Proc::createStructTc(myName,name);
55 }
56 
58 {
59 }
60 
62 
65 void SalomeProc::saveSchema(std::string xmlSchemaFile)
66 {
67  VisitorSaveSalomeSchema vss(this);
68  vss.openFileSchema(xmlSchemaFile);
69  accept(&vss);
70  vss.closeFileSchema();
71 }
72 
74 
78 {
79  std::string value=getProperty("DefaultStudyID");
80  if(value.empty())
81  return 1;
82  else
83  return atoi(value.c_str());
84 }
85 
87 void SalomeProc::init(bool start)
88 {
89  std::string value=getProperty("DefaultStudyID");
90  if(!value.empty())
91  {
92  //initialise Python module salome with the study id given by value
93  std::string cmd="import salome;salome.salome_init("+value+")";
94  PyGILState_STATE gstate = PyGILState_Ensure(); // acquire the Global Interpreter Lock
95  PyRun_SimpleString(cmd.c_str());
96  PyGILState_Release(gstate); // Release the Global Interpreter Lock
97  }
98  Proc::init(start);
99 }