1 // Copyright (C) 2006-2023 CEA, EDF
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.
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.
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
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 #include "SalomeProc.hxx"
22 #include "Runtime.hxx"
23 #include "TypeCode.hxx"
24 #include "Container.hxx"
25 #include "VisitorSaveSalomeSchema.hxx"
26 #include "Basics_Utils.hxx"
30 using namespace YACS::ENGINE;
32 SalomeProc::SalomeProc(const std::string& name):Proc(name)
34 // create default container with some default properties
35 Container* cont=createContainer("DefaultContainer");
36 cont->setProperty("name", "localhost");
37 cont->setProperty("container_name","FactoryServer");
41 TypeCode * SalomeProc::createInterfaceTc(const std::string& id, const std::string& name,
42 std::list<TypeCodeObjref *> ltc)
45 if(id == "") myName = "IDL:" + name + ":1.0";
47 return Proc::createInterfaceTc(myName,name,ltc);
49 TypeCode * SalomeProc::createStructTc(const std::string& id, const std::string& name)
52 if(id == "") myName = "IDL:" + name + ":1.0";
54 return Proc::createStructTc(myName,name);
57 SalomeProc::~SalomeProc()
61 //! Save Proc in XML schema file
63 * \param xmlSchemaFile: the file name
65 void SalomeProc::saveSchema(std::string xmlSchemaFile)
67 VisitorSaveSalomeSchema vss(this);
68 vss.openFileSchema(xmlSchemaFile);
70 vss.closeFileSchema();
73 //! Initialise the proc
74 void SalomeProc::init(bool start)
76 //initialise Python module salome with the study id given by value
77 std::string cmd="import salome;salome.salome_init()";
78 PyGILState_STATE gstate = PyGILState_Ensure(); // acquire the Global Interpreter Lock
79 PyRun_SimpleString(cmd.c_str());
80 PyGILState_Release(gstate); // Release the Global Interpreter Lock