Salome HOME
Updated copyright comment
[modules/yacs.git] / src / runtime_swig / SALOMERuntime.i
index b06663b1946abd5a86623b275d166d938ec73106..40a200ad244b428f66c54499ffddeadbc3dd37e8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2006-2014  CEA/DEN, EDF R&D
+// Copyright (C) 2006-2024  CEA, EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 #include "TypeConversions.hxx"
 #include "TypeCode.hxx"
 #include "VisitorSaveSalomeSchema.hxx"
+#include "VisitorSalomeSaveState.hxx"
 #include "SalomeOptimizerLoop.hxx"
 #include "DistributedPythonNode.hxx"
 #include "PyOptimizerAlg.hxx"
 #include "PyStdout.hxx"
+#include "ExecutorSwig.hxx"
 #include <sstream>
+#include "Catalog.hxx"
 %}
 
 // ----------------------------------------------------------------------------
   if (!omnipy)
   {
     PyErr_SetString(PyExc_ImportError,(char*)"Cannot import _omnipy");
-    return;
+    return NULL;
   }
   PyObject* pyapi = PyObject_GetAttrString(omnipy, (char*)"API");
-  api = (omniORBPYAPI*)PyCObject_AsVoidPtr(pyapi);
+  api = (omniORBpyAPI*)PyCapsule_GetPointer(pyapi,"_omnipy.API");
   Py_DECREF(pyapi);
 %}
 
+%{
+static PyObject *convertContainer2(YACS::ENGINE::Container *cont, int owner=0)
+{
+  if(!cont)
+    return SWIG_NewPointerObj((void*)cont,SWIGTYPE_p_YACS__ENGINE__Container, owner);
+  if(dynamic_cast<YACS::ENGINE::SalomeHPContainer *>(cont))
+    {
+      return SWIG_NewPointerObj((void*)dynamic_cast<YACS::ENGINE::SalomeHPContainer *>(cont),SWIGTYPE_p_YACS__ENGINE__SalomeHPContainer, owner);
+    }
+  if(dynamic_cast<YACS::ENGINE::SalomeContainer *>(cont))
+    {
+      return SWIG_NewPointerObj((void*)dynamic_cast<YACS::ENGINE::SalomeContainer *>(cont),SWIGTYPE_p_YACS__ENGINE__SalomeContainer, owner);
+    }
+  return SWIG_NewPointerObj((void*)cont,SWIGTYPE_p_YACS__ENGINE__Container, owner);
+}
+%}
+
 // ----------------------------------------------------------------------------
 
 #ifdef SWIGPYTHON
 %include "SalomeOptimizerLoop.hxx"
 %include "DistributedPythonNode.hxx"
 
+namespace YACS
+{
+  namespace ENGINE
+  {
+    void schemaSaveState(Proc* proc,
+                         Executor* exec,
+                         const std::string& xmlSchemaFile);
+  }
+}
+
+
 %extend YACS::ENGINE::OutputPresetPort
 {
   void setDataPy(PyObject *ob)
 // becomes a real derived class, this will have to be changed.
 %rename(OptimizerAlgSync) YACS::ENGINE::PyOptimizerAlgBase;
 %rename(OptimizerAlgASync) YACS::ENGINE::PyOptimizerAlgASync;
+
 %include "PyOptimizerAlg.hxx"
+
+%newobject YACS::ENGINE::RuntimeSALOME::createAnyPyObject;
+
+%extend YACS::ENGINE::RuntimeSALOME
+{
+  PyObject *createContainer(const std::string& kind="")
+  {
+    YACS::ENGINE::Container *ret(self->createContainer(kind));
+    return convertContainer2(ret,SWIG_POINTER_OWN | 0);
+  }
+
+  Any* createAnyPyObject(PyObject * pyobj)
+  {
+    return convertPyObjectNeutral(self->getBuiltinCatalog()->_typeMap["pyobj"],
+                                  pyobj);
+  }
+}