Salome HOME
Merge branch 'master' into V9_dev
authorrnv <rnv@opencascade.com>
Wed, 19 Jul 2017 14:56:09 +0000 (17:56 +0300)
committerrnv <rnv@opencascade.com>
Wed, 19 Jul 2017 14:56:09 +0000 (17:56 +0300)
1  2 
src/MEDCalc/cmp/MEDPresentation.cxx
src/MEDCouplingCorba_Swig/Client/MEDCouplingClient.i

index 91fb7e781fe92a03145be39da2582bf114641c19,582a425fcc3dd1e25c9b93e1128a0b1e81b6c8ee..7a7e4cbd39ab91aee67ad040602ffd74d8596a2b
  
  #include <sstream>
  
 +#if PY_VERSION_HEX < 0x03050000
 +static char*
 +Py_EncodeLocale(const wchar_t *text, size_t *error_pos)
 +{
 +      return _Py_wchar2char(text, error_pos);
 +}
 +#endif
 +
  const std::string MEDPresentation::PROP_NAME  = "name";
  const std::string MEDPresentation::PROP_NB_COMPONENTS = "nbComponents";
  const std::string MEDPresentation::PROP_SELECTED_COMPONENT = "selectedComponent";
@@@ -124,8 -116,11 +124,11 @@@ MEDPresentation::~MEDPresentation(
  
      oss << "pvs.Hide(" << _objVar <<  ", view=" << getRenderViewVar() << ");";
      execPyLine(oss.str());
-     execPyLine(getRenderViewVar() + ".ResetCamera();");
-     execPyLine("pvs.Render();");
+     // :TRICKY: The two following lines raise an exception when closing MED module
+     //          after sequence: MED - load file - PARAVIS - MED - close SALOME
+     //          (see Mantis #23461)
+     //execPyLine(getRenderViewVar() + ".ResetCamera();");
+     //execPyLine("pvs.Render();");
    }
  }
  
@@@ -588,8 -583,8 +591,8 @@@ MEDPresentation::fillAvailableFieldComp
    execPyLine(oss.str());
    PyObject* p_obj = getPythonObjectFromMain("__nbCompo");
    long nbCompo;
 -  if (p_obj && PyInt_Check(p_obj))
 -    nbCompo = PyInt_AS_LONG(p_obj);
 +  if (p_obj && PyLong_Check(p_obj))
 +    nbCompo = PyLong_AS_LONG(p_obj);
    else
      {
        STDLOG("Unexpected Python error");
        execPyLine(oss2.str());
        PyObject* p_obj = getPythonObjectFromMain("__compo");
        std::string compo;
 -      if (p_obj && PyString_Check(p_obj))
 -        compo = std::string(PyString_AsString(p_obj));  // pointing to internal Python memory, so make a copy!!
 +      if (p_obj && PyUnicode_Check(p_obj))
 +        compo = std::string(Py_EncodeLocale(PyUnicode_AS_UNICODE(p_obj), NULL));  // pointing to internal Python memory, so make a copy!!
        else
          {
            STDLOG("Unexpected Python error");
@@@ -680,4 -675,3 +683,3 @@@ MEDPresentation::applyCellToPointIfNeed
  //  oss << _srcObjVar << ".Function = '" <<  _fieldName << "_0*iHat + " << _fieldName << "_1*jHat + 0.0*zHat';";
  //  pushAndExecPyLine(oss.str()); oss.str("");
  //}
index 360f8b7aa84927fdc6fdb0d32994bcc6f2f6916b,cc8f067ae4867f821f378fbbee6d56de84345bce..10fa8e5ab9a1aa72322bbc5139fd946d644d9397
@@@ -59,16 -59,6 +59,16 @@@ using namespace MEDCoupling
  %nodefaultctor;
  %nodefaultdtor;
  
 +%{
 +#if PY_VERSION_HEX < 0x03050000
 +static char*
 +Py_EncodeLocale(const wchar_t *text, size_t *error_pos)
 +{
 +   return _Py_wchar2char(text, error_pos);
 +}
 +#endif
 +%}
 +
  namespace MEDCoupling
  {
    class MEDCouplingFieldDoubleClient
@@@ -88,7 -78,7 +88,7 @@@
            PyObject *iorField=PyObject_CallMethod(orbPython,(char*)"object_to_string",(char*)"O",fieldPtr);
            if(!iorField)
              throw INTERP_KERNEL::Exception("Error : the input parameter of MEDCouplingFieldDoubleClient.New appears to differ from CORBA reference ! Expecting a FieldDouble CORBA reference !");
 -          char *ior=PyString_AsString(iorField);
 +          char *ior=Py_EncodeLocale(PyUnicode_AS_UNICODE(iorField), NULL);
            int argc=0;
            CORBA::ORB_var orb=CORBA::ORB_init(argc,0);
            CORBA::Object_var fieldPtrCpp=orb->string_to_object(ior);
            PyObject *iorField=PyObject_CallMethod(orbPython,(char*)"object_to_string",(char*)"O",fieldPtr);
            if(!iorField)
              throw INTERP_KERNEL::Exception("Error : the input parameter of MEDCouplingFieldTemplateClient.New appears to differ from CORBA reference ! Expecting a FieldTemplate CORBA reference !");
 -          char *ior=PyString_AsString(iorField);
 +          char *ior=Py_EncodeLocale(PyUnicode_AS_UNICODE(iorField), NULL);
            int argc=0;
            CORBA::ORB_var orb=CORBA::ORB_init(argc,0);
            CORBA::Object_var fieldPtrCpp=orb->string_to_object(ior);
            PyObject *iorField=PyObject_CallMethod(orbPython,(char*)"object_to_string",(char*)"O",fieldPtr);
            if(!iorField)
              throw INTERP_KERNEL::Exception("Error : the input parameter of MEDCouplingFieldTemplateClient.New appears to differ from CORBA reference ! Expecting a MultiFields CORBA reference !");
 -          char *ior=PyString_AsString(iorField);
 +          char *ior=Py_EncodeLocale(PyUnicode_AS_UNICODE(iorField), NULL);
            int argc=0;
            CORBA::ORB_var orb=CORBA::ORB_init(argc,0);
            CORBA::Object_var fieldPtrCpp=orb->string_to_object(ior);
            PyObject *iorField=PyObject_CallMethod(orbPython,(char*)"object_to_string",(char*)"O",fieldPtr);
            if(!iorField)
              throw INTERP_KERNEL::Exception("Error : the input parameter of MEDCouplingFieldOverTimeClient.New appears to differ from CORBA reference ! Expecting a FieldOverTime CORBA reference !");
 -          char *ior=PyString_AsString(iorField);
 +          char *ior=Py_EncodeLocale(PyUnicode_AS_UNICODE(iorField), NULL);
            int argc=0;
            CORBA::ORB_var orb=CORBA::ORB_init(argc,0);
            CORBA::Object_var fieldPtrCpp=orb->string_to_object(ior);
            PyObject *iorMesh=PyObject_CallMethod(orbPython,(char*)"object_to_string",(char*)"O",meshPtr);
            if(!iorMesh)
              throw INTERP_KERNEL::Exception("Error : the input parameter of MEDCouplingMeshClient.New appears to differ from CORBA reference ! Expecting a MeshCorbaInterface CORBA reference !");
 -          char *ior=PyString_AsString(iorMesh);
 +          char *ior=Py_EncodeLocale(PyUnicode_AS_UNICODE(iorMesh), NULL);
            int argc=0;
            CORBA::ORB_var orb=CORBA::ORB_init(argc,0);
            CORBA::Object_var meshPtrCpp=orb->string_to_object(ior);
            PyObject *iorMesh=PyObject_CallMethod(orbPython,(char*)"object_to_string",(char*)"O",meshPtr);
            if(!iorMesh)
              throw INTERP_KERNEL::Exception("Error : the input parameter of MEDCouplingUMeshClient.New appears to differ from CORBA reference ! Expecting a UMeshCorbaInterface CORBA reference !");
 -          char *ior=PyString_AsString(iorMesh);
 +          char *ior=Py_EncodeLocale(PyUnicode_AS_UNICODE(iorMesh), NULL);
            int argc=0;
            CORBA::ORB_var orb=CORBA::ORB_init(argc,0);
            CORBA::Object_var meshPtrCpp=orb->string_to_object(ior);
            PyObject *iorMesh=PyObject_CallMethod(orbPython,(char*)"object_to_string",(char*)"O",meshPtr);
            if(!iorMesh)
              throw INTERP_KERNEL::Exception("Error : the input parameter of MEDCoupling1SGTUMeshClient.New appears to differ from CORBA reference ! Expecting a 1SGTUMeshCorbaInterface CORBA reference !");
 -          char *ior=PyString_AsString(iorMesh);
 +          char *ior=Py_EncodeLocale(PyUnicode_AS_UNICODE(iorMesh), NULL);
            int argc=0;
            CORBA::ORB_var orb=CORBA::ORB_init(argc,0);
            CORBA::Object_var meshPtrCpp=orb->string_to_object(ior);
            PyObject *iorMesh=PyObject_CallMethod(orbPython,(char*)"object_to_string",(char*)"O",meshPtr);
            if(!iorMesh)
              throw INTERP_KERNEL::Exception("Error : the input parameter of MEDCoupling1DGTUMeshClient.New appears to differ from CORBA reference ! Expecting a 1DGTUMeshCorbaInterface CORBA reference !");
 -          char *ior=PyString_AsString(iorMesh);
 +          char *ior=Py_EncodeLocale(PyUnicode_AS_UNICODE(iorMesh), NULL);
            int argc=0;
            CORBA::ORB_var orb=CORBA::ORB_init(argc,0);
            CORBA::Object_var meshPtrCpp=orb->string_to_object(ior);
            PyObject *iorMesh=PyObject_CallMethod(orbPython,(char*)"object_to_string",(char*)"O",meshPtr);
            if(!iorMesh)
              throw INTERP_KERNEL::Exception("Error : the input parameter of MEDCouplingExtrudedMeshClient.New appears to differ from CORBA reference ! Expecting an ExtrudedMeshCorbaInterface CORBA reference !");
 -          char *ior=PyString_AsString(iorMesh);
 +          char *ior=Py_EncodeLocale(PyUnicode_AS_UNICODE(iorMesh), NULL);
            int argc=0;
            CORBA::ORB_var orb=CORBA::ORB_init(argc,0);
            CORBA::Object_var meshPtrCpp=orb->string_to_object(ior);
            PyObject *iorMesh=PyObject_CallMethod(orbPython,(char*)"object_to_string",(char*)"O",meshPtr);
            if(!iorMesh)
              throw INTERP_KERNEL::Exception("Error : the input parameter of MEDCouplingCMeshClient.New appears to differ from CORBA reference ! Expecting a CMeshCorbaInterface CORBA reference !");
 -          char *ior=PyString_AsString(iorMesh);
 +          char *ior=Py_EncodeLocale(PyUnicode_AS_UNICODE(iorMesh), NULL);
            int argc=0;
            CORBA::ORB_var orb=CORBA::ORB_init(argc,0);
            CORBA::Object_var meshPtrCpp=orb->string_to_object(ior);
            PyObject *iorMesh=PyObject_CallMethod(orbPython,(char*)"object_to_string",(char*)"O",meshPtr);
            if(!iorMesh)
              throw INTERP_KERNEL::Exception("Error : the input parameter of MEDCouplingIMeshClient.New appears to differ from CORBA reference ! Expecting a IMeshCorbaInterface CORBA reference !");
 -          char *ior=PyString_AsString(iorMesh);
 +          char *ior=Py_EncodeLocale(PyUnicode_AS_UNICODE(iorMesh), NULL);
            int argc=0;
            CORBA::ORB_var orb=CORBA::ORB_init(argc,0);
            CORBA::Object_var meshPtrCpp=orb->string_to_object(ior);
            PyObject *iorMesh=PyObject_CallMethod(orbPython,(char*)"object_to_string",(char*)"O",meshPtr);
            if(!iorMesh)
              throw INTERP_KERNEL::Exception("Error : the input parameter of MEDCouplingCurveLinearMeshClient.New appears to differ from CORBA reference ! Expecting a CurveLinearMeshCorbaInterface CORBA reference !");
 -          char *ior=PyString_AsString(iorMesh);
 +          char *ior=Py_EncodeLocale(PyUnicode_AS_UNICODE(iorMesh), NULL);
            int argc=0;
            CORBA::ORB_var orb=CORBA::ORB_init(argc,0);
            CORBA::Object_var meshPtrCpp=orb->string_to_object(ior);
            PyObject *iorMesh=PyObject_CallMethod(orbPython,(char*)"object_to_string",(char*)"O",meshPtr);
            if(!iorMesh)
              throw INTERP_KERNEL::Exception("Error : the input parameter of DataArrayDoubleClient.New appears to differ from CORBA reference ! Expecting a DataArrayDoubleCorbaInterface CORBA reference !");
 -          char *ior=PyString_AsString(iorMesh);
 +          char *ior=Py_EncodeLocale(PyUnicode_AS_UNICODE(iorMesh), NULL);
            int argc=0;
            CORBA::ORB_var orb=CORBA::ORB_init(argc,0);
            CORBA::Object_var meshPtrCpp=orb->string_to_object(ior);
            PyObject *iorMesh=PyObject_CallMethod(orbPython,(char*)"object_to_string",(char*)"O",meshPtr);
            if(!iorMesh)
              throw INTERP_KERNEL::Exception("Error : the input parameter of DataArrayIntClient.New appears to differ from CORBA reference ! Expecting a DataArrayIntCorbaInterface CORBA reference !");
 -          char *ior=PyString_AsString(iorMesh);
 +          char *ior=Py_EncodeLocale(PyUnicode_AS_UNICODE(iorMesh), NULL);
            int argc=0;
            CORBA::ORB_var orb=CORBA::ORB_init(argc,0);
            CORBA::Object_var meshPtrCpp=orb->string_to_object(ior);
@@@ -583,6 -573,12 +583,12 @@@ def MEDCouplingDataArrayDoubleIdiv(self
  def MEDCouplingDataArrayDoubleIpow(self,*args):
      import _MEDCouplingClient
      return _MEDCouplingClient.DataArrayDouble____ipow___(self, self, *args)
+ def MEDCouplingFieldIntnew(cls,*args):
+     import _MEDCouplingClient
+     return _MEDCouplingClient.MEDCouplingFieldInt____new___(cls,args)
+ def MEDCouplingFieldFloatnew(cls,*args):
+     import _MEDCouplingClient
+     return _MEDCouplingClient.MEDCouplingFieldFloat____new___(cls,args)
  def MEDCouplingFieldDoublenew(cls,*args):
      import _MEDCouplingClient
      return _MEDCouplingClient.MEDCouplingFieldDouble____new___(cls,args)
@@@ -625,6 -621,21 +631,21 @@@ def MEDCouplingDataArrayIntIpow(self,*a
  def MEDCouplingDataArrayBytenew(cls,*args):
      import _MEDCouplingClient
      return _MEDCouplingClient.DataArrayByte____new___(cls,args)
+ def MEDCouplingDataArrayFloatnew(cls,*args):
+     import _MEDCouplingClient
+     return _MEDCouplingClient.DataArrayFloat____new___(cls,args)
+ def MEDCouplingDataArrayFloatIadd(self,*args):
+     import _MEDCouplingClient
+     return _MEDCouplingClient.DataArrayFloat____iadd___(self, self, *args)
+ def MEDCouplingDataArrayFloatIsub(self,*args):
+     import _MEDCouplingClient
+     return _MEDCouplingClient.DataArrayFloat____isub___(self, self, *args)
+ def MEDCouplingDataArrayFloatImul(self,*args):
+     import _MEDCouplingClient
+     return _MEDCouplingClient.DataArrayFloat____imul___(self, self, *args)
+ def MEDCouplingDataArrayFloatIdiv(self,*args):
+     import _MEDCouplingClient
+     return _MEDCouplingClient.DataArrayFloat____idiv___(self, self, *args)
  def MEDCouplingDataArrayDoubleTupleIadd(self,*args):
      import _MEDCouplingClient
      return _MEDCouplingClient.DataArrayDoubleTuple____iadd___(self, self, *args)