X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FCommunication_SWIG%2FlibSALOME_Comm.i;h=be073080fedded5356034afcec532615dfdfc668;hb=63414a08d9492c25c206579c1953ec6f390679fd;hp=e96cc3eb04d31389cecc0b363dbd4d9d1bf4c120;hpb=8d460095eb020326e642fd2021c1f613e785b744;p=modules%2Fkernel.git diff --git a/src/Communication_SWIG/libSALOME_Comm.i b/src/Communication_SWIG/libSALOME_Comm.i index e96cc3eb0..be073080f 100644 --- a/src/Communication_SWIG/libSALOME_Comm.i +++ b/src/Communication_SWIG/libSALOME_Comm.i @@ -1,14 +1,38 @@ +// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// 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, 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 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + %module libSALOME_Comm +%feature("autodoc", "1"); + %{ #include "ReceiverFactory.hxx" - #undef SEEK_SET - #undef SEEK_CUR - #undef SEEK_END + #include "MatrixClient.hxx" #include "SALOME_Comm_i.hxx" + #include "SALOMEMultiComm.hxx" + #include "SenderFactory.hxx" %} -%typemap(python,in) SALOME::SenderDouble_ptr +%typemap(in) SALOME::SenderDouble_ptr { PyObject* pdict = PyDict_New(); PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins()); @@ -21,7 +45,7 @@ // Ask omniORBpy to transform SUPPORT (python Corba) ptr to IOR string - PyObject* iorSupport = PyObject_CallMethod(orb, "object_to_string", "O", $input); + PyObject* iorSupport = PyObject_CallMethod(orb, (char*)"object_to_string", (char*)"O", $input); if (iorSupport == Py_None) return NULL; @@ -30,7 +54,7 @@ // Ask omniORB to convert IOR string to SALOME::SenderDouble_ptr int argc = 0; - char *xargv = ""; + char *xargv = (char*)""; char **argv = &xargv; CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv); CORBA::Object_var O = ORB->string_to_object(s); @@ -38,7 +62,7 @@ $1 = t; } -%typemap(python,in) SALOME::SenderInt_ptr +%typemap(in) SALOME::SenderInt_ptr { PyObject* pdict = PyDict_New(); PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins()); @@ -51,7 +75,7 @@ // Ask omniORBpy to transform SUPPORT (python Corba) ptr to IOR string - PyObject* iorSupport = PyObject_CallMethod(orb, "object_to_string", "O", $input); + PyObject* iorSupport = PyObject_CallMethod(orb, (char*)"object_to_string", (char*)"O", $input); if (iorSupport == Py_None) return NULL; @@ -60,7 +84,7 @@ // Ask omniORB to convert IOR string to SALOME::SenderInt_ptr int argc = 0; - char *xargv = ""; + char *xargv = (char*)""; char **argv = &xargv; CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv); CORBA::Object_var O = ORB->string_to_object(s); @@ -68,6 +92,42 @@ $1 = t; } +%typemap(out) SALOME::SenderDouble_ptr +{ + PyObject* pdict = PyDict_New(); + PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins()); + PyRun_String("import CORBA", Py_single_input, pdict, pdict); + PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input, + pdict, pdict); + PyObject* orb = PyDict_GetItemString(pdict, "o"); + // Get the orb Corba C++ + int argc = 0; + char *xargv = (char*)""; + char **argv = &xargv; + CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv); + std::string s = ORB->object_to_string($1); + PyObject * tmp = PyString_FromString(s.c_str()); + $result = PyObject_CallMethod(orb, (char*)"string_to_object", (char*)"O", tmp); +} + +%typemap(out) SALOME::SenderInt_ptr +{ + PyObject* pdict = PyDict_New(); + PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins()); + PyRun_String("import CORBA", Py_single_input, pdict, pdict); + PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input, + pdict, pdict); + PyObject* orb = PyDict_GetItemString(pdict, "o"); + // Get the orb Corba C++ + int argc = 0; + char *xargv = (char*)""; + char **argv = &xargv; + CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv); + std::string s = ORB->object_to_string($1); + PyObject * tmp = PyString_FromString(s.c_str()); + $result = PyObject_CallMethod(orb, (char*)"string_to_object", (char*)"O", tmp); +} + PyObject * getValueForSenderDouble(SALOME::SenderDouble_ptr senderDouble); %{ @@ -82,7 +142,7 @@ PyObject * getValueForSenderDouble(SALOME::SenderDouble_ptr senderDouble) int err = PyList_SetItem(py_list, i, Py_BuildValue("d", (double) ret[i])); if(err) { - char * message = "Error in SUPPORT::getTypes"; + const char * message = "Error in SUPPORT::getTypes"; PyErr_SetString(PyExc_RuntimeError, message); return NULL; } @@ -109,7 +169,7 @@ PyObject * getValueForSenderInt(SALOME::SenderInt_ptr senderInt) int err = PyList_SetItem(py_list, i, Py_BuildValue("i", (int) ret[i])); if(err) { - char * message = "Error in SUPPORT::getTypes"; + const char * message = "Error in SUPPORT::getTypes"; PyErr_SetString(PyExc_RuntimeError, message); return NULL; } @@ -120,3 +180,79 @@ PyObject * getValueForSenderInt(SALOME::SenderInt_ptr senderInt) return result; } %} + +PyObject * getValueForMatrix(SALOME::Matrix_ptr matrix); +%{ +PyObject * getValueForMatrix(SALOME::Matrix_ptr matrix) +{ + PyObject *py_list; + int column,row; + double *ret=MatrixClient::getValue(matrix,column,row); + py_list = PyList_New(row); + for(int i=0;i