Changeset 23708


Ignore:
Timestamp:
02/11/19 04:13:06 (6 years ago)
Author:
bdef
Message:

CHG:python 3 compatibility

Location:
issm/trunk-jpl/src/wrappers/python/io
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp

    r23231 r23708  
    44
    55#ifdef HAVE_CONFIG_H
    6         #include <config.h>
     6#include <config.h>
    77#else
    88#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
     
    2222
    2323        /*return internal value: */
    24         if      (PyFloat_Check(py_float))
     24        #if _PYTHON_MAJOR_ == 3
     25        if (PyFloat_Check(py_float))
    2526                dscalar=PyFloat_AsDouble(py_float);
    26         else if (PyLong_Check(py_float)){
    27                 #if _PYTHON_MAJOR_ == 3
     27        else if (PyLong_Check(py_float))
    2828                dscalar=(double)PyLong_AsLong(py_float);
    29                 #else
     29        else if (PyBool_Check(py_float))
     30                dscalar=(double)PyLong_AsLong(py_float);
     31        else if (PyTuple_Check(py_float) && (int)PyTuple_Size(py_float)==1)
     32                FetchData(&dscalar,PyTuple_GetItem(py_float,(Py_ssize_t)0));
     33        else if (PyList_Check(py_float) && (int)PyList_Size(py_float)==1)
     34                FetchData(&dscalar,PyList_GetItem(py_float,(Py_ssize_t)0));
     35        else
     36                _error_("unrecognized float type in input!");
     37
     38        #else
     39        if (PyFloat_Check(py_float))
     40                dscalar=PyFloat_AsDouble(py_float);
     41        else if (PyLong_Check(py_float))
    3042                dscalar=PyLong_AsDouble(py_float);
    31                 #endif
    32         }
    3343        else if (PyInt_Check(py_float))
    3444                dscalar=(double)PyInt_AsLong(py_float);
     
    4151        else
    4252                _error_("unrecognized float type in input!");
    43 
     53        #endif
    4454        /*output: */
    4555        *pscalar=dscalar;
     
    5262
    5363        /*return internal value: */
     64        #if _PYTHON_MAJOR_ == 3
    5465        if  (PyFloat_Check(py_float))
    5566         fscalar=PyFloat_AsDouble(py_float);
    56         else if (PyLong_Check(py_float)){
    57                 #if _PYTHON_MAJOR_ == 3
     67        else if (PyLong_Check(py_float))
    5868                fscalar=(float)PyLong_AsLong(py_float);
    59                 #else
     69        else if (PyBool_Check(py_float))
     70                fscalar=(float)PyLong_AsLong(py_float);
     71        else if (PyTuple_Check(py_float) && (int)PyTuple_Size(py_float)==1)
     72                FetchData(&fscalar,PyTuple_GetItem(py_float,(Py_ssize_t)0));
     73        else if (PyList_Check(py_float) && (int)PyList_Size(py_float)==1)
     74                FetchData(&fscalar,PyList_GetItem(py_float,(Py_ssize_t)0));
     75        else
     76                _error_("unrecognized float type in input!");
     77        #else
     78        if  (PyFloat_Check(py_float))
     79                fscalar=PyFloat_AsDouble(py_float);
     80        else if (PyLong_Check(py_float))
    6081                fscalar=(float)PyLong_AsDouble(py_float);
    61                 #endif
    62         }
    6382        else if (PyInt_Check(py_float))
    64          fscalar=(float)PyInt_AsLong(py_float);
     83                fscalar=(float)PyInt_AsLong(py_float);
    6584        else if (PyBool_Check(py_float))
    66          fscalar=(float)PyLong_AsLong(py_float);
     85                fscalar=(float)PyLong_AsLong(py_float);
    6786        else if (PyTuple_Check(py_float) && (int)PyTuple_Size(py_float)==1)
    68          FetchData(&fscalar,PyTuple_GetItem(py_float,(Py_ssize_t)0));
     87                FetchData(&fscalar,PyTuple_GetItem(py_float,(Py_ssize_t)0));
    6988        else if (PyList_Check(py_float) && (int)PyList_Size(py_float)==1)
    70          FetchData(&fscalar,PyList_GetItem(py_float,(Py_ssize_t)0));
     89                FetchData(&fscalar,PyList_GetItem(py_float,(Py_ssize_t)0));
    7190        else
    72          _error_("unrecognized float type in input!");
    73 
     91                _error_("unrecognized float type in input!");
     92        #endif
    7493        /*output: */
    7594        *pscalar=fscalar;
     
    82101
    83102        /*return internal value: */
    84         if      (PyLong_Check(py_long))
     103        #if _PYTHON_MAJOR_ == 3
     104        if (PyLong_Check(py_long))
     105                iscalar=(int)PyLong_AsLong(py_long);
     106        else if (PyFloat_Check(py_long))
     107                iscalar=(int)PyFloat_AsDouble(py_long);
     108        else if (PyBool_Check(py_long))
     109                iscalar=(int)PyLong_AsLong(py_long);
     110        else if (PyTuple_Check(py_long) && (int)PyTuple_Size(py_long)==1)
     111                FetchData(&iscalar,PyTuple_GetItem(py_long,(Py_ssize_t)0));
     112        else if (PyList_Check(py_long) && (int)PyList_Size(py_long)==1)
     113                FetchData(&iscalar,PyList_GetItem(py_long,(Py_ssize_t)0));
     114        else
     115                _error_("unrecognized long type in input!");
     116
     117        #else
     118        if (PyLong_Check(py_long))
    85119                iscalar=(int)PyLong_AsLong(py_long);
    86120        else if (PyInt_Check(py_long))
     
    96130        else
    97131                _error_("unrecognized long type in input!");
    98 
     132        #endif
    99133        /*output: */
    100134        *pscalar=iscalar;
     
    107141
    108142        /*return internal value: */
     143        #if _PYTHON_MAJOR_ == 3
     144        if      (PyBool_Check(py_boolean))
     145                bscalar=(bool)PyLong_AsLong(py_boolean);
     146        else if (PyLong_Check(py_boolean))
     147                bscalar=(bool)PyLong_AsLong(py_boolean);
     148        else if (PyLong_Check(py_boolean))
     149                bscalar=(bool)PyLong_AsLong(py_boolean);
     150        else if (PyTuple_Check(py_boolean) && (int)PyTuple_Size(py_boolean)==1)
     151                FetchData(&bscalar,PyTuple_GetItem(py_boolean,(Py_ssize_t)0));
     152        else if (PyList_Check(py_boolean) && (int)PyList_Size(py_boolean)==1)
     153                FetchData(&bscalar,PyList_GetItem(py_boolean,(Py_ssize_t)0));
     154        else
     155                _error_("unrecognized boolean type in input!");
     156
     157        #else
    109158        if      (PyBool_Check(py_boolean))
    110159                bscalar=(bool)PyLong_AsLong(py_boolean);
     
    121170        else
    122171                _error_("unrecognized boolean type in input!");
    123 
     172        #endif
    124173        /*output: */
    125174        *pscalar=bscalar;
     
    189238//                                      }
    190239//                              }
    191                        
     240
    192241                        }
    193242
     
    429478                if      (ndim==1) {
    430479                        dims=PyArray_DIMS((PyArrayObject*)py_vector);
    431                         M=dims[0]; 
     480                        M=dims[0];
    432481                }
    433482                else if (ndim==2) {
    434483                        dims=PyArray_DIMS((PyArrayObject*)py_vector);
    435484                        if (dims[1]==1)
    436                                 M=dims[0]; 
     485                                M=dims[0];
    437486                        else
    438487                                _error_("expecting an Mx1 matrix or M vector in input!");
     
    518567                if      (ndim==1) {
    519568                        dims=PyArray_DIMS((PyArrayObject*)py_vector);
    520                         M=dims[0]; 
     569                        M=dims[0];
    521570                }
    522571                else if (ndim==2) {
    523572                        dims=PyArray_DIMS((PyArrayObject*)py_vector);
    524573                        if (dims[1]==1)
    525                          M=dims[0]; 
     574                         M=dims[0];
    526575                        else
    527576                         _error_("expecting an Mx1 matrix or M vector in input!");
     
    603652                if      (ndim==1) {
    604653                        dims=PyArray_DIMS((PyArrayObject*)py_vector);
    605                         M=dims[0]; 
     654                        M=dims[0];
    606655                }
    607656                else if (ndim==2) {
    608657                        dims=PyArray_DIMS((PyArrayObject*)py_vector);
    609658                        if (dims[1]==1)
    610                                 M=dims[0]; 
     659                                M=dims[0];
    611660                        else
    612661                                _error_("expecting an Mx1 matrix or M vector in input!");
     
    690739                if      (ndim==1) {
    691740                        dims=PyArray_DIMS((PyArrayObject*)py_vector);
    692                         M=dims[0]; 
     741                        M=dims[0];
    693742                }
    694743                else if (ndim==2) {
    695744                        dims=PyArray_DIMS((PyArrayObject*)py_vector);
    696745                        if (dims[1]==1)
    697                                 M=dims[0]; 
     746                                M=dims[0];
    698747                        else
    699748                                _error_("expecting an Mx1 matrix or M vector in input!");
     
    941990        int* mwadjacency = xNewZeroInit<int>(nzmax);
    942991        pyGetIr(a,nvtxs,nzmax,mwadjacency);
    943        
     992
    944993        int* start = xNew<int>(nvtxs+1);
    945994        for(int i=0;i<nvtxs+1;i++) start[i]=(int)mwstart[i];
     
    10121061
    10131062/*Python version dependent: */
    1014 #if _PYTHON_MAJOR_ >= 3
    1015 /*FUNCTION FetchData(char** pstring,PyObject* py_unicode){{{*/
    1016 void FetchData(char** pstring,PyObject* py_unicode){
    1017 
    1018         PyObject* py_bytes;
     1063/* #if _PYTHON_MAJOR_ >= 3 */
     1064/* /\*FUNCTION FetchData(char** pstring,PyObject* py_unicode){{{*\/ */
     1065/* void FetchData(char** pstring,PyObject* py_unicode){ */
     1066
     1067/*      PyObject* py_bytes; */
     1068/*      char* string=NULL; */
     1069
     1070/*      /\*convert to bytes format: *\/ */
     1071/*      PyUnicode_FSConverter(py_unicode,&py_bytes); */
     1072
     1073/*      /\*convert from bytes to string: *\/ */
     1074/*      string=PyBytes_AsUTF8(py_bytes); */
     1075
     1076/*      /\*copy string (note strlen does not include trailing NULL): *\/ */
     1077/*      *pstring=xNew<char>(strlen(string)+1); */
     1078/*      memcpy(*pstring,string,(strlen(string)+1)*sizeof(char)); */
     1079/* } */
     1080/* /\*}}}*\/ */
     1081/* #else */
     1082/*FUNCTION FetchData(char** pstring,PyObject* py_string){{{*/
     1083void FetchData(char** pstring,PyObject* py_string){
     1084
    10191085        char* string=NULL;
    10201086
    1021         /*convert to bytes format: */
    1022         PyUnicode_FSConverter(py_unicode,&py_bytes);
    1023 
    1024         /*convert from bytes to string: */
    1025         string=PyBytes_AS_STRING(py_bytes);
    1026 
     1087        /*extract internal string: */
     1088        #if _PYTHON_MAJOR_ == 3
     1089        string=PyUnicode_AsUTF8(py_string);
     1090        #else
     1091        string=PyString_AsString(py_string);
     1092        #endif
    10271093        /*copy string (note strlen does not include trailing NULL): */
    10281094        *pstring=xNew<char>(strlen(string)+1);
     
    10301096}
    10311097/*}}}*/
    1032 #else
    1033 /*FUNCTION FetchData(char** pstring,PyObject* py_string){{{*/
    1034 void FetchData(char** pstring,PyObject* py_string){
    1035 
    1036         char* string=NULL;
    1037 
    1038         /*extract internal string: */
    1039         string=PyString_AsString(py_string);
    1040 
    1041         /*copy string (note strlen does not include trailing NULL): */
    1042         *pstring=xNew<char>(strlen(string)+1);
    1043         memcpy(*pstring,string,(strlen(string)+1)*sizeof(char));
    1044 }
    1045 /*}}}*/
    1046 #endif
     1098//#endif
  • issm/trunk-jpl/src/wrappers/python/io/WritePythonData.cpp

    r22674 r23708  
    233233                #if _PYTHON_MAJOR_ >= 3
    234234                PyDict_SetItemString(dict,"numsegs"          ,PyLong_FromSsize_t((Py_ssize_t)riftstruct->riftsnumsegments[i]));
     235                PyDict_SetItemString(dict,"fill"             ,PyUnicode_FromString("Ice"));
     236                PyDict_SetItemString(dict,"friction"         ,PyLong_FromSsize_t((Py_ssize_t)0));
    235237                #else
    236238                PyDict_SetItemString(dict,"numsegs"          ,PyInt_FromSsize_t((Py_ssize_t)riftstruct->riftsnumsegments[i]));
     239                PyDict_SetItemString(dict,"fill"             ,PyString_FromString("Ice"));
     240                PyDict_SetItemString(dict,"friction"         ,PyInt_FromSsize_t((Py_ssize_t)0));
    237241                #endif
    238242
     
    241245                PyDict_SetItemString(dict,"tips"             ,PyArrayFromCopiedData(1                                  ,2,&riftstruct->riftstips[2*i]));
    242246                PyDict_SetItemString(dict,"penaltypairs"     ,PyArrayFromCopiedData(riftstruct->riftsnumpenaltypairs[i],7,riftstruct->riftspenaltypairs[i]));
    243                 #if _PYTHON_MAJOR_ >= 3
    244                 PyDict_SetItemString(dict,"fill"             ,PyString_FromString("Ice"));
    245                 PyDict_SetItemString(dict,"friction"         ,PyLong_FromSsize_t((Py_ssize_t)0));
    246                 #else
    247                 PyDict_SetItemString(dict,"fill"             ,PyString_FromString("Ice"));
    248                 PyDict_SetItemString(dict,"friction"         ,PyInt_FromSsize_t((Py_ssize_t)0));
    249                 #endif
    250247                PyDict_SetItemString(dict,"fraction"         ,PyFloat_FromDouble(0.));
    251248                PyDict_SetItemString(dict,"fractionincrement",PyFloat_FromDouble(0.1));
Note: See TracChangeset for help on using the changeset viewer.