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"
20 typemap in and out for Corba Objects (MESH, FIELDDOUBLE, FIELDINT and
21 Support) between C++ and Python
23 WARNING (NB) to the user of those typmaps (SWIG wrapping for C++ routines
24 -------------------------------------------------------------------------
26 You have to be quite careful about the SWIG version your are currently
27 using, because CORBA pointeur _ptr or _var could be wrapped by SWIG using
28 their reference rather than the pointeur itself (differences detected using
29 SWIG 1.1.x, SWIG 1.3.13 and SWIG 1.3.17)
32 %typemap(python,out) SALOME_MED::MESH_ptr, SALOME_MED::FIELDDOUBLE_ptr,
33 SALOME_MED::FIELDINT_ptr, SALOME_MED::SUPPORT_ptr,
34 const SALOME_MED::MESH_ptr, const SALOME_MED::FIELDDOUBLE_ptr,
35 const SALOME_MED::FIELDINT_ptr, const SALOME_MED::SUPPORT_ptr
37 MESSAGE("typemap out sur Objet Corba version ptr");
41 // Get the orb corba python
43 PyObject* pdict = PyDict_New();
44 PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
45 PyRun_String("import CORBA", Py_single_input, pdict, pdict);
47 PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
50 PyObject* orb = PyDict_GetItemString(pdict, "o");
52 // Get the orb Corba C++
57 CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
59 string s = ORB->object_to_string($1);
61 PyObject * tmp = PyString_FromString(s.c_str());
63 $result = PyObject_CallMethod(orb, "string_to_object", "O", tmp);
67 %typemap(python,out) SALOME_MED::MESH_var, SALOME_MED::FIELDDOUBLE_var,
68 SALOME_MED::FIELDINT_var, SALOME_MED::SUPPORT_var,
69 const SALOME_MED::MESH_var, const SALOME_MED::FIELDDOUBLE_var,
70 const SALOME_MED::FIELDINT_var, const SALOME_MED::SUPPORT_var
72 MESSAGE("typemap out sur Objet Corba version var");
74 // Get the orb corba python
76 PyObject* pdict = PyDict_New();
77 PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
78 PyRun_String("import CORBA", Py_single_input, pdict, pdict);
80 PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
83 PyObject* orb = PyDict_GetItemString(pdict, "o");
85 // Get the orb Corba C++
90 CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
92 string s = ORB->object_to_string(*$1);
94 PyObject * tmp = PyString_FromString(s.c_str());
96 $result = PyObject_CallMethod(orb, "string_to_object", "O", tmp);
100 %typemap(python,in) const SALOME_MED::MESH_ptr &, SALOME_MED::MESH_ptr &
103 MESSAGE("typemap in sur Objet Corba MESH avec reference");
105 PyObject* pdict = PyDict_New();
106 PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
107 PyRun_String("import CORBA", Py_single_input, pdict, pdict);
109 PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
112 PyObject* orb = PyDict_GetItemString(pdict, "o");
114 // Ask omniORBpy to transform MESH (python Corba) ptr to IOR string
117 = PyObject_CallMethod(orb, "object_to_string", "O", $input);
119 if (iorMesh == Py_None)
121 char * s = PyString_AsString(PyObject_Str(iorMesh));
123 // Ask omniORB to convert IOR string to MESH (C++ Corba) ptr
127 char **argv = &xargv;
128 CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
129 CORBA::Object_var O = ORB->string_to_object(s);
131 SALOME_MED::MESH_ptr t = SALOME_MED::MESH::_narrow(O);
137 %typemap(python,in) const SALOME_MED::FIELDDOUBLE_ptr &,
138 SALOME_MED::FIELDDOUBLE_ptr &
141 MESSAGE("typemap in sur Objet Corba FIELDDOUBLE avec reference");
143 PyObject* pdict = PyDict_New();
144 PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
145 PyRun_String("import CORBA", Py_single_input, pdict, pdict);
147 PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
150 PyObject* orb = PyDict_GetItemString(pdict, "o");
152 // Ask omniORBpy to transform FIELDDOUBLE (python Corba) ptr to IOR string
154 PyObject* iorFieldDouble
155 = PyObject_CallMethod(orb, "object_to_string", "O", $input);
157 if (iorFieldDouble == Py_None)
159 char * s = PyString_AsString(PyObject_Str(iorFieldDouble));
161 // Ask omniORB to convert IOR string to FIELDDOUBLE (C++ Corba) ptr
165 char **argv = &xargv;
166 CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
167 CORBA::Object_var O = ORB->string_to_object(s);
169 SALOME_MED::FIELDDOUBLE_ptr t = SALOME_MED::FIELDDOUBLE::_narrow(O);
175 %typemap(python,in) const SALOME_MED::FIELDINT_ptr &,
176 SALOME_MED::FIELDINT_ptr &
179 MESSAGE("typemap in sur Objet Corba FIELDINT avec reference");
181 PyObject* pdict = PyDict_New();
182 PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
183 PyRun_String("import CORBA", Py_single_input, pdict, pdict);
185 PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
188 PyObject* orb = PyDict_GetItemString(pdict, "o");
190 // Ask omniORBpy to transform FIELDINT (python Corba) ptr to IOR string
192 PyObject* iorFieldInt
193 = PyObject_CallMethod(orb, "object_to_string", "O", $input);
195 if (iorFieldInt == Py_None)
197 char * s = PyString_AsString(PyObject_Str(iorFieldInt));
199 // Ask omniORB to convert IOR string to FIELDINT (C++ Corba) ptr
203 char **argv = &xargv;
204 CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
205 CORBA::Object_var O = ORB->string_to_object(s);
207 SALOME_MED::FIELDINT_ptr t = SALOME_MED::FIELDINT::_narrow(O);
213 %typemap(python,in) const SALOME_MED::FIELDDOUBLE_ptr,
214 SALOME_MED::FIELDDOUBLE_ptr
217 MESSAGE("typemap in sur Objet Corba FIELDDOUBLE sans reference");
219 PyObject* pdict = PyDict_New();
220 PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
221 PyRun_String("import CORBA", Py_single_input, pdict, pdict);
223 PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
226 PyObject* orb = PyDict_GetItemString(pdict, "o");
228 // Ask omniORBpy to transform FIELDDOUBLE (python Corba) ptr to IOR string
230 PyObject* iorFieldDouble
231 = PyObject_CallMethod(orb, "object_to_string", "O", $input);
233 if (iorFieldDouble == Py_None)
235 char * s = PyString_AsString(PyObject_Str(iorFieldDouble));
237 // Ask omniORB to convert IOR string to FIELDDOUBLE (C++ Corba) ptr
241 char **argv = &xargv;
242 CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
243 CORBA::Object_var O = ORB->string_to_object(s);
245 SALOME_MED::FIELDDOUBLE_ptr t = SALOME_MED::FIELDDOUBLE::_narrow(O);
251 %typemap(python,in) const SALOME_MED::FIELDINT_ptr,
252 SALOME_MED::FIELDINT_ptr
255 MESSAGE("typemap in sur Objet Corba FIELDINT sans reference");
257 PyObject* pdict = PyDict_New();
258 PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
259 PyRun_String("import CORBA", Py_single_input, pdict, pdict);
261 PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
264 PyObject* orb = PyDict_GetItemString(pdict, "o");
266 // Ask omniORBpy to transform FIELDINT (python Corba) ptr to IOR string
268 PyObject* iorFieldInt
269 = PyObject_CallMethod(orb, "object_to_string", "O", $input);
271 if (iorFieldInt == Py_None)
273 char * s = PyString_AsString(PyObject_Str(iorFieldInt));
275 // Ask omniORB to convert IOR string to FIELDINT (C++ Corba) ptr
279 char **argv = &xargv;
280 CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
281 CORBA::Object_var O = ORB->string_to_object(s);
283 SALOME_MED::FIELDINT_ptr t = SALOME_MED::FIELDINT::_narrow(O);
289 %typemap(python,in) const SALOME_MED::SUPPORT_ptr &, SALOME_MED::SUPPORT_ptr &
292 MESSAGE("typemap in sur Objet Corba SUPPORT avec reference");
294 PyObject* pdict = PyDict_New();
295 PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
296 PyRun_String("import CORBA", Py_single_input, pdict, pdict);
298 PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
301 PyObject* orb = PyDict_GetItemString(pdict, "o");
303 // Ask omniORBpy to transform SUPPORT (python Corba) ptr to IOR string
306 = PyObject_CallMethod(orb, "object_to_string", "O", $input);
308 if (iorSupport == Py_None)
310 char * s = PyString_AsString(PyObject_Str(iorSupport));
312 // Ask omniORB to convert IOR string to SUPPORT (C++ Corba) ptr
316 char **argv = &xargv;
317 CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
318 CORBA::Object_var O = ORB->string_to_object(s);
320 SALOME_MED::SUPPORT_ptr t = SALOME_MED::SUPPORT::_narrow(O);
326 %typemap(python,in) const SALOME_MED::SUPPORT_ptr, SALOME_MED::SUPPORT_ptr
329 MESSAGE("typemap in sur Objet Corba SUPPORT sans reference");
333 PyObject* pdict = PyDict_New();
334 PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
335 PyRun_String("import CORBA", Py_single_input, pdict, pdict);
337 PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
340 PyObject* orb = PyDict_GetItemString(pdict, "o");
342 // Ask omniORBpy to transform SUPPORT (python Corba) ptr to IOR string
345 = PyObject_CallMethod(orb, "object_to_string", "O", $input);
347 if (iorSupport == Py_None)
349 char * s = PyString_AsString(PyObject_Str(iorSupport));
351 // Ask omniORB to convert IOR string to SUPPORT (C++ Corba) ptr
355 char **argv = &xargv;
356 CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
357 CORBA::Object_var O = ORB->string_to_object(s);
359 SALOME_MED::SUPPORT_ptr t = SALOME_MED::SUPPORT::_narrow(O);
365 %typemap(python,in) const SALOME_MED::MESH_ptr, SALOME_MED::MESH_ptr
368 MESSAGE("typemap in sur Objet Corba MESH sans reference");
372 PyObject* pdict = PyDict_New();
373 PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
374 PyRun_String("import CORBA", Py_single_input, pdict, pdict);
376 PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
379 PyObject* orb = PyDict_GetItemString(pdict, "o");
381 // Ask omniORBpy to transform MESH (python Corba) ptr to IOR string
384 = PyObject_CallMethod(orb, "object_to_string", "O", $input);
386 if (iorMesh == Py_None)
388 char * s = PyString_AsString(PyObject_Str(iorMesh));
390 // Ask omniORB to convert IOR string to MESH (C++ Corba) ptr
394 char **argv = &xargv;
395 CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
396 CORBA::Object_var O = ORB->string_to_object(s);
398 SALOME_MED::MESH_ptr t = SALOME_MED::MESH::_narrow(O);
404 %typemap(python,in) const SALOME_MED::FIELDDOUBLE_ptr,
405 SALOME_MED::FIELDDOUBLE_ptr &
408 MESSAGE("typemap in sur Objet Corba FIELDDOUBLE sans reference");
412 PyObject* pdict = PyDict_New();
413 PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
414 PyRun_String("import CORBA", Py_single_input, pdict, pdict);
416 PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
419 PyObject* orb = PyDict_GetItemString(pdict, "o");
421 // Ask omniORBpy to transform FIELDDOUBLE (python Corba) ptr to IOR string
423 PyObject* iorFieldDouble
424 = PyObject_CallMethod(orb, "object_to_string", "O", $input);
426 if (iorFieldDouble == Py_None)
428 char * s = PyString_AsString(PyObject_Str(iorFieldDouble));
430 // Ask omniORB to convert IOR string to FIELDDOUBLE (C++ Corba) ptr
434 char **argv = &xargv;
435 CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
436 CORBA::Object_var O = ORB->string_to_object(s);
438 SALOME_MED::FIELDDOUBLE_ptr t = SALOME_MED::FIELDDOUBLE::_narrow(O);
444 %typemap(python,in) const SALOME_MED::FIELDINT_ptr,
445 SALOME_MED::FIELDINT_ptr
448 MESSAGE("typemap in sur Objet Corba FIELDINT sans reference");
452 PyObject* pdict = PyDict_New();
453 PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
454 PyRun_String("import CORBA", Py_single_input, pdict, pdict);
456 PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
459 PyObject* orb = PyDict_GetItemString(pdict, "o");
461 // Ask omniORBpy to transform FIELDINT (python Corba) ptr to IOR string
463 PyObject* iorFieldInt
464 = PyObject_CallMethod(orb, "object_to_string", "O", $input);
466 if (iorFieldInt == Py_None)
468 char * s = PyString_AsString(PyObject_Str(iorFieldInt));
470 // Ask omniORB to convert IOR string to FIELDINT (C++ Corba) ptr
474 char **argv = &xargv;
475 CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
476 CORBA::Object_var O = ORB->string_to_object(s);
478 SALOME_MED::FIELDINT_ptr t = SALOME_MED::FIELDINT::_narrow(O);
484 SALOME_MED::FIELDDOUBLE_ptr createCorbaFieldDouble(SALOME_MED::SUPPORT_ptr,
486 bool ownCppPtr=false);
488 SALOME_MED::FIELDINT_ptr createCorbaFieldInt(SALOME_MED::SUPPORT_ptr,
490 bool ownCppPtr=false);
492 SALOME_MED::SUPPORT_ptr createCorbaSupport(const SUPPORT *);
494 FIELDDOUBLE * createLocalFieldDouble(const int, const int);
496 FIELDINT * createLocalFieldInt(const int, const int);
498 SALOME_MED::MESH_ptr createCorbaMesh(MESH * mesh);
501 SALOME_MED::FIELDDOUBLE_ptr createCorbaFieldDouble(SALOME_MED::SUPPORT_ptr mySupportIOR,FIELDDOUBLE * field, bool ownCppPtr)
503 BEGIN_OF("SALOME_MED::FIELDDOUBLE_ptr createCorbaFieldDouble from libMedCorba_Swig");
507 // MT : Keep the local field name
508 // field->setName("Corba Double Field");
510 field->setDescription("Got From A Local One");
512 FIELDDOUBLE_i * fieldimpl = new FIELDDOUBLE_i(field, ownCppPtr);
514 SALOME_MED::FIELDDOUBLE_ptr fieldcorba2 = fieldimpl->_this();
520 END_OF("SALOME_MED::FIELDDOUBLE_ptr createCorbaFieldDouble from libMedCorba_Swig");
522 MESSAGE("Test de tirarge sur le pointeur Corba Field dans le cxx");
524 char * name = fieldcorba2->getName();
533 SALOME_MED::FIELDINT_ptr createCorbaFieldInt(SALOME_MED::SUPPORT_ptr mySupportIOR,FIELDINT * field, bool ownCppPtr)
535 BEGIN_OF("SALOME_MED::FIELDINT_ptr createCorbaFieldInt from libMedCorba_Swig");
539 // MT : Keep the local field name
540 // field->setName("Corba Integer Field");
542 field->setDescription("Got From A Local One");
544 FIELDINT_i * fieldimpl = new FIELDINT_i(field, ownCppPtr);
546 SALOME_MED::FIELDINT_ptr fieldcorba2 = fieldimpl->_this();
552 END_OF("SALOME_MED::FIELDINT_ptr createCorbaFieldInt from libMedCorba_Swig");
553 MESSAGE("Test de tirarge sur le pointeur Corba Field dans le cxx");
555 char * name = fieldcorba2->getName();
564 SALOME_MED::SUPPORT_ptr createCorbaSupport(const SUPPORT * const support)
566 BEGIN_OF("SALOME_MED::SUPPORT_ptr createCorbaSupport from libMedCorba_Swig");
570 SUPPORT_i * supportimpl = new SUPPORT_i(support);
572 SALOME_MED::SUPPORT_ptr supportcorba =
573 supportimpl->POA_SALOME_MED::SUPPORT::_this();
577 SCRUTE(supportcorba);
579 END_OF("SALOME_MED::SUPPORT_ptr createCorbaSupport from libMedCorba_Swig");
584 SALOME_MED::MESH_ptr createCorbaMesh(MESH * mesh)
586 BEGIN_OF("SALOME_MED::MESH_ptr createCorbaMesh from libMedCorba_Swig");
590 MESH_i * meshimpl = new MESH_i(mesh);
592 SALOME_MED::MESH_ptr meshcorba =
593 meshimpl->POA_SALOME_MED::MESH::_this();
599 END_OF("SALOME_MED::MESH_ptr createCorbaMesh from libMedCorba_Swig");
604 FIELDDOUBLE * createLocalFieldDouble(const int NumberOfComponents,
605 const int LengthValue)
607 BEGIN_OF("FIELDDOUBLE createLocalFieldDouble from libMedCorba_Swig");
609 SCRUTE(NumberOfComponents);
612 //FIELD<double> * fieldloc = new FIELD<double>();
613 FIELDDOUBLE * fieldloc = new FIELDDOUBLE();
614 fieldloc -> allocValue(NumberOfComponents,LengthValue);
616 END_OF("FIELDDOUBLE createLocalFieldDouble from libMedCorba_Swig");
621 FIELDINT * createLocalFieldInt(const int NumberOfComponents,
622 const int LengthValue)
624 BEGIN_OF("FIELDINT createLocalFieldInt from libMedCorba_Swig");
626 SCRUTE(NumberOfComponents);
629 //FIELD<int> * fieldloc = new FIELD<int>();
630 FIELDINT * fieldloc = new FIELDINT();
631 fieldloc -> allocValue(NumberOfComponents,LengthValue);
633 END_OF("FIELDDOUBLE createLocalFieldInt from libMedCorba_Swig");