From 44e82ac3c472c6cd3d84282773e9b8ba73ac2190 Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 26 Apr 2021 10:55:56 +0200 Subject: [PATCH] App: remove some more deprecated Py2 code and remove deprecated void from function signature and replace 0 or NULL with nullptr --- src/App/Expression.cpp | 3 - src/App/FeaturePythonPyImp.h | 26 +-- src/App/PropertyStandard.cpp | 327 ++++++++--------------------------- src/Base/Interpreter.cpp | 4 - src/Main/MainGui.cpp | 8 - 5 files changed, 75 insertions(+), 293 deletions(-) diff --git a/src/App/Expression.cpp b/src/App/Expression.cpp index af94bb3622..1edc62605b 100644 --- a/src/App/Expression.cpp +++ b/src/App/Expression.cpp @@ -527,9 +527,6 @@ Py::Object pyFromQuantity(const Quantity &quantity) { int i; switch(essentiallyInteger(v,l,i)) { case 1: -#if PY_MAJOR_VERSION < 3 - return Py::Int(i); -#endif case 2: return Py::Long(l); default: diff --git a/src/App/FeaturePythonPyImp.h b/src/App/FeaturePythonPyImp.h index 1b1393ed3f..cae903ad30 100644 --- a/src/App/FeaturePythonPyImp.h +++ b/src/App/FeaturePythonPyImp.h @@ -65,7 +65,7 @@ { \ } -#elif PY_MAJOR_VERSION >= 3 +#else #define PYTHON_TYPE_IMP(_class_, _subclass_) \ PyTypeObject _class_::Type = { \ PyVarObject_HEAD_INIT(&PyType_Type, 0) \ @@ -85,30 +85,6 @@ _class_::~_class_() \ { \ } - -#else - -#define PYTHON_TYPE_IMP(_class_, _subclass_) \ - PyTypeObject _class_::Type = { \ - PyObject_HEAD_INIT(&PyType_Type) \ - 0, \ - ""#_class_"", \ - sizeof(_class_), \ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ - Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_CLASS, \ - ""#_class_"", \ - 0, 0, 0, 0, 0, 0, 0, 0, 0, \ - &_subclass_::Type, \ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ - }; \ - _class_::_class_(Base::BaseClass *pcObject, PyTypeObject *T) \ - : _subclass_(reinterpret_cast<_subclass_::PointerType>(pcObject), T) \ - { \ - } \ - _class_::~_class_() \ - { \ - } - #endif namespace App diff --git a/src/App/PropertyStandard.cpp b/src/App/PropertyStandard.cpp index e0572d436d..684ca308f5 100644 --- a/src/App/PropertyStandard.cpp +++ b/src/App/PropertyStandard.cpp @@ -89,27 +89,21 @@ void PropertyInteger::setValue(long lValue) hasSetValue(); } -long PropertyInteger::getValue(void) const +long PropertyInteger::getValue() const { return _lValue; } -PyObject *PropertyInteger::getPyObject(void) +PyObject *PropertyInteger::getPyObject() { return Py_BuildValue("l", _lValue); } void PropertyInteger::setPyObject(PyObject *value) { -#if PY_MAJOR_VERSION < 3 - if (PyInt_Check(value)) { - aboutToSetValue(); - _lValue = PyInt_AsLong(value); -#else if (PyLong_Check(value)) { aboutToSetValue(); _lValue = PyLong_AsLong(value); -#endif hasSetValue(); } else { @@ -132,7 +126,7 @@ void PropertyInteger::Restore(Base::XMLReader &reader) setValue(reader.getAttributeAsInteger("value")); } -Property *PropertyInteger::Copy(void) const +Property *PropertyInteger::Copy() const { PropertyInteger *p= new PropertyInteger(); p->_lValue = _lValue; @@ -213,12 +207,12 @@ void PropertyPath::setValue(const char * Path) hasSetValue(); } -boost::filesystem::path PropertyPath::getValue(void) const +boost::filesystem::path PropertyPath::getValue() const { return _cValue; } -PyObject *PropertyPath::getPyObject(void) +PyObject *PropertyPath::getPyObject() { #if (BOOST_FILESYSTEM_VERSION == 2) std::string str = _cValue.native_file_string(); @@ -227,7 +221,7 @@ PyObject *PropertyPath::getPyObject(void) #endif // Returns a new reference, don't increment it! - PyObject *p = PyUnicode_DecodeUTF8(str.c_str(),str.size(),0); + PyObject *p = PyUnicode_DecodeUTF8(str.c_str(),str.size(),nullptr); if (!p) throw Base::UnicodeError("UTF8 conversion failure at PropertyPath::getPyObject()"); return p; } @@ -236,16 +230,7 @@ void PropertyPath::setPyObject(PyObject *value) { std::string path; if (PyUnicode_Check(value)) { -#if PY_MAJOR_VERSION >= 3 path = PyUnicode_AsUTF8(value); -#else - PyObject* unicode = PyUnicode_AsUTF8String(value); - path = PyString_AsString(unicode); - Py_DECREF(unicode); - } - else if (PyString_Check(value)) { - path = PyString_AsString(value); -#endif } else { std::string error = std::string("type must be str or unicode, not "); @@ -272,7 +257,7 @@ void PropertyPath::Restore(Base::XMLReader &reader) setValue(reader.getAttribute("value")); } -Property *PropertyPath::Copy(void) const +Property *PropertyPath::Copy() const { PropertyPath *p= new PropertyPath(); p->_cValue = _cValue; @@ -286,7 +271,7 @@ void PropertyPath::Paste(const Property &from) hasSetValue(); } -unsigned int PropertyPath::getMemSize (void) const +unsigned int PropertyPath::getMemSize () const { return static_cast(_cValue.string().size()); } @@ -361,7 +346,7 @@ void PropertyEnumeration::setValue(const Enumeration &source) hasSetValue(); } -long PropertyEnumeration::getValue(void) const +long PropertyEnumeration::getValue() const { return _enum.getInt(); } @@ -376,29 +361,29 @@ bool PropertyEnumeration::isPartOf(const char *value) const return _enum.contains(value); } -const char * PropertyEnumeration::getValueAsString(void) const +const char * PropertyEnumeration::getValueAsString() const { if (!_enum.isValid()) throw Base::RuntimeError("Cannot get value from invalid enumeration"); return _enum.getCStr(); } -Enumeration PropertyEnumeration::getEnum(void) const +Enumeration PropertyEnumeration::getEnum() const { return _enum; } -std::vector PropertyEnumeration::getEnumVector(void) const +std::vector PropertyEnumeration::getEnumVector() const { return _enum.getEnumVector(); } -const char ** PropertyEnumeration::getEnums(void) const +const char ** PropertyEnumeration::getEnums() const { return _enum.getEnums(); } -bool PropertyEnumeration::isValid(void) const +bool PropertyEnumeration::isValid() const { return _enum.isValid(); } @@ -454,11 +439,11 @@ void PropertyEnumeration::Restore(Base::XMLReader &reader) setValue(val); } -PyObject * PropertyEnumeration::getPyObject(void) +PyObject * PropertyEnumeration::getPyObject() { if (!_enum.isValid()) { PyErr_SetString(PyExc_AssertionError, "The enum is empty"); - return 0; + return nullptr; } return Py_BuildValue("s", getValueAsString()); @@ -466,42 +451,16 @@ PyObject * PropertyEnumeration::getPyObject(void) void PropertyEnumeration::setPyObject(PyObject *value) { -#if PY_MAJOR_VERSION < 3 - if (PyInt_Check(value)) { - long val = PyInt_AsLong(value); -#else if (PyLong_Check(value)) { long val = PyLong_AsLong(value); -#endif if (_enum.isValid()) { aboutToSetValue(); _enum.setValue(val, true); hasSetValue(); } } -#if PY_MAJOR_VERSION < 3 - else if (PyString_Check(value)) { - const char* str = PyString_AsString (value); - if (_enum.contains(str)) { - aboutToSetValue(); - _enum.setValue(PyString_AsString (value)); - hasSetValue(); - } - else { - std::stringstream out; - out << "'" << str << "' is not part of the enumeration"; - throw Base::ValueError(out.str()); - } - } -#endif else if (PyUnicode_Check(value)) { -#if PY_MAJOR_VERSION >=3 std::string str = PyUnicode_AsUTF8(value); -#else - PyObject* unicode = PyUnicode_AsUTF8String(value); - std::string str = PyString_AsString(unicode); - Py_DECREF(unicode); -#endif if (_enum.contains(str.c_str())) { aboutToSetValue(); _enum.setValue(str); @@ -522,19 +481,8 @@ void PropertyEnumeration::setPyObject(PyObject *value) PyObject *item = PySequence_GetItem(value, i); if (PyUnicode_Check(item)) { -#if PY_MAJOR_VERSION >= 3 values[i] = PyUnicode_AsUTF8(item); -#else - PyObject* unicode = PyUnicode_AsUTF8String(item); - values[i] = PyString_AsString(unicode); - Py_DECREF(unicode); -#endif } -#if PY_MAJOR_VERSION < 3 - else if (PyString_Check(item)) { - values[i] = PyString_AsString(item); - } -#endif else { std::string error = std::string("type in list must be str or unicode, not "); throw Base::TypeError(error + item->ob_type->tp_name); @@ -549,7 +497,7 @@ void PropertyEnumeration::setPyObject(PyObject *value) } } -Property * PropertyEnumeration::Copy(void) const +Property * PropertyEnumeration::Copy() const { return new PropertyEnumeration(_enum); } @@ -596,7 +544,7 @@ TYPESYSTEM_SOURCE(App::PropertyIntegerConstraint, App::PropertyInteger) PropertyIntegerConstraint::PropertyIntegerConstraint() - : _ConstStruct(0) + : _ConstStruct(nullptr) { } @@ -618,7 +566,7 @@ void PropertyIntegerConstraint::setConstraints(const Constraints* sConstrain) _ConstStruct = sConstrain; } -const PropertyIntegerConstraint::Constraints* PropertyIntegerConstraint::getConstraints(void) const +const PropertyIntegerConstraint::Constraints* PropertyIntegerConstraint::getConstraints() const { return _ConstStruct; } @@ -648,13 +596,8 @@ long PropertyIntegerConstraint::getStepSize() const void PropertyIntegerConstraint::setPyObject(PyObject *value) { -#if PY_MAJOR_VERSION < 3 - if (PyInt_Check(value)) { - long temp = PyInt_AsLong(value); -#else if (PyLong_Check(value)) { long temp = PyLong_AsLong(value); -#endif if (_ConstStruct) { if (temp > _ConstStruct->UpperBound) temp = _ConstStruct->UpperBound; @@ -671,13 +614,8 @@ void PropertyIntegerConstraint::setPyObject(PyObject *value) for (int i=0; i<4; i++) { PyObject* item; item = PyTuple_GetItem(value,i); -#if PY_MAJOR_VERSION < 3 - if (PyInt_Check(item)) - values[i] = PyInt_AsLong(item); -#else if (PyLong_Check(item)) values[i] = PyLong_AsLong(item); -#endif else throw Base::TypeError("Type in tuple must be int"); } @@ -750,26 +688,17 @@ PropertyIntegerList::~PropertyIntegerList() //************************************************************************** // Base class implementer -PyObject *PropertyIntegerList::getPyObject(void) +PyObject *PropertyIntegerList::getPyObject() { PyObject* list = PyList_New(getSize()); for(int i = 0;iob_type->tp_name; throw Base::TypeError(error); @@ -804,7 +733,7 @@ void PropertyIntegerList::Restore(Base::XMLReader &reader) setValues(values); } -Property *PropertyIntegerList::Copy(void) const +Property *PropertyIntegerList::Copy() const { PropertyIntegerList *p= new PropertyIntegerList(); p->_lValueList = _lValueList; @@ -816,7 +745,7 @@ void PropertyIntegerList::Paste(const Property &from) setValues(dynamic_cast(from)._lValueList); } -unsigned int PropertyIntegerList::getMemSize (void) const +unsigned int PropertyIntegerList::getMemSize () const { return static_cast(_lValueList.size() * sizeof(long)); } @@ -864,15 +793,11 @@ void PropertyIntegerSet::setValues(const std::set& values) hasSetValue(); } -PyObject *PropertyIntegerSet::getPyObject(void) +PyObject *PropertyIntegerSet::getPyObject() { - PyObject* set = PySet_New(NULL); + PyObject* set = PySet_New(nullptr); for(std::set::const_iterator it=_lValueSet.begin();it!=_lValueSet.end();++it) -#if PY_MAJOR_VERSION < 3 - PySet_Add(set,PyInt_FromLong(*it)); -#else PySet_Add(set,PyLong_FromLong(*it)); -#endif return set; } @@ -885,32 +810,18 @@ void PropertyIntegerSet::setPyObject(PyObject *value) for (Py_ssize_t i=0; iob_type->tp_name; - throw Base::TypeError(error); - } - values.insert(PyInt_AsLong(item)); -#else if (!PyLong_Check(item)) { std::string error = std::string("type in list must be int, not "); error += item->ob_type->tp_name; throw Base::TypeError(error); } values.insert(PyLong_AsLong(item)); -#endif } setValues(values); } -#if PY_MAJOR_VERSION < 3 - else if (PyInt_Check(value)) { - setValue(PyInt_AsLong(value)); -#else else if (PyLong_Check(value)) { setValue(PyLong_AsLong(value)); -#endif } else { std::string error = std::string("type must be int or list of int, not "); @@ -948,7 +859,7 @@ void PropertyIntegerSet::Restore(Base::XMLReader &reader) setValues(values); } -Property *PropertyIntegerSet::Copy(void) const +Property *PropertyIntegerSet::Copy() const { PropertyIntegerSet *p= new PropertyIntegerSet(); p->_lValueSet = _lValueSet; @@ -962,7 +873,7 @@ void PropertyIntegerSet::Paste(const Property &from) hasSetValue(); } -unsigned int PropertyIntegerSet::getMemSize (void) const +unsigned int PropertyIntegerSet::getMemSize () const { return static_cast(_lValueSet.size() * sizeof(long)); } @@ -1000,12 +911,12 @@ void PropertyFloat::setValue(double lValue) hasSetValue(); } -double PropertyFloat::getValue(void) const +double PropertyFloat::getValue() const { return _dValue; } -PyObject *PropertyFloat::getPyObject(void) +PyObject *PropertyFloat::getPyObject() { return Py_BuildValue("d", _dValue); } @@ -1017,15 +928,9 @@ void PropertyFloat::setPyObject(PyObject *value) _dValue = PyFloat_AsDouble(value); hasSetValue(); } -#if PY_MAJOR_VERSION < 3 - else if(PyInt_Check(value)) { - aboutToSetValue(); - _dValue = PyInt_AsLong(value); -#else else if(PyLong_Check(value)) { aboutToSetValue(); _dValue = PyLong_AsLong(value); -#endif hasSetValue(); } else { @@ -1048,7 +953,7 @@ void PropertyFloat::Restore(Base::XMLReader &reader) setValue(reader.getAttributeAsFloat("value")); } -Property *PropertyFloat::Copy(void) const +Property *PropertyFloat::Copy() const { PropertyFloat *p= new PropertyFloat(); p->_dValue = _dValue; @@ -1100,7 +1005,7 @@ TYPESYSTEM_SOURCE(App::PropertyFloatConstraint, App::PropertyFloat) PropertyFloatConstraint::PropertyFloatConstraint() - : _ConstStruct(0) + : _ConstStruct(nullptr) { } @@ -1120,7 +1025,7 @@ void PropertyFloatConstraint::setConstraints(const Constraints* sConstrain) _ConstStruct = sConstrain; } -const PropertyFloatConstraint::Constraints* PropertyFloatConstraint::getConstraints(void) const +const PropertyFloatConstraint::Constraints* PropertyFloatConstraint::getConstraints() const { return _ConstStruct; } @@ -1161,13 +1066,8 @@ void PropertyFloatConstraint::setPyObject(PyObject *value) _dValue = temp; hasSetValue(); } -#if PY_MAJOR_VERSION < 3 - else if (PyInt_Check(value)) { - double temp = (double)PyInt_AsLong(value); -#else else if (PyLong_Check(value)) { double temp = (double)PyLong_AsLong(value); -#endif if (_ConstStruct) { if (temp > _ConstStruct->UpperBound) temp = _ConstStruct->UpperBound; @@ -1186,13 +1086,8 @@ void PropertyFloatConstraint::setPyObject(PyObject *value) item = PyTuple_GetItem(value,i); if (PyFloat_Check(item)) values[i] = PyFloat_AsDouble(item); -#if PY_MAJOR_VERSION < 3 - else if (PyInt_Check(item)) - values[i] = PyInt_AsLong(item); -#else else if (PyLong_Check(item)) values[i] = PyLong_AsLong(item); -#endif else throw Base::TypeError("Type in tuple must be float or int"); } @@ -1269,7 +1164,7 @@ PropertyFloatList::~PropertyFloatList() //************************************************************************** // Base class implementer -PyObject *PropertyFloatList::getPyObject(void) +PyObject *PropertyFloatList::getPyObject() { PyObject* list = PyList_New(getSize()); for (int i = 0;i= 3 } else if (PyLong_Check(item)) { return static_cast(PyLong_AsLong(item)); -#else - } else if (PyInt_Check(item)) { - return static_cast(PyInt_AsLong(item)); -#endif } else { std::string error = std::string("type in list must be float, not "); error += item->ob_type->tp_name; @@ -1360,7 +1250,7 @@ void PropertyFloatList::RestoreDocFile(Base::Reader &reader) setValues(values); } -Property *PropertyFloatList::Copy(void) const +Property *PropertyFloatList::Copy() const { PropertyFloatList *p= new PropertyFloatList(); p->_lValueList = _lValueList; @@ -1372,7 +1262,7 @@ void PropertyFloatList::Paste(const Property &from) setValues(dynamic_cast(from)._lValueList); } -unsigned int PropertyFloatList::getMemSize (void) const +unsigned int PropertyFloatList::getMemSize () const { return static_cast(_lValueList.size() * sizeof(double)); } @@ -1515,14 +1405,14 @@ void PropertyString::setValue(const std::string &sString) setValue(sString.c_str()); } -const char* PropertyString::getValue(void) const +const char* PropertyString::getValue() const { return _cValue.c_str(); } -PyObject *PropertyString::getPyObject(void) +PyObject *PropertyString::getPyObject() { - PyObject *p = PyUnicode_DecodeUTF8(_cValue.c_str(),_cValue.size(),0); + PyObject *p = PyUnicode_DecodeUTF8(_cValue.c_str(),_cValue.size(),nullptr); if (!p) throw Base::UnicodeError("UTF8 conversion failure at PropertyString::getPyObject()"); return p; } @@ -1531,16 +1421,7 @@ void PropertyString::setPyObject(PyObject *value) { std::string string; if (PyUnicode_Check(value)) { -#if PY_MAJOR_VERSION >= 3 string = PyUnicode_AsUTF8(value); -#else - PyObject* unicode = PyUnicode_AsUTF8String(value); - string = PyString_AsString(unicode); - Py_DECREF(unicode); - } - else if (PyString_Check(value)) { - string = PyString_AsString(value); -#endif } else { std::string error = std::string("type must be str or unicode, not "); @@ -1595,7 +1476,7 @@ void PropertyString::Restore(Base::XMLReader &reader) setValue(reader.getAttribute("value")); } -Property *PropertyString::Copy(void) const +Property *PropertyString::Copy() const { PropertyString *p= new PropertyString(); p->_cValue = _cValue; @@ -1607,7 +1488,7 @@ void PropertyString::Paste(const Property &from) setValue(dynamic_cast(from)._cValue); } -unsigned int PropertyString::getMemSize (void) const +unsigned int PropertyString::getMemSize () const { return static_cast(_cValue.size()); } @@ -1681,23 +1562,19 @@ void PropertyUUID::setValue(const std::string &sString) hasSetValue(); } -const std::string& PropertyUUID::getValueStr(void) const +const std::string& PropertyUUID::getValueStr() const { return _uuid.getValue(); } -const Base::Uuid& PropertyUUID::getValue(void) const +const Base::Uuid& PropertyUUID::getValue() const { return _uuid; } -PyObject *PropertyUUID::getPyObject(void) +PyObject *PropertyUUID::getPyObject() { -#if PY_MAJOR_VERSION >= 3 PyObject *p = PyUnicode_FromString(_uuid.getValue().c_str()); -#else - PyObject *p = PyString_FromString(_uuid.getValue().c_str()); -#endif return p; } @@ -1705,16 +1582,7 @@ void PropertyUUID::setPyObject(PyObject *value) { std::string string; if (PyUnicode_Check(value)) { -#if PY_MAJOR_VERSION >= 3 string = PyUnicode_AsUTF8(value); -#else - PyObject* unicode = PyUnicode_AsUTF8String(value); - string = PyString_AsString(unicode); - Py_DECREF(unicode); - } - else if (PyString_Check(value)) { - string = PyString_AsString(value); -#endif } else { std::string error = std::string("type must be unicode or str, not "); @@ -1746,7 +1614,7 @@ void PropertyUUID::Restore(Base::XMLReader &reader) setValue(reader.getAttribute("value")); } -Property *PropertyUUID::Copy(void) const +Property *PropertyUUID::Copy() const { PropertyUUID *p= new PropertyUUID(); p->_uuid = _uuid; @@ -1760,7 +1628,7 @@ void PropertyUUID::Paste(const Property &from) hasSetValue(); } -unsigned int PropertyUUID::getMemSize (void) const +unsigned int PropertyUUID::getMemSize () const { return static_cast(sizeof(_uuid)); } @@ -1809,12 +1677,12 @@ void PropertyStringList::setValues(const std::list& lValue) setValues(vals); } -PyObject *PropertyStringList::getPyObject(void) +PyObject *PropertyStringList::getPyObject() { PyObject* list = PyList_New(getSize()); for (int i = 0;i= 3 ret = PyUnicode_AsUTF8(item); -#else - PyObject* unicode = PyUnicode_AsUTF8String(item); - ret = PyString_AsString(unicode); - Py_DECREF(unicode); - } else if (PyString_Check(item)) { - ret = PyString_AsString(item); -#endif -#if PY_MAJOR_VERSION >= 3 } else if (PyBytes_Check(item)) { ret = PyBytes_AsString(item); -#endif } else { std::string error = std::string("type in list must be str or unicode, not "); error += item->ob_type->tp_name; @@ -1850,7 +1708,7 @@ std::string PropertyStringList::getPyValue(PyObject *item) const return ret; } -unsigned int PropertyStringList::getMemSize (void) const +unsigned int PropertyStringList::getMemSize () const { size_t size=0; for(int i = 0;i_lValueList = _lValueList; @@ -1922,7 +1780,7 @@ PropertyMap::~PropertyMap() // Base class implementer -int PropertyMap::getSize(void) const +int PropertyMap::getSize() const { return static_cast(_lValueList.size()); } @@ -1954,12 +1812,12 @@ const std::string& PropertyMap::operator[] (const std::string& key) const } -PyObject *PropertyMap::getPyObject(void) +PyObject *PropertyMap::getPyObject() { PyObject* dict = PyDict_New(); for (std::map::const_iterator it = _lValueList.begin();it!= _lValueList.end(); ++it) { - PyObject* item = PyUnicode_DecodeUTF8(it->second.c_str(), it->second.size(), 0); + PyObject* item = PyUnicode_DecodeUTF8(it->second.c_str(), it->second.size(), nullptr); if (!item) { Py_DECREF(dict); throw Base::UnicodeError("UTF8 conversion failure at PropertyMap::getPyObject()"); @@ -1988,15 +1846,7 @@ void PropertyMap::setPyObject(PyObject *value) std::string keyStr; PyObject* key = PyList_GetItem(keyList, i); if (PyUnicode_Check(key)) { -#if PY_MAJOR_VERSION >= 3 keyStr = PyUnicode_AsUTF8(key); -#else - PyObject* unicode = PyUnicode_AsUTF8String(key); - keyStr = PyString_AsString(unicode); - Py_DECREF(unicode); - }else if (PyString_Check(key)) { - keyStr = PyString_AsString(key); -#endif } else { std::string error = std::string("type of the key need to be unicode or string, not"); @@ -2007,16 +1857,7 @@ void PropertyMap::setPyObject(PyObject *value) // check on the item: PyObject* item = PyList_GetItem(itemList, i); if (PyUnicode_Check(item)) { -#if PY_MAJOR_VERSION >= 3 values[keyStr] = PyUnicode_AsUTF8(item); -#else - PyObject* unicode = PyUnicode_AsUTF8String(item); - values[keyStr] = PyString_AsString(unicode); - Py_DECREF(unicode); - } - else if (PyString_Check(item)) { - values[keyStr] = PyString_AsString(item); -#endif } else { std::string error = std::string("type in list must be string or unicode, not "); @@ -2034,7 +1875,7 @@ void PropertyMap::setPyObject(PyObject *value) } } -unsigned int PropertyMap::getMemSize (void) const +unsigned int PropertyMap::getMemSize () const { size_t size=0; for (std::map::const_iterator it = _lValueList.begin();it!= _lValueList.end(); ++it) { @@ -2076,7 +1917,7 @@ void PropertyMap::Restore(Base::XMLReader &reader) setValues(values); } -Property *PropertyMap::Copy(void) const +Property *PropertyMap::Copy() const { PropertyMap *p= new PropertyMap(); p->_lValueList = _lValueList; @@ -2123,12 +1964,12 @@ void PropertyBool::setValue(bool lValue) hasSetValue(); } -bool PropertyBool::getValue(void) const +bool PropertyBool::getValue() const { return _lValue; } -PyObject *PropertyBool::getPyObject(void) +PyObject *PropertyBool::getPyObject() { return PyBool_FromLong(_lValue ? 1 : 0); } @@ -2137,13 +1978,8 @@ void PropertyBool::setPyObject(PyObject *value) { if (PyBool_Check(value)) setValue(PyObject_IsTrue(value)!=0); -#if PY_MAJOR_VERSION < 3 - else if(PyInt_Check(value)) - setValue(PyInt_AsLong(value)!=0); -#else else if(PyLong_Check(value)) setValue(PyLong_AsLong(value)!=0); -#endif else { std::string error = std::string("type must be bool, not "); error += value->ob_type->tp_name; @@ -2171,7 +2007,7 @@ void PropertyBool::Restore(Base::XMLReader &reader) } -Property *PropertyBool::Copy(void) const +Property *PropertyBool::Copy() const { PropertyBool *p= new PropertyBool(); p->_lValue = _lValue; @@ -2236,7 +2072,7 @@ PropertyBoolList::~PropertyBoolList() //************************************************************************** // Base class implementer -PyObject *PropertyBoolList::getPyObject(void) +PyObject *PropertyBoolList::getPyObject() { PyObject* tuple = PyTuple_New(getSize()); for(int i = 0;i= 3 str = PyUnicode_AsUTF8(value); -#else - PyObject* unicode = PyUnicode_AsUTF8String(value); - str = PyString_AsString(unicode); - Py_DECREF(unicode); - boost::dynamic_bitset<> values(str); - setValues(values); - } else if (PyString_Check(value)) { - str = PyString_AsString(value); -#endif boost::dynamic_bitset<> values(str); setValues(values); }else @@ -2276,13 +2102,8 @@ void PropertyBoolList::setPyObject(PyObject *value) bool PropertyBoolList::getPyValue(PyObject *item) const { if (PyBool_Check(item)) { return (PyObject_IsTrue(item) ? true : false); -#if PY_MAJOR_VERSION < 3 - } else if (PyInt_Check(item)) { - return (PyInt_AsLong(item) ? true : false); -#else } else if (PyLong_Check(item)) { return (PyLong_AsLong(item) ? true : false); -#endif } else { std::string error = std::string("type in list must be bool or int, not "); error += item->ob_type->tp_name; @@ -2309,7 +2130,7 @@ void PropertyBoolList::Restore(Base::XMLReader &reader) setValues(bitset); } -Property *PropertyBoolList::Copy(void) const +Property *PropertyBoolList::Copy() const { PropertyBoolList *p= new PropertyBoolList(); p->_lValueList = _lValueList; @@ -2321,7 +2142,7 @@ void PropertyBoolList::Paste(const Property &from) setValues(dynamic_cast(from)._lValueList); } -unsigned int PropertyBoolList::getMemSize (void) const +unsigned int PropertyBoolList::getMemSize () const { return static_cast(_lValueList.size()); } @@ -2370,12 +2191,12 @@ void PropertyColor::setValue(float r, float g, float b, float a) hasSetValue(); } -const Color& PropertyColor::getValue(void) const +const Color& PropertyColor::getValue() const { return _cCol; } -PyObject *PropertyColor::getPyObject(void) +PyObject *PropertyColor::getPyObject() { PyObject* rgba = PyTuple_New(4); PyObject* r = PyFloat_FromDouble(_cCol.r); @@ -2462,7 +2283,7 @@ void PropertyColor::Restore(Base::XMLReader &reader) setValue(rgba); } -Property *PropertyColor::Copy(void) const +Property *PropertyColor::Copy() const { PropertyColor *p= new PropertyColor(); p->_cCol = _cCol; @@ -2498,7 +2319,7 @@ PropertyColorList::~PropertyColorList() //************************************************************************** // Base class implementer -PyObject *PropertyColorList::getPyObject(void) +PyObject *PropertyColorList::getPyObject() { PyObject* list = PyList_New(getSize()); @@ -2571,7 +2392,7 @@ void PropertyColorList::RestoreDocFile(Base::Reader &reader) setValues(values); } -Property *PropertyColorList::Copy(void) const +Property *PropertyColorList::Copy() const { PropertyColorList *p= new PropertyColorList(); p->_lValueList = _lValueList; @@ -2583,7 +2404,7 @@ void PropertyColorList::Paste(const Property &from) setValues(dynamic_cast(from)._lValueList); } -unsigned int PropertyColorList::getMemSize (void) const +unsigned int PropertyColorList::getMemSize () const { return static_cast(_lValueList.size() * sizeof(Color)); } @@ -2612,7 +2433,7 @@ void PropertyMaterial::setValue(const Material &mat) hasSetValue(); } -const Material& PropertyMaterial::getValue(void) const +const Material& PropertyMaterial::getValue() const { return _cMat; } @@ -2659,7 +2480,7 @@ void PropertyMaterial::setTransparency(float val) hasSetValue(); } -PyObject *PropertyMaterial::getPyObject(void) +PyObject *PropertyMaterial::getPyObject() { return new MaterialPy(new Material(_cMat)); } @@ -2703,14 +2524,14 @@ void PropertyMaterial::Restore(Base::XMLReader &reader) hasSetValue(); } -const char* PropertyMaterial::getEditorName(void) const +const char* PropertyMaterial::getEditorName() const { if(testStatus(MaterialEdit)) return "Gui::PropertyEditor::PropertyMaterialItem"; return ""; } -Property *PropertyMaterial::Copy(void) const +Property *PropertyMaterial::Copy() const { PropertyMaterial *p= new PropertyMaterial(); p->_cMat = _cMat; @@ -2746,7 +2567,7 @@ PropertyMaterialList::~PropertyMaterialList() //************************************************************************** // Base class implementer -PyObject *PropertyMaterialList::getPyObject(void) +PyObject *PropertyMaterialList::getPyObject() { Py::Tuple tuple(getSize()); @@ -2828,14 +2649,14 @@ void PropertyMaterialList::RestoreDocFile(Base::Reader &reader) setValues(values); } -const char* PropertyMaterialList::getEditorName(void) const +const char* PropertyMaterialList::getEditorName() const { if(testStatus(NoMaterialListEdit)) return ""; return "Gui::PropertyEditor::PropertyMaterialListItem"; } -Property *PropertyMaterialList::Copy(void) const +Property *PropertyMaterialList::Copy() const { PropertyMaterialList *p = new PropertyMaterialList(); p->_lValueList = _lValueList; @@ -2847,7 +2668,7 @@ void PropertyMaterialList::Paste(const Property &from) setValues(dynamic_cast(from)._lValueList); } -unsigned int PropertyMaterialList::getMemSize(void) const +unsigned int PropertyMaterialList::getMemSize() const { return static_cast(_lValueList.size() * sizeof(Material)); } @@ -2901,7 +2722,7 @@ void PropertyPersistentObject::Paste(const Property &from){ } } -unsigned int PropertyPersistentObject::getMemSize (void) const{ +unsigned int PropertyPersistentObject::getMemSize () const{ auto size = inherited::getMemSize(); if(_pObject) size += _pObject->getMemSize(); diff --git a/src/Base/Interpreter.cpp b/src/Base/Interpreter.cpp index 2e85c8adc6..8d51a31579 100644 --- a/src/Base/Interpreter.cpp +++ b/src/Base/Interpreter.cpp @@ -510,11 +510,7 @@ void InterpreterSingleton::addPythonPath(const char* Path) const char* InterpreterSingleton::init(int argc,char *argv[]) { if (!Py_IsInitialized()) { -#if PY_VERSION_HEX >= 0x03050000 Py_SetProgramName(Py_DecodeLocale(argv[0],nullptr)); -#else - Py_SetProgramName(_Py_char2wchar(argv[0],nullptr)); -#endif // There is a serious bug in VS from 2010 until 2013 where the file descriptor for stdin, stdout or stderr // returns a valid value for GUI applications (i.e. subsystem = Windows) where it shouldn't. // This causes Python to fail during initialization. diff --git a/src/Main/MainGui.cpp b/src/Main/MainGui.cpp index 47e2e53a3d..21c54845d1 100644 --- a/src/Main/MainGui.cpp +++ b/src/Main/MainGui.cpp @@ -249,15 +249,7 @@ int main( int argc, char ** argv ) "Python is searching for its files in the following directories:\n%3\n\n" "Python version information:\n%4\n") .arg(appName, QString::fromUtf8(e.what()), -#if PY_MAJOR_VERSION >= 3 -#if PY_MINOR_VERSION >= 5 QString::fromUtf8(Py_EncodeLocale(Py_GetPath(),NULL)), QString::fromLatin1(Py_GetVersion())); -#else - QString::fromUtf8(_Py_wchar2char(Py_GetPath(),NULL)), QString::fromLatin1(Py_GetVersion())); -#endif -#else - QString::fromUtf8(Py_GetPath()), QString::fromLatin1(Py_GetVersion())); -#endif const char* pythonhome = getenv("PYTHONHOME"); if (pythonhome) { msg += QObject::tr("\nThe environment variable PYTHONHOME is set to '%1'.")