Salome HOME
Merge remote-tracking branch 'origin/master' into V9_dev
[modules/yacs.git] / src / runtime_swig / SALOMERuntime.i
index c28691cd327c3a360bb853b61da13bd0aa8f5512..95103b3a29388bbe1ae3afae97fc7eb433fc58ab 100644 (file)
   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
@@ -140,12 +157,9 @@ namespace YACS
 {
   namespace ENGINE
   {
-    class SchemaSaveState
-    {
-    public:
-      SchemaSaveState(Proc* proc, Executor* exec);
-      virtual void save(std::string xmlSchemaFile);
-    };
+    void schemaSaveState(Proc* proc,
+                         Executor* exec,
+                         const std::string& xmlSchemaFile);
   }
 }
 
@@ -214,3 +228,12 @@ namespace YACS
 %rename(OptimizerAlgSync) YACS::ENGINE::PyOptimizerAlgBase;
 %rename(OptimizerAlgASync) YACS::ENGINE::PyOptimizerAlgASync;
 %include "PyOptimizerAlg.hxx"
+
+%extend YACS::ENGINE::RuntimeSALOME
+{
+  PyObject *createContainer(const std::string& kind="")
+  {
+    YACS::ENGINE::Container *ret(self->createContainer(kind));
+    return convertContainer2(ret,SWIG_POINTER_OWN | 0);
+  }
+}