1 %module libMedCorba_Swig
3 %include "libMEDMEM_Swig.i"
6 #include "MEDMEM_convert.hxx"
7 #include "MEDMEM_Family_i.hxx"
8 #include "MEDMEM_FieldDouble_i.hxx"
9 #include "MEDMEM_Field_i.hxx"
10 #include "MEDMEM_FieldInt_i.hxx"
11 #include "MEDMEM_Group_i.hxx"
12 #include "MEDMEM_Med_i.hxx"
13 #include "MEDMEM_Mesh_i.hxx"
14 #include "MEDMEM_Support_i.hxx"
15 // #include "MEDMEM_SWIG_FieldDouble.hxx"
16 // #include "MEDMEM_SWIG_FieldInt.hxx"
18 using namespace MEDMEM;
19 using namespace MED_EN;
23 typemap in and out for Corba Objects (MESH, FIELDDOUBLE, FIELDINT and
24 Support) between C++ and Python
26 WARNING (NB) to the user of those typmaps (SWIG wrapping for C++ routines
27 -------------------------------------------------------------------------
29 You have to be quite careful about the SWIG version your are currently
30 using, because CORBA pointeur _ptr or _var could be wrapped by SWIG using
31 their reference rather than the pointeur itself (differences detected using
32 SWIG 1.1.x, SWIG 1.3.13 and SWIG 1.3.17)
35 %typemap(python,out) SALOME_MED::MESH_ptr, SALOME_MED::FIELDDOUBLE_ptr,
36 SALOME_MED::FIELDINT_ptr, SALOME_MED::SUPPORT_ptr,
37 const SALOME_MED::MESH_ptr, const SALOME_MED::FIELDDOUBLE_ptr,
38 const SALOME_MED::FIELDINT_ptr, const SALOME_MED::SUPPORT_ptr
40 MESSAGE("typemap out sur Objet Corba version ptr");
44 // Get the orb corba python
46 PyObject* pdict = PyDict_New();
47 PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
48 PyRun_String("import CORBA", Py_single_input, pdict, pdict);
50 PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
53 PyObject* orb = PyDict_GetItemString(pdict, "o");
55 // Get the orb Corba C++
60 CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
62 string s = ORB->object_to_string($1);
64 PyObject * tmp = PyString_FromString(s.c_str());
66 $result = PyObject_CallMethod(orb, "string_to_object", "O", tmp);
70 %typemap(python,out) SALOME_MED::MESH_var, SALOME_MED::FIELDDOUBLE_var,
71 SALOME_MED::FIELDINT_var, SALOME_MED::SUPPORT_var,
72 const SALOME_MED::MESH_var, const SALOME_MED::FIELDDOUBLE_var,
73 const SALOME_MED::FIELDINT_var, const SALOME_MED::SUPPORT_var
75 MESSAGE("typemap out sur Objet Corba version var");
77 // Get the orb corba python
79 PyObject* pdict = PyDict_New();
80 PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
81 PyRun_String("import CORBA", Py_single_input, pdict, pdict);
83 PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
86 PyObject* orb = PyDict_GetItemString(pdict, "o");
88 // Get the orb Corba C++
93 CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
95 string s = ORB->object_to_string(*$1);
97 PyObject * tmp = PyString_FromString(s.c_str());
99 $result = PyObject_CallMethod(orb, "string_to_object", "O", tmp);
103 %typemap(python,in) const SALOME_MED::MESH_ptr &, SALOME_MED::MESH_ptr &
106 MESSAGE("typemap in sur Objet Corba MESH avec reference");
108 PyObject* pdict = PyDict_New();
109 PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
110 PyRun_String("import CORBA", Py_single_input, pdict, pdict);
112 PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
115 PyObject* orb = PyDict_GetItemString(pdict, "o");
117 // Ask omniORBpy to transform MESH (python Corba) ptr to IOR string
120 = PyObject_CallMethod(orb, "object_to_string", "O", $input);
122 if (iorMesh == Py_None)
124 char * s = PyString_AsString(PyObject_Str(iorMesh));
126 // Ask omniORB to convert IOR string to MESH (C++ Corba) ptr
130 char **argv = &xargv;
131 CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
132 CORBA::Object_var O = ORB->string_to_object(s);
134 SALOME_MED::MESH_ptr t = SALOME_MED::MESH::_narrow(O);
140 %typemap(python,in) const SALOME_MED::FIELDDOUBLE_ptr &,
141 SALOME_MED::FIELDDOUBLE_ptr &
144 MESSAGE("typemap in sur Objet Corba FIELDDOUBLE avec reference");
146 PyObject* pdict = PyDict_New();
147 PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
148 PyRun_String("import CORBA", Py_single_input, pdict, pdict);
150 PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
153 PyObject* orb = PyDict_GetItemString(pdict, "o");
155 // Ask omniORBpy to transform FIELDDOUBLE (python Corba) ptr to IOR string
157 PyObject* iorFieldDouble
158 = PyObject_CallMethod(orb, "object_to_string", "O", $input);
160 if (iorFieldDouble == Py_None)
162 char * s = PyString_AsString(PyObject_Str(iorFieldDouble));
164 // Ask omniORB to convert IOR string to FIELDDOUBLE (C++ Corba) ptr
168 char **argv = &xargv;
169 CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
170 CORBA::Object_var O = ORB->string_to_object(s);
172 SALOME_MED::FIELDDOUBLE_ptr t = SALOME_MED::FIELDDOUBLE::_narrow(O);
178 %typemap(python,in) const SALOME_MED::FIELDINT_ptr &,
179 SALOME_MED::FIELDINT_ptr &
182 MESSAGE("typemap in sur Objet Corba FIELDINT avec reference");
184 PyObject* pdict = PyDict_New();
185 PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
186 PyRun_String("import CORBA", Py_single_input, pdict, pdict);
188 PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
191 PyObject* orb = PyDict_GetItemString(pdict, "o");
193 // Ask omniORBpy to transform FIELDINT (python Corba) ptr to IOR string
195 PyObject* iorFieldInt
196 = PyObject_CallMethod(orb, "object_to_string", "O", $input);
198 if (iorFieldInt == Py_None)
200 char * s = PyString_AsString(PyObject_Str(iorFieldInt));
202 // Ask omniORB to convert IOR string to FIELDINT (C++ Corba) ptr
206 char **argv = &xargv;
207 CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
208 CORBA::Object_var O = ORB->string_to_object(s);
210 SALOME_MED::FIELDINT_ptr t = SALOME_MED::FIELDINT::_narrow(O);
216 %typemap(python,in) const SALOME_MED::FIELDDOUBLE_ptr,
217 SALOME_MED::FIELDDOUBLE_ptr
220 MESSAGE("typemap in sur Objet Corba FIELDDOUBLE sans reference");
222 PyObject* pdict = PyDict_New();
223 PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
224 PyRun_String("import CORBA", Py_single_input, pdict, pdict);
226 PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
229 PyObject* orb = PyDict_GetItemString(pdict, "o");
231 // Ask omniORBpy to transform FIELDDOUBLE (python Corba) ptr to IOR string
233 PyObject* iorFieldDouble
234 = PyObject_CallMethod(orb, "object_to_string", "O", $input);
236 if (iorFieldDouble == Py_None)
238 char * s = PyString_AsString(PyObject_Str(iorFieldDouble));
240 // Ask omniORB to convert IOR string to FIELDDOUBLE (C++ Corba) ptr
244 char **argv = &xargv;
245 CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
246 CORBA::Object_var O = ORB->string_to_object(s);
248 SALOME_MED::FIELDDOUBLE_ptr t = SALOME_MED::FIELDDOUBLE::_narrow(O);
254 %typemap(python,in) const SALOME_MED::FIELDINT_ptr,
255 SALOME_MED::FIELDINT_ptr
258 MESSAGE("typemap in sur Objet Corba FIELDINT sans reference");
260 PyObject* pdict = PyDict_New();
261 PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
262 PyRun_String("import CORBA", Py_single_input, pdict, pdict);
264 PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
267 PyObject* orb = PyDict_GetItemString(pdict, "o");
269 // Ask omniORBpy to transform FIELDINT (python Corba) ptr to IOR string
271 PyObject* iorFieldInt
272 = PyObject_CallMethod(orb, "object_to_string", "O", $input);
274 if (iorFieldInt == Py_None)
276 char * s = PyString_AsString(PyObject_Str(iorFieldInt));
278 // Ask omniORB to convert IOR string to FIELDINT (C++ Corba) ptr
282 char **argv = &xargv;
283 CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
284 CORBA::Object_var O = ORB->string_to_object(s);
286 SALOME_MED::FIELDINT_ptr t = SALOME_MED::FIELDINT::_narrow(O);
292 %typemap(python,in) const SALOME_MED::SUPPORT_ptr &, SALOME_MED::SUPPORT_ptr &
295 MESSAGE("typemap in sur Objet Corba SUPPORT avec reference");
297 PyObject* pdict = PyDict_New();
298 PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
299 PyRun_String("import CORBA", Py_single_input, pdict, pdict);
301 PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
304 PyObject* orb = PyDict_GetItemString(pdict, "o");
306 // Ask omniORBpy to transform SUPPORT (python Corba) ptr to IOR string
309 = PyObject_CallMethod(orb, "object_to_string", "O", $input);
311 if (iorSupport == Py_None)
313 char * s = PyString_AsString(PyObject_Str(iorSupport));
315 // Ask omniORB to convert IOR string to SUPPORT (C++ Corba) ptr
319 char **argv = &xargv;
320 CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
321 CORBA::Object_var O = ORB->string_to_object(s);
323 SALOME_MED::SUPPORT_ptr t = SALOME_MED::SUPPORT::_narrow(O);
329 %typemap(python,in) const SALOME_MED::SUPPORT_ptr, SALOME_MED::SUPPORT_ptr
332 MESSAGE("typemap in sur Objet Corba SUPPORT sans reference");
336 PyObject* pdict = PyDict_New();
337 PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
338 PyRun_String("import CORBA", Py_single_input, pdict, pdict);
340 PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
343 PyObject* orb = PyDict_GetItemString(pdict, "o");
345 // Ask omniORBpy to transform SUPPORT (python Corba) ptr to IOR string
348 = PyObject_CallMethod(orb, "object_to_string", "O", $input);
350 if (iorSupport == Py_None)
352 char * s = PyString_AsString(PyObject_Str(iorSupport));
354 // Ask omniORB to convert IOR string to SUPPORT (C++ Corba) ptr
358 char **argv = &xargv;
359 CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
360 CORBA::Object_var O = ORB->string_to_object(s);
362 SALOME_MED::SUPPORT_ptr t = SALOME_MED::SUPPORT::_narrow(O);
368 %typemap(python,in) const SALOME_MED::MESH_ptr, SALOME_MED::MESH_ptr
371 MESSAGE("typemap in sur Objet Corba MESH sans reference");
375 PyObject* pdict = PyDict_New();
376 PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
377 PyRun_String("import CORBA", Py_single_input, pdict, pdict);
379 PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
382 PyObject* orb = PyDict_GetItemString(pdict, "o");
384 // Ask omniORBpy to transform MESH (python Corba) ptr to IOR string
387 = PyObject_CallMethod(orb, "object_to_string", "O", $input);
389 if (iorMesh == Py_None)
391 char * s = PyString_AsString(PyObject_Str(iorMesh));
393 // Ask omniORB to convert IOR string to MESH (C++ Corba) ptr
397 char **argv = &xargv;
398 CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
399 CORBA::Object_var O = ORB->string_to_object(s);
401 SALOME_MED::MESH_ptr t = SALOME_MED::MESH::_narrow(O);
407 %typemap(python,in) const SALOME_MED::FIELDDOUBLE_ptr,
408 SALOME_MED::FIELDDOUBLE_ptr &
411 MESSAGE("typemap in sur Objet Corba FIELDDOUBLE sans reference");
415 PyObject* pdict = PyDict_New();
416 PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
417 PyRun_String("import CORBA", Py_single_input, pdict, pdict);
419 PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
422 PyObject* orb = PyDict_GetItemString(pdict, "o");
424 // Ask omniORBpy to transform FIELDDOUBLE (python Corba) ptr to IOR string
426 PyObject* iorFieldDouble
427 = PyObject_CallMethod(orb, "object_to_string", "O", $input);
429 if (iorFieldDouble == Py_None)
431 char * s = PyString_AsString(PyObject_Str(iorFieldDouble));
433 // Ask omniORB to convert IOR string to FIELDDOUBLE (C++ Corba) ptr
437 char **argv = &xargv;
438 CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
439 CORBA::Object_var O = ORB->string_to_object(s);
441 SALOME_MED::FIELDDOUBLE_ptr t = SALOME_MED::FIELDDOUBLE::_narrow(O);
447 %typemap(python,in) const SALOME_MED::FIELDINT_ptr,
448 SALOME_MED::FIELDINT_ptr
451 MESSAGE("typemap in sur Objet Corba FIELDINT sans reference");
455 PyObject* pdict = PyDict_New();
456 PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
457 PyRun_String("import CORBA", Py_single_input, pdict, pdict);
459 PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
462 PyObject* orb = PyDict_GetItemString(pdict, "o");
464 // Ask omniORBpy to transform FIELDINT (python Corba) ptr to IOR string
466 PyObject* iorFieldInt
467 = PyObject_CallMethod(orb, "object_to_string", "O", $input);
469 if (iorFieldInt == Py_None)
471 char * s = PyString_AsString(PyObject_Str(iorFieldInt));
473 // Ask omniORB to convert IOR string to FIELDINT (C++ Corba) ptr
477 char **argv = &xargv;
478 CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
479 CORBA::Object_var O = ORB->string_to_object(s);
481 SALOME_MED::FIELDINT_ptr t = SALOME_MED::FIELDINT::_narrow(O);
487 SALOME_MED::FIELDDOUBLE_ptr createCorbaFieldDouble(SALOME_MED::SUPPORT_ptr,
489 bool ownCppPtr=false);
491 SALOME_MED::FIELDINT_ptr createCorbaFieldInt(SALOME_MED::SUPPORT_ptr,
493 bool ownCppPtr=false);
495 SALOME_MED::SUPPORT_ptr createCorbaSupport(const SUPPORT *);
497 FIELDDOUBLE * createLocalFieldDouble(const int, const int);
499 FIELDINT * createLocalFieldInt(const int, const int);
501 SALOME_MED::MESH_ptr createCorbaMesh(MESH * mesh);
504 SALOME_MED::FIELDDOUBLE_ptr createCorbaFieldDouble(SALOME_MED::SUPPORT_ptr mySupportIOR,FIELDDOUBLE * field, bool ownCppPtr=false)
506 BEGIN_OF("SALOME_MED::FIELDDOUBLE_ptr createCorbaFieldDouble from libMedCorba_Swig");
510 // MT : Keep the local field name
511 // field->setName("Corba Double Field");
513 field->setDescription("Got From A Local One");
515 FIELDDOUBLE_i * fieldimpl = new FIELDDOUBLE_i(field, ownCppPtr);
517 SALOME_MED::FIELDDOUBLE_ptr fieldcorba2 = fieldimpl->_this();
523 END_OF("SALOME_MED::FIELDDOUBLE_ptr createCorbaFieldDouble from libMedCorba_Swig");
525 MESSAGE("Test de tirarge sur le pointeur Corba Field dans le cxx");
527 char * name = fieldcorba2->getName();
536 SALOME_MED::FIELDINT_ptr createCorbaFieldInt(SALOME_MED::SUPPORT_ptr mySupportIOR,FIELDINT * field, bool ownCppPtr=false)
538 BEGIN_OF("SALOME_MED::FIELDINT_ptr createCorbaFieldInt from libMedCorba_Swig");
542 // MT : Keep the local field name
543 // field->setName("Corba Integer Field");
545 field->setDescription("Got From A Local One");
547 FIELDINT_i * fieldimpl = new FIELDINT_i(field, ownCppPtr);
549 SALOME_MED::FIELDINT_ptr fieldcorba2 = fieldimpl->_this();
555 END_OF("SALOME_MED::FIELDINT_ptr createCorbaFieldInt from libMedCorba_Swig");
556 MESSAGE("Test de tirarge sur le pointeur Corba Field dans le cxx");
558 char * name = fieldcorba2->getName();
567 SALOME_MED::SUPPORT_ptr createCorbaSupport(const SUPPORT * const support)
569 BEGIN_OF("SALOME_MED::SUPPORT_ptr createCorbaSupport from libMedCorba_Swig");
573 SUPPORT_i * supportimpl = new SUPPORT_i(support);
575 SALOME_MED::SUPPORT_ptr supportcorba =
576 supportimpl->POA_SALOME_MED::SUPPORT::_this();
580 SCRUTE(supportcorba);
582 END_OF("SALOME_MED::SUPPORT_ptr createCorbaSupport from libMedCorba_Swig");
587 SALOME_MED::MESH_ptr createCorbaMesh(MESH * mesh)
589 BEGIN_OF("SALOME_MED::MESH_ptr createCorbaMesh from libMedCorba_Swig");
593 MESH_i * meshimpl = new MESH_i(mesh);
595 SALOME_MED::MESH_ptr meshcorba =
596 meshimpl->POA_SALOME_MED::MESH::_this();
602 END_OF("SALOME_MED::MESH_ptr createCorbaMesh from libMedCorba_Swig");
607 FIELDDOUBLE * createLocalFieldDouble(const int NumberOfComponents,
608 const int LengthValue)
610 BEGIN_OF("FIELDDOUBLE createLocalFieldDouble from libMedCorba_Swig");
612 SCRUTE(NumberOfComponents);
615 //FIELD<double> * fieldloc = new FIELD<double>();
616 FIELDDOUBLE * fieldloc = new FIELDDOUBLE();
617 fieldloc -> allocValue(NumberOfComponents,LengthValue);
619 END_OF("FIELDDOUBLE createLocalFieldDouble from libMedCorba_Swig");
624 FIELDINT * createLocalFieldInt(const int NumberOfComponents,
625 const int LengthValue)
627 BEGIN_OF("FIELDINT createLocalFieldInt from libMedCorba_Swig");
629 SCRUTE(NumberOfComponents);
632 //FIELD<int> * fieldloc = new FIELD<int>();
633 FIELDINT * fieldloc = new FIELDINT();
634 fieldloc -> allocValue(NumberOfComponents,LengthValue);
636 END_OF("FIELDDOUBLE createLocalFieldInt from libMedCorba_Swig");