Salome HOME
projects
/
modules
/
yacs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add "seqpyobj" and "ForEachLoop_pyobj" in the built-in YACS catalog.
[modules/yacs.git]
/
src
/
runtime
/
RuntimeSALOME.cxx
diff --git
a/src/runtime/RuntimeSALOME.cxx
b/src/runtime/RuntimeSALOME.cxx
index b20f46b96a06f0801fb2e51023dd8df9303df8d8..ab53fda574a0fe2e9e2a684a1f8219da0f672625 100644
(file)
--- a/
src/runtime/RuntimeSALOME.cxx
+++ b/
src/runtime/RuntimeSALOME.cxx
@@
-1,9
+1,9
@@
-// Copyright (C) 2006-201
3
CEA/DEN, EDF R&D
+// Copyright (C) 2006-201
5
CEA/DEN, EDF R&D
//
// 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
//
// 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.
+// 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
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
@@
-35,6
+35,7
@@
#include "TypeCode.hxx"
#include "WhileLoop.hxx"
#include "ForLoop.hxx"
#include "TypeCode.hxx"
#include "WhileLoop.hxx"
#include "ForLoop.hxx"
+#include "ForEachLoop.hxx"
#include "SalomeOptimizerLoop.hxx"
#include "Bloc.hxx"
#include "InputPort.hxx"
#include "SalomeOptimizerLoop.hxx"
#include "Bloc.hxx"
#include "InputPort.hxx"
@@
-50,11
+51,13
@@
//Components
#include "CORBAComponent.hxx"
#include "SalomeComponent.hxx"
//Components
#include "CORBAComponent.hxx"
#include "SalomeComponent.hxx"
+#include "SalomeHPComponent.hxx"
#include "SalomePythonComponent.hxx"
#include "CppComponent.hxx"
#include "SalomeContainer.hxx"
#include "CppContainer.hxx"
#include "SalomePythonComponent.hxx"
#include "CppComponent.hxx"
#include "SalomeContainer.hxx"
#include "CppContainer.hxx"
+#include "SalomeHPContainer.hxx"
//Nodes
#include "PythonNode.hxx"
//Nodes
#include "PythonNode.hxx"
@@
-122,11
+125,11
@@
using namespace std;
using namespace YACS::ENGINE;
using namespace std;
using namespace YACS::ENGINE;
-void RuntimeSALOME::setRuntime(long flags) // singleton creation (not thread safe!)
+void RuntimeSALOME::setRuntime(long flags
, int argc, char* argv[]
) // singleton creation (not thread safe!)
{
if (! Runtime::_singleton)
{
{
if (! Runtime::_singleton)
{
- RuntimeSALOME* r=new RuntimeSALOME(flags);
+ RuntimeSALOME* r=new RuntimeSALOME(flags
, argc, argv
);
Runtime::_singleton = r;
r->initBuiltins();
}
Runtime::_singleton = r;
r->initBuiltins();
}
@@
-177,12
+180,14
@@
void RuntimeSALOME::initBuiltins()
typeMap["seqboolvec"]= createSequenceTc("seqboolvec","seqboolvec",typeMap["boolvec"]);
std::list<TypeCodeObjref *> ltc;
typeMap["pyobj"]= createInterfaceTc("python:obj:1.0","pyobj",ltc);
typeMap["seqboolvec"]= createSequenceTc("seqboolvec","seqboolvec",typeMap["boolvec"]);
std::list<TypeCodeObjref *> ltc;
typeMap["pyobj"]= createInterfaceTc("python:obj:1.0","pyobj",ltc);
+ typeMap["seqpyobj"]= createSequenceTc("seqpyobj","seqpyobj",typeMap["pyobj"]);
+ composednodeMap["ForEachLoop_pyobj"]=createForEachLoop("ForEachLoop_pyobj",typeMap["pyobj"]);;
ENGINE::TypeCodeStruct *t = createStructTc("","Engines/dataref");
t->addMember("ref",_tc_string);
typeMap["dataref"]= t;
}
ENGINE::TypeCodeStruct *t = createStructTc("","Engines/dataref");
t->addMember("ref",_tc_string);
typeMap["dataref"]= t;
}
-RuntimeSALOME::RuntimeSALOME(long flags)
+RuntimeSALOME::RuntimeSALOME(long flags
, int argc, char* argv[]
)
{
// If all flags (apart the IsPyExt flags) are unset, force them to true
if ((flags - flags & RuntimeSALOME::IsPyExt) == 0)
{
// If all flags (apart the IsPyExt flags) are unset, force them to true
if ((flags - flags & RuntimeSALOME::IsPyExt) == 0)
@@
-209,7
+214,7
@@
RuntimeSALOME::RuntimeSALOME(long flags)
if (_usePython) _setOfImplementation.insert(PythonNode::IMPL_NAME);
if (_useCorba) _setOfImplementation.insert(CORBANode::IMPL_NAME);
if (_useXml) _setOfImplementation.insert(XmlNode::IMPL_NAME);
if (_usePython) _setOfImplementation.insert(PythonNode::IMPL_NAME);
if (_useCorba) _setOfImplementation.insert(CORBANode::IMPL_NAME);
if (_useXml) _setOfImplementation.insert(XmlNode::IMPL_NAME);
- init(flags);
+ init(flags
, argc, argv
);
}
RuntimeSALOME::~RuntimeSALOME()
}
RuntimeSALOME::~RuntimeSALOME()
@@
-233,10
+238,12
@@
RuntimeSALOME::~RuntimeSALOME()
* bit1 (UseXml) true if python nodes are needed
* bit1 (UseCpp) true if C++ nodes are needed
* bit1 (UseSalome) true if Salome nodes are needed
* bit1 (UseXml) true if python nodes are needed
* bit1 (UseCpp) true if C++ nodes are needed
* bit1 (UseSalome) true if Salome nodes are needed
+ * \param argc number of command line arguments (used to initialize the Python interpreter)
+ * \param argv command line arguments (used to initialize the Python interpreter)
*
*/
*
*/
-void RuntimeSALOME::init(long flags)
+void RuntimeSALOME::init(long flags
, int argc, char* argv[]
)
{
bool ispyext = flags & RuntimeSALOME::IsPyExt;
if (_useCorba)
{
bool ispyext = flags & RuntimeSALOME::IsPyExt;
if (_useCorba)
@@
-270,6
+277,16
@@
void RuntimeSALOME::init(long flags)
#else
Py_InitializeEx(0); // do not install signal handlers
#endif
#else
Py_InitializeEx(0); // do not install signal handlers
#endif
+ if (argc > 0 && argv != NULL)
+ PySys_SetArgv(argc, argv);
+ else
+ {
+ int pyArgc = 1;
+ char* pyArgv[1];
+ char defaultName[] = "SALOME_YACS_RUNTIME";
+ pyArgv[0] = defaultName;
+ PySys_SetArgv(pyArgc, pyArgv);
+ }
PyEval_InitThreads(); /* Create (and acquire) the interpreter lock (for threads)*/
PyEval_SaveThread(); /* Release the thread state */
//here we do not have the Global Interpreter Lock
PyEval_InitThreads(); /* Create (and acquire) the interpreter lock (for threads)*/
PyEval_SaveThread(); /* Release the thread state */
//here we do not have the Global Interpreter Lock
@@
-575,15
+592,19
@@
ComponentInstance* RuntimeSALOME::createComponentInstance(const std::string& nam
return new SalomePythonComponent(name);
else if (kind == CppComponent::KIND)
return new CppComponent(name);
return new SalomePythonComponent(name);
else if (kind == CppComponent::KIND)
return new CppComponent(name);
+ else if (kind == SalomeHPComponent::KIND)
+ return new SalomeHPComponent(name);
std::string msg="Component Instance kind ("+kind+") unknown";
throw Exception(msg);
}
Container *RuntimeSALOME::createContainer(const std::string& kind)
{
std::string msg="Component Instance kind ("+kind+") unknown";
throw Exception(msg);
}
Container *RuntimeSALOME::createContainer(const std::string& kind)
{
- if(kind == "" || kind == SalomeCo
mponent
::KIND)
+ if(kind == "" || kind == SalomeCo
ntainer
::KIND)
return new SalomeContainer;
return new SalomeContainer;
- else if (kind == CppComponent::KIND)
+ if(kind==SalomeHPContainer::KIND)
+ return new SalomeHPContainer;
+ else if (kind == CppContainer::KIND)
return new CppContainer;
std::string msg="Container kind ("+kind+") unknown";
throw Exception(msg);
return new CppContainer;
std::string msg="Container kind ("+kind+") unknown";
throw Exception(msg);