From cfd41683a55fdd4c745452a9d466dac0f7d781b8 Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Mon, 27 Nov 2023 10:37:29 -0600 Subject: [PATCH] Core: Enable compiling with MSVC /permissive- (#11014) * Base: Fixes for MSVC permissive- * App: Fixes for MSVC permissive- * Gui: Fixes for MSVC permissive- * Main: Fixes for MSVC permissive- * Fem: Fixes for MSVC permissive- * Material: Fixes for MSVC permissive- * Part: Fixes for MSVC permissive- * Mesh: Fixes for MSVC permissive- * Points: Fixes for MSVC permissive- * Robot: Fixes for MSVC permissive- * TechDraw: Fixes for MSVC permissive- * Path: Fixes for MSVC permissive- * Core; Changes per review comments * TD: Revision from wandererfan * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- src/App/Application.cpp | 13 +++++----- src/App/ApplicationPy.cpp | 8 +++--- src/App/DocumentPyImp.cpp | 13 +++++++--- src/App/Origin.h | 4 +-- src/App/PropertyContainerPyImp.cpp | 2 +- src/Base/Quantity.cpp | 2 +- src/Base/UnitsApiPy.cpp | 3 +-- src/Gui/3Dconnexion/GuiNativeEventWin32.cpp | 13 ++++++++-- src/Gui/3Dconnexion/GuiNativeEventWin32.h | 4 +++ src/Gui/3Dconnexion/GuiRawInputEventFilter.h | 10 ++++++++ src/Gui/ApplicationPy.cpp | 5 ++-- src/Gui/CommandPyImp.cpp | 9 ++++--- src/Gui/DlgProjectInformationImp.cpp | 2 +- src/Gui/MainWindow.cpp | 4 +-- src/Gui/QtAll.h | 1 + src/Gui/Selection.cpp | 4 +-- src/Gui/SelectionFilter.cpp | 2 +- src/Gui/View3DPy.cpp | 6 +++-- src/Gui/ViewProviderLink.cpp | 25 +++++++++++-------- src/Gui/ViewProviderLink.h | 11 ++++---- src/Main/MainGui.cpp | 4 +-- src/Mod/Fem/App/AppFemPy.cpp | 2 +- .../Material/App/MaterialManagerPyImpl.cpp | 10 ++++---- src/Mod/Material/App/ModelManagerPyImpl.cpp | 6 ++--- src/Mod/Mesh/App/AppMeshPy.cpp | 2 +- src/Mod/Mesh/App/MeshPyImp.cpp | 2 +- src/Mod/Part/App/AppPartPy.cpp | 4 +-- src/Mod/Part/App/BSplineCurvePyImp.cpp | 4 +-- src/Mod/Part/App/BSplineSurfacePyImp.cpp | 2 +- .../Part/App/Geom2d/BSplineCurve2dPyImp.cpp | 4 +-- src/Mod/Part/App/Geom2d/Curve2dPyImp.cpp | 2 +- src/Mod/Part/App/GeometryCurvePyImp.cpp | 2 +- src/Mod/Part/App/GeometrySurfacePyImp.cpp | 3 ++- src/Mod/Part/App/OpenCascadeAll.h | 9 ++++++- src/Mod/Part/App/PlateSurfacePyImp.cpp | 2 +- src/Mod/Part/App/TopoShapePyImp.cpp | 2 +- src/Mod/Path/App/AppPathPy.cpp | 2 +- src/Mod/Path/App/CommandPyImp.cpp | 2 +- src/Mod/Points/App/AppPointsPy.cpp | 2 +- src/Mod/Robot/App/WaypointPyImp.cpp | 4 +-- src/Mod/TechDraw/App/AppTechDrawPy.cpp | 8 +++--- src/Mod/TechDraw/App/PreCompiled.h | 3 --- src/Mod/TechDraw/Gui/PreCompiled.h | 2 -- src/Mod/TechDraw/Gui/QGISectionLine.h | 2 +- src/Mod/TechDraw/Gui/QGIViewPart.cpp | 2 +- 45 files changed, 133 insertions(+), 95 deletions(-) diff --git a/src/App/Application.cpp b/src/App/Application.cpp index 067a58faa1..c178b35aa6 100644 --- a/src/App/Application.cpp +++ b/src/App/Application.cpp @@ -2960,14 +2960,13 @@ void Application::LoadParameters() } } - -#if defined(_MSC_VER) -// fix weird error while linking boost (all versions of VC) -// VS2010: https://forum.freecad.org/viewtopic.php?f=4&t=1886&p=12553&hilit=boost%3A%3Afilesystem%3A%3Aget#p12553 -namespace boost { namespace program_options { std::string arg="arg"; } } -namespace boost { namespace program_options { +#if defined(_MSC_VER) && BOOST_VERSION < 108300 + // fix weird error while linking boost (all versions of VC) + // VS2010: https://forum.freecad.org/viewtopic.php?f=4&t=1886&p=12553&hilit=boost%3A%3Afilesystem%3A%3Aget#p12553 + namespace boost { namespace program_options { std::string arg="arg"; } } + namespace boost { namespace program_options { const unsigned options_description::m_default_line_length = 80; -} } + } } #endif // A helper function to simplify the main part. diff --git a/src/App/ApplicationPy.cpp b/src/App/ApplicationPy.cpp index d37c296809..49b7cc28ca 100644 --- a/src/App/ApplicationPy.cpp +++ b/src/App/ApplicationPy.cpp @@ -186,9 +186,9 @@ PyMethodDef Application::Methods[] = { PyObject* Application::sLoadFile(PyObject * /*self*/, PyObject *args) { - char *path; - char *doc=""; - char *mod=""; + const char *path; + const char *doc=""; + const char *mod=""; if (!PyArg_ParseTuple(args, "s|ss", &path, &doc, &mod)) return nullptr; try { @@ -398,7 +398,7 @@ PyObject* Application::sGetParam(PyObject * /*self*/, PyObject *args) PyObject* Application::sSaveParameter(PyObject * /*self*/, PyObject *args) { - char *pstr = "User parameter"; + const char *pstr = "User parameter"; if (!PyArg_ParseTuple(args, "|s", &pstr)) return nullptr; diff --git a/src/App/DocumentPyImp.cpp b/src/App/DocumentPyImp.cpp index 9baa2402cb..7679be66cf 100644 --- a/src/App/DocumentPyImp.cpp +++ b/src/App/DocumentPyImp.cpp @@ -43,16 +43,21 @@ using namespace App; PyObject* DocumentPy::addProperty(PyObject *args, PyObject *kwd) { - char *sType,*sName=nullptr,*sGroup=nullptr,*sDoc=nullptr; + char *sType {nullptr}; + char *sName {nullptr}; + char *sGroup {nullptr}; + char *sDoc {nullptr}; short attr=0; std::string sDocStr; PyObject *ro = Py_False, *hd = Py_False; PyObject* enumVals = nullptr; - static char *kwlist[] = {"type","name","group","doc","attr","read_only","hidden","enum_vals",nullptr}; - if (!PyArg_ParseTupleAndKeywords( + static const std::array kwlist{"type", "name", "group", "doc", "attr", + "read_only", "hidden", "enum_vals", nullptr}; + if (!Base::Wrapped_ParseTupleAndKeywords( args, kwd, "ss|sethO!O!O", kwlist, &sType, &sName, &sGroup, "utf-8", - &sDoc, &attr, &PyBool_Type, &ro, &PyBool_Type, &hd, &enumVals)) + &sDoc, &attr, &PyBool_Type, &ro, &PyBool_Type, &hd, &enumVals)) { return nullptr; + } if (sDoc) { sDocStr = sDoc; diff --git a/src/App/Origin.h b/src/App/Origin.h index 3098fa68f1..ff4d1372aa 100644 --- a/src/App/Origin.h +++ b/src/App/Origin.h @@ -117,9 +117,9 @@ public: short mustExecute() const override; /// Axis types - static constexpr char* AxisRoles[3] = {"X_Axis", "Y_Axis", "Z_Axis"}; + static constexpr const char* AxisRoles[3] = {"X_Axis", "Y_Axis", "Z_Axis"}; /// Baseplane types - static constexpr char* PlaneRoles[3] = {"XY_Plane", "XZ_Plane", "YZ_Plane"}; + static constexpr const char* PlaneRoles[3] = {"XY_Plane", "XZ_Plane", "YZ_Plane"}; // Axis links PropertyLinkList OriginFeatures; diff --git a/src/App/PropertyContainerPyImp.cpp b/src/App/PropertyContainerPyImp.cpp index 657ca5b72a..083adb27c8 100644 --- a/src/App/PropertyContainerPyImp.cpp +++ b/src/App/PropertyContainerPyImp.cpp @@ -286,7 +286,7 @@ PyObject* PropertyContainerPy::setPropertyStatus(PyObject *args) PyObject* PropertyContainerPy::getPropertyStatus(PyObject *args) { - char* name = ""; + const char* name = ""; if (!PyArg_ParseTuple(args, "|s", &name)) return nullptr; diff --git a/src/Base/Quantity.cpp b/src/Base/Quantity.cpp index cb107f3b85..59350fd5a0 100644 --- a/src/Base/Quantity.cpp +++ b/src/Base/Quantity.cpp @@ -491,7 +491,7 @@ double num_change(char* yytext, char dez_delim, char grp_delim) #endif // error func -void Quantity_yyerror(char* errorinfo) +void Quantity_yyerror(const char* errorinfo) { throw Base::ParserError(errorinfo); } diff --git a/src/Base/UnitsApiPy.cpp b/src/Base/UnitsApiPy.cpp index ba14c0726f..6060442972 100644 --- a/src/Base/UnitsApiPy.cpp +++ b/src/Base/UnitsApiPy.cpp @@ -188,9 +188,8 @@ PyObject* UnitsApi::sSchemaTranslate(PyObject* /*self*/, PyObject* args) PyObject* UnitsApi::sToNumber(PyObject* /*self*/, PyObject* args) { double value {}; - char* format = "g"; + const char* format = "g"; int decimals {}; - do { PyObject* py {}; if (PyArg_ParseTuple(args, "O!|si", &(QuantityPy::Type), &py, &format, &decimals)) { diff --git a/src/Gui/3Dconnexion/GuiNativeEventWin32.cpp b/src/Gui/3Dconnexion/GuiNativeEventWin32.cpp index 9029309eda..fab331926a 100644 --- a/src/Gui/3Dconnexion/GuiNativeEventWin32.cpp +++ b/src/Gui/3Dconnexion/GuiNativeEventWin32.cpp @@ -318,8 +318,11 @@ unsigned short HidToVirtualKey(unsigned long pid, unsigned short hidKeyCode) return virtualkey; } - +#if QT_VERSION < QT_VERSION_CHECK(6,0,0) bool Gui::GuiNativeEvent::RawInputEventFilter(void *msg, long *result) +#else +bool Gui::GuiNativeEvent::RawInputEventFilter(void *msg, qintptr *result) +#endif { if (gMouseInput == 0) return false; @@ -1071,6 +1074,12 @@ bool Gui::GuiNativeEvent::TranslateSpaceMouseOldGeneric(UINT nInputCode, PRAWINP bool processed = false; bool bIsForeground = (nInputCode == RIM_INPUT); + // Initialize with some random bit of data before we look up the real value later on + if (fDevice2Data.empty()) { + return false; + } + TInputData &deviceData = fDevice2Data.begin()->second; + PHIDP_PREPARSED_DATA pPreparsedData; HIDP_CAPS Caps; PHIDP_BUTTON_CAPS pButtonCaps; @@ -1141,7 +1150,7 @@ bool Gui::GuiNativeEvent::TranslateSpaceMouseOldGeneric(UINT nInputCode, PRAWINP // Get the state of discrete-valued-controls // - TInputData &deviceData = fDevice2Data[pRawInput->header.hDevice]; + deviceData = fDevice2Data[pRawInput->header.hDevice]; deviceData.fTimeToLive = kTimeToLive; if (bIsForeground) { for (i = 0; i < Caps.NumberInputValueCaps; i++) { diff --git a/src/Gui/3Dconnexion/GuiNativeEventWin32.h b/src/Gui/3Dconnexion/GuiNativeEventWin32.h index 94a223b7d7..e330decbee 100644 --- a/src/Gui/3Dconnexion/GuiNativeEventWin32.h +++ b/src/Gui/3Dconnexion/GuiNativeEventWin32.h @@ -62,7 +62,11 @@ namespace Gui private: bool InitializeRawInput(HWND hwndTarget); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) static bool RawInputEventFilter(void* msg, long* result); +#else + static bool RawInputEventFilter(void* msg, qintptr* result); +#endif void OnRawInput(UINT nInputCode, HRAWINPUT hRawInput); UINT GetRawInputBuffer(PRAWINPUT pData, PUINT pcbSize, UINT cbSizeHeader); bool TranslateRawInputData(UINT nInputCode, PRAWINPUT pRawInput); diff --git a/src/Gui/3Dconnexion/GuiRawInputEventFilter.h b/src/Gui/3Dconnexion/GuiRawInputEventFilter.h index ce26116e89..5a8e8c6f68 100644 --- a/src/Gui/3Dconnexion/GuiRawInputEventFilter.h +++ b/src/Gui/3Dconnexion/GuiRawInputEventFilter.h @@ -30,15 +30,25 @@ namespace Gui class RawInputEventFilter : public QAbstractNativeEventFilter { public: + #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) using EventFilter = bool (*)(void *message, long *result); + #else + using EventFilter = bool (*)(void *message, qintptr *result); + #endif RawInputEventFilter(EventFilter filter) : eventFilter(filter) { } virtual ~RawInputEventFilter() { } + #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) virtual bool nativeEventFilter(const QByteArray & /*eventType*/, void *message, long *result) { return eventFilter(message, result); } + #else + virtual bool nativeEventFilter(const QByteArray & /*eventType*/, void *message, qintptr *result) { + return eventFilter(message, result); + } + #endif private: EventFilter eventFilter; diff --git a/src/Gui/ApplicationPy.cpp b/src/Gui/ApplicationPy.cpp index 2add20a5d2..288d8c7242 100644 --- a/src/Gui/ApplicationPy.cpp +++ b/src/Gui/ApplicationPy.cpp @@ -1489,7 +1489,8 @@ PyObject* Application::sReload(PyObject * /*self*/, PyObject *args) PyObject* Application::sLoadFile(PyObject * /*self*/, PyObject *args) { - const char *path, *mod = ""; + const char *path = ""; + const char *mod = ""; if (!PyArg_ParseTuple(args, "s|s", &path, &mod)) return nullptr; @@ -1610,7 +1611,7 @@ PyObject* Application::sGetUserEditMode(PyObject * /*self*/, PyObject *args) PyObject* Application::sSetUserEditMode(PyObject * /*self*/, PyObject *args) { - char *mode = ""; + const char *mode = ""; if (!PyArg_ParseTuple(args, "s", &mode)) return nullptr; diff --git a/src/Gui/CommandPyImp.cpp b/src/Gui/CommandPyImp.cpp index 335d10b105..09cbf9fcd5 100644 --- a/src/Gui/CommandPyImp.cpp +++ b/src/Gui/CommandPyImp.cpp @@ -27,6 +27,8 @@ # include #endif +#include + #include "Command.h" #include "Action.h" #include "Application.h" @@ -34,7 +36,6 @@ #include "Selection.h" #include "Window.h" #include "PythonWrapper.h" -#include // inclusion of the generated files (generated out of CommandPy.xml) #include "CommandPy.h" @@ -297,10 +298,10 @@ PyObject* CommandPy::createCustomCommand(PyObject* args, PyObject* kw) const char* statustipTxt = nullptr; const char* pixmapTxt = nullptr; const char* shortcutTxt = nullptr; - static const std::array kwlist{"macroFile", "menuText", "toolTip", "whatsThis", "statusTip", - "pixmap", "shortcut", nullptr}; + static std::array kwlist {"macroFile", "menuText", "toolTip", "whatsThis", + "statusTip", "pixmap", "shortcut", nullptr}; if (!Base::Wrapped_ParseTupleAndKeywords(args, kw, "s|zzzzzz", kwlist, ¯oFile, &menuTxt, - &tooltipTxt, &whatsthisTxt, &statustipTxt, &pixmapTxt, &shortcutTxt)) { + &tooltipTxt, &whatsthisTxt, &statustipTxt, &pixmapTxt, &shortcutTxt)) { return nullptr; } diff --git a/src/Gui/DlgProjectInformationImp.cpp b/src/Gui/DlgProjectInformationImp.cpp index 9c794844bd..8f3de3e7a8 100644 --- a/src/Gui/DlgProjectInformationImp.cpp +++ b/src/Gui/DlgProjectInformationImp.cpp @@ -146,7 +146,7 @@ void DlgProjectInformationImp::accept() (QLatin1String("\n"), QString::KeepEmptyParts); #endif QString text = lines.join(QLatin1String("\\n")); - _doc->Comment.setValue(text.isEmpty() ? "" : text.toUtf8()); + _doc->Comment.setValue(text.isEmpty() ? QByteArray() : text.toUtf8()); QDialog::accept(); } diff --git a/src/Gui/MainWindow.cpp b/src/Gui/MainWindow.cpp index 0f42ad7960..46b7bba165 100644 --- a/src/Gui/MainWindow.cpp +++ b/src/Gui/MainWindow.cpp @@ -54,7 +54,7 @@ # include #endif -#if defined(Q_OS_WIN) +#if defined(Q_OS_WIN) && QT_VERSION < QT_VERSION_CHECK(6,0,0) # include #endif @@ -1740,7 +1740,7 @@ void MainWindow::loadWindowSettings() max ? showMaximized() : show(); // make menus and tooltips usable in fullscreen under Windows, see issue #7563 -#if defined(Q_OS_WIN) +#if defined(Q_OS_WIN) && QT_VERSION < QT_VERSION_CHECK(6,0,0) if (QWindow* win = this->windowHandle()) { QWindowsWindowFunctions::setHasBorderInFullScreen(win, true); } diff --git a/src/Gui/QtAll.h b/src/Gui/QtAll.h index 2dff1229ce..6f1cbda09c 100644 --- a/src/Gui/QtAll.h +++ b/src/Gui/QtAll.h @@ -97,6 +97,7 @@ #include #include #include +#include #include #include #include diff --git a/src/Gui/Selection.cpp b/src/Gui/Selection.cpp index 4de9c0dd6e..ca2fa3dee7 100644 --- a/src/Gui/Selection.cpp +++ b/src/Gui/Selection.cpp @@ -37,8 +37,8 @@ #include #include #include -#include #include +#include #include "Selection.h" #include "SelectionObject.h" @@ -2145,7 +2145,7 @@ PyObject *SelectionSingleton::sEnablePickedList(PyObject * /*self*/, PyObject *a PyObject *SelectionSingleton::sSetPreselection(PyObject * /*self*/, PyObject *args, PyObject *kwd) { PyObject *object; - char* subname = nullptr; + const char* subname = nullptr; float x = 0, y = 0, z = 0; int type = 1; static const std::array kwlist{"obj", "subname", "x", "y", "z", "tp", nullptr}; diff --git a/src/Gui/SelectionFilter.cpp b/src/Gui/SelectionFilter.cpp index e08d3bba74..fb10eeece5 100644 --- a/src/Gui/SelectionFilter.cpp +++ b/src/Gui/SelectionFilter.cpp @@ -236,7 +236,7 @@ SelectionFilter* ActFilter=nullptr; Node_Block *TopBlock=nullptr; // error func -void yyerror(char *errorinfo) +void yyerror(const char *errorinfo) { ActFilter->addError(errorinfo); } diff --git a/src/Gui/View3DPy.cpp b/src/Gui/View3DPy.cpp index b15f2c1803..f6113588f1 100644 --- a/src/Gui/View3DPy.cpp +++ b/src/Gui/View3DPy.cpp @@ -856,7 +856,9 @@ Py::Object View3DInventorPy::isPopupMenuEnabled() Py::Object View3DInventorPy::saveImage(const Py::Tuple& args) { - char *cFileName,*cColor="Current",*cComment="$MIBA"; + char *cFileName = nullptr; + const char *cColor="Current"; + const char *cComment="$MIBA"; int w=-1,h=-1; int s=View3DInventorViewer::getNumSamples(); @@ -891,7 +893,7 @@ Py::Object View3DInventorPy::saveVectorGraphic(const Py::Tuple& args) { char* filename; int ps=4; - char* name="white"; + const char* name="white"; if (!PyArg_ParseTuple(args.ptr(), "s|is",&filename,&ps,&name)) throw Py::Exception(); diff --git a/src/Gui/ViewProviderLink.cpp b/src/Gui/ViewProviderLink.cpp index d67c933efc..68a89a1dfb 100644 --- a/src/Gui/ViewProviderLink.cpp +++ b/src/Gui/ViewProviderLink.cpp @@ -315,12 +315,12 @@ public: // VC2013 has trouble with template argument dependent lookup in // namespace. Have to put the below functions in global namespace. // - // However, gcc seems to behave the oppsite, hence the conditional + // However, gcc seems to behave the opposite, hence the conditional // compilation here. // -#ifdef _MSC_VER - friend void ::intrusive_ptr_add_ref(LinkInfo *px); - friend void ::intrusive_ptr_release(LinkInfo *px); +#if defined(_MSC_VER) + friend void Gui::intrusive_ptr_add_ref(LinkInfo *px); + friend void Gui::intrusive_ptr_release(LinkInfo *px); #else friend inline void intrusive_ptr_add_ref(LinkInfo *px) { px->addref(); } friend inline void intrusive_ptr_release(LinkInfo *px) { px->release(); } @@ -688,13 +688,18 @@ public: } }; -#ifdef _MSC_VER -void intrusive_ptr_add_ref(Gui::LinkInfo *px){ - px->addref(); -} +#if defined(_MSC_VER) +namespace Gui +{ + void intrusive_ptr_add_ref(Gui::LinkInfo* px) + { + px->addref(); + } -void intrusive_ptr_release(Gui::LinkInfo *px){ - px->release(); + void intrusive_ptr_release(Gui::LinkInfo* px) + { + px->release(); + } } #endif diff --git a/src/Gui/ViewProviderLink.h b/src/Gui/ViewProviderLink.h index 5ff3edb5ba..73258a6f51 100644 --- a/src/Gui/ViewProviderLink.h +++ b/src/Gui/ViewProviderLink.h @@ -40,6 +40,12 @@ namespace Gui { class LinkInfo; using LinkInfoPtr = boost::intrusive_ptr; +#if defined(_MSC_VER) +// forward declaration to please VC 2013 +void intrusive_ptr_add_ref(Gui::LinkInfo *px); +void intrusive_ptr_release(Gui::LinkInfo *px); +#endif + class GuiExport ViewProviderLinkObserver: public ViewProviderExtension { EXTENSION_TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: @@ -337,10 +343,5 @@ using ViewProviderLinkPython = ViewProviderPythonFeatureT; } //namespace Gui -#ifdef _MSC_VER -// forward declaration to please VC 2013 -void intrusive_ptr_add_ref(Gui::LinkInfo *px); -void intrusive_ptr_release(Gui::LinkInfo *px); -#endif #endif // GUI_VIEWPROVIDER_LINK_H diff --git a/src/Main/MainGui.cpp b/src/Main/MainGui.cpp index 3b6d5bb6c3..acc0b55776 100644 --- a/src/Main/MainGui.cpp +++ b/src/Main/MainGui.cpp @@ -274,9 +274,9 @@ int main( int argc, char ** argv ) if (App::Application::Config()["Console"] == "1") App::Application::runApplication(); if (App::Application::Config()["RunMode"] == "Gui" || - App::Application::Config()["RunMode"] == "Internal") + App::Application::Config()["RunMode"] == "Internal") { Gui::Application::runApplication(); - else + } else App::Application::runApplication(); } catch (const Base::SystemExitException& e) { diff --git a/src/Mod/Fem/App/AppFemPy.cpp b/src/Mod/Fem/App/AppFemPy.cpp index 6b08618a28..b39da210cd 100644 --- a/src/Mod/Fem/App/AppFemPy.cpp +++ b/src/Mod/Fem/App/AppFemPy.cpp @@ -290,7 +290,7 @@ private: Py::Object show(const Py::Tuple& args) { PyObject* pcObj; - char* name = "Mesh"; + const char* name = "Mesh"; if (!PyArg_ParseTuple(args.ptr(), "O!|s", &(FemMeshPy::Type), &pcObj, &name)) { throw Py::Exception(); } diff --git a/src/Mod/Material/App/MaterialManagerPyImpl.cpp b/src/Mod/Material/App/MaterialManagerPyImpl.cpp index 560e22c9e3..954af4ee27 100644 --- a/src/Mod/Material/App/MaterialManagerPyImpl.cpp +++ b/src/Mod/Material/App/MaterialManagerPyImpl.cpp @@ -54,7 +54,7 @@ int MaterialManagerPy::PyInit(PyObject* /*args*/, PyObject* /*kwd*/) PyObject* MaterialManagerPy::getMaterial(PyObject* args) { - char* uuid; + char* uuid {}; if (!PyArg_ParseTuple(args, "s", &uuid)) { return nullptr; } @@ -71,8 +71,8 @@ PyObject* MaterialManagerPy::getMaterial(PyObject* args) PyObject* MaterialManagerPy::getMaterialByPath(PyObject* args) { - char* path; - char* lib = ""; + char* path {}; + const char* lib = ""; if (!PyArg_ParseTuple(args, "s|s", &path, &lib)) { return nullptr; } @@ -152,7 +152,7 @@ int MaterialManagerPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj PyObject* MaterialManagerPy::materialsWithModel(PyObject* args) { - char* uuid; + char* uuid {}; if (!PyArg_ParseTuple(args, "s", &uuid)) { return nullptr; } @@ -173,7 +173,7 @@ PyObject* MaterialManagerPy::materialsWithModel(PyObject* args) PyObject* MaterialManagerPy::materialsWithModelComplete(PyObject* args) { - char* uuid; + char* uuid {}; if (!PyArg_ParseTuple(args, "s", &uuid)) { return nullptr; } diff --git a/src/Mod/Material/App/ModelManagerPyImpl.cpp b/src/Mod/Material/App/ModelManagerPyImpl.cpp index b7b2608a26..d6869c7da7 100644 --- a/src/Mod/Material/App/ModelManagerPyImpl.cpp +++ b/src/Mod/Material/App/ModelManagerPyImpl.cpp @@ -54,7 +54,7 @@ int ModelManagerPy::PyInit(PyObject* /*args*/, PyObject* /*kwd*/) PyObject* ModelManagerPy::getModel(PyObject* args) { - char* uuid; + char* uuid {}; if (!PyArg_ParseTuple(args, "s", &uuid)) { return nullptr; } @@ -85,8 +85,8 @@ PyObject* ModelManagerPy::getModel(PyObject* args) PyObject* ModelManagerPy::getModelByPath(PyObject* args) { - char* path; - char* lib = ""; + char* path {}; + const char* lib = ""; if (!PyArg_ParseTuple(args, "s|s", &path, &lib)) { return nullptr; } diff --git a/src/Mod/Mesh/App/AppMeshPy.cpp b/src/Mod/Mesh/App/AppMeshPy.cpp index 9f366f6bb7..dbb6506428 100644 --- a/src/Mod/Mesh/App/AppMeshPy.cpp +++ b/src/Mod/Mesh/App/AppMeshPy.cpp @@ -293,7 +293,7 @@ private: Py::Object show(const Py::Tuple& args) { PyObject* pcObj {}; - char* name = "Mesh"; + const char* name = "Mesh"; if (!PyArg_ParseTuple(args.ptr(), "O!|s", &(MeshPy::Type), &pcObj, &name)) { throw Py::Exception(); } diff --git a/src/Mod/Mesh/App/MeshPyImp.cpp b/src/Mod/Mesh/App/MeshPyImp.cpp index 7082c2ef30..75a31658c4 100644 --- a/src/Mod/Mesh/App/MeshPyImp.cpp +++ b/src/Mod/Mesh/App/MeshPyImp.cpp @@ -1981,7 +1981,7 @@ PyObject* MeshPy::trimByPlane(PyObject* args) PyObject* MeshPy::smooth(PyObject* args, PyObject* kwds) { - char* method = "Laplace"; + const char* method = "Laplace"; int iter = 1; double lambda = 0; double micro = 0; diff --git a/src/Mod/Part/App/AppPartPy.cpp b/src/Mod/Part/App/AppPartPy.cpp index 6e219af4e9..367b7d8bc1 100644 --- a/src/Mod/Part/App/AppPartPy.cpp +++ b/src/Mod/Part/App/AppPartPy.cpp @@ -838,7 +838,7 @@ private: Py::Object show(const Py::Tuple& args) { PyObject *pcObj = nullptr; - char *name = "Shape"; + const char *name = "Shape"; if (!PyArg_ParseTuple(args.ptr(), "O!|s", &(TopoShapePy::Type), &pcObj, &name)) throw Py::Exception(); @@ -1741,7 +1741,7 @@ private: PyObject *pshape; double radius; double tolerance=0.001; - char* scont = "C0"; + const char* scont = "C0"; int maxdegree = 3; int maxsegment = 30; diff --git a/src/Mod/Part/App/BSplineCurvePyImp.cpp b/src/Mod/Part/App/BSplineCurvePyImp.cpp index d6b92dbc21..537a054e16 100644 --- a/src/Mod/Part/App/BSplineCurvePyImp.cpp +++ b/src/Mod/Part/App/BSplineCurvePyImp.cpp @@ -795,9 +795,9 @@ PyObject* BSplineCurvePy::approximate(PyObject *args, PyObject *kwds) Standard_Integer degMin = 3; Standard_Integer degMax = 8; Standard_Integer segMax = 8; - char *continuity = "C2"; + const char *continuity = "C2"; double tol3d = 1e-3; - char *parType = "ChordLength"; + const char *parType = "ChordLength"; PyObject *par = nullptr; double weight1 = 0; double weight2 = 0; diff --git a/src/Mod/Part/App/BSplineSurfacePyImp.cpp b/src/Mod/Part/App/BSplineSurfacePyImp.cpp index fb5c471f6a..2a162ab566 100644 --- a/src/Mod/Part/App/BSplineSurfacePyImp.cpp +++ b/src/Mod/Part/App/BSplineSurfacePyImp.cpp @@ -1158,7 +1158,7 @@ PyObject* BSplineSurfacePy::approximate(PyObject *args, PyObject *kwds) Standard_Integer degMax=8; Standard_Integer continuity=2; Standard_Real tol3d = Precision::Approximation(); - char* parType = "None"; + const char* parType = "None"; Standard_Real weight1 = 1.0; Standard_Real weight2 = 1.0; Standard_Real weight3 = 1.0; diff --git a/src/Mod/Part/App/Geom2d/BSplineCurve2dPyImp.cpp b/src/Mod/Part/App/Geom2d/BSplineCurve2dPyImp.cpp index 1de80b021e..424e4f8535 100644 --- a/src/Mod/Part/App/Geom2d/BSplineCurve2dPyImp.cpp +++ b/src/Mod/Part/App/Geom2d/BSplineCurve2dPyImp.cpp @@ -732,9 +732,9 @@ PyObject* BSplineCurve2dPy::approximate(PyObject *args, PyObject *kwds) PyObject* obj; Standard_Integer degMin=3; Standard_Integer degMax=8; - char* continuity = "C2"; + const char* continuity = "C2"; double tol3d = 1e-3; - char* parType = "ChordLength"; + const char* parType = "ChordLength"; PyObject* par = nullptr; double weight1 = 0; double weight2 = 0; diff --git a/src/Mod/Part/App/Geom2d/Curve2dPyImp.cpp b/src/Mod/Part/App/Geom2d/Curve2dPyImp.cpp index e7e13ee512..6075099f23 100644 --- a/src/Mod/Part/App/Geom2d/Curve2dPyImp.cpp +++ b/src/Mod/Part/App/Geom2d/Curve2dPyImp.cpp @@ -684,7 +684,7 @@ PyObject* Curve2dPy::approximateBSpline(PyObject *args) { double tolerance; int maxSegment, maxDegree; - char* order = "C2"; + const char* order = "C2"; if (!PyArg_ParseTuple(args, "dii|s", &tolerance, &maxSegment, &maxDegree, &order)) return nullptr; diff --git a/src/Mod/Part/App/GeometryCurvePyImp.cpp b/src/Mod/Part/App/GeometryCurvePyImp.cpp index ba3f1e8696..eefc4dbe22 100644 --- a/src/Mod/Part/App/GeometryCurvePyImp.cpp +++ b/src/Mod/Part/App/GeometryCurvePyImp.cpp @@ -857,7 +857,7 @@ PyObject* GeometryCurvePy::approximateBSpline(PyObject *args) { double tolerance; int maxSegment, maxDegree; - char* order = "C2"; + const char* order = "C2"; if (!PyArg_ParseTuple(args, "dii|s", &tolerance, &maxSegment, &maxDegree, &order)) return nullptr; diff --git a/src/Mod/Part/App/GeometrySurfacePyImp.cpp b/src/Mod/Part/App/GeometrySurfacePyImp.cpp index 276118b3e8..50dd7df30e 100644 --- a/src/Mod/Part/App/GeometrySurfacePyImp.cpp +++ b/src/Mod/Part/App/GeometrySurfacePyImp.cpp @@ -726,7 +726,8 @@ Py::String GeometrySurfacePy::getContinuity() const PyObject* GeometrySurfacePy::toBSpline(PyObject * args, PyObject * kwds) { double tol3d=Precision::Confusion(); - char *ucont="C1", *vcont="C1"; + const char *ucont = "C1"; + const char *vcont = "C1"; int maxDegU=Geom_BSplineSurface::MaxDegree(); int maxDegV=Geom_BSplineSurface::MaxDegree(); int maxSegm=1000, prec=0; diff --git a/src/Mod/Part/App/OpenCascadeAll.h b/src/Mod/Part/App/OpenCascadeAll.h index 2cea6891b1..12b8aa0cce 100644 --- a/src/Mod/Part/App/OpenCascadeAll.h +++ b/src/Mod/Part/App/OpenCascadeAll.h @@ -71,7 +71,6 @@ #include #include #include -#include #include #include #include @@ -80,6 +79,10 @@ #include #include +#if OCC_VERSION_HEX < 0x070700 +# include +#endif + // now in alphabetical order #if OCC_VERSION_HEX < 0x070600 # include @@ -394,7 +397,11 @@ // Quan* #include #include + +#if OCC_VERSION_HEX < 0x070700 #include +#endif + #include // Shape* diff --git a/src/Mod/Part/App/PlateSurfacePyImp.cpp b/src/Mod/Part/App/PlateSurfacePyImp.cpp index 05d7c08e72..9fe7e36ca2 100644 --- a/src/Mod/Part/App/PlateSurfacePyImp.cpp +++ b/src/Mod/Part/App/PlateSurfacePyImp.cpp @@ -148,7 +148,7 @@ PyObject* PlateSurfacePy::makeApprox(PyObject *args, PyObject* kwds) int maxDegree=3; double dmax = 0.0001; int critOrder=0; - char* cont = "C1"; + const char* cont = "C1"; double enlargeCoeff = 1.1; if (!Base::Wrapped_ParseTupleAndKeywords(args, kwds, "|diidisd", kwds_Parameter, diff --git a/src/Mod/Part/App/TopoShapePyImp.cpp b/src/Mod/Part/App/TopoShapePyImp.cpp index e3e1de4c7d..4833e5119e 100644 --- a/src/Mod/Part/App/TopoShapePyImp.cpp +++ b/src/Mod/Part/App/TopoShapePyImp.cpp @@ -2059,7 +2059,7 @@ PyObject* TopoShapePy::reflectLines(PyObject *args, PyObject *kwds) static const std::array kwlist{"ViewDir", "ViewPos", "UpDir", "EdgeType", "Visible", "OnShape", nullptr}; - char* type="OutLine"; + const char* type="OutLine"; PyObject* vis = Py_True; PyObject* in3d = Py_False; PyObject* pPos = nullptr; diff --git a/src/Mod/Path/App/AppPathPy.cpp b/src/Mod/Path/App/AppPathPy.cpp index 5353a2bf65..a89fc3b31e 100644 --- a/src/Mod/Path/App/AppPathPy.cpp +++ b/src/Mod/Path/App/AppPathPy.cpp @@ -215,7 +215,7 @@ namespace PathApp { Py::Object show(const Py::Tuple& args) { PyObject *pcObj; - char *name = "Path"; + const char *name = "Path"; if (!PyArg_ParseTuple(args.ptr(), "O!|s", &(Path::PathPy::Type), &pcObj, &name)) throw Py::Exception(); diff --git a/src/Mod/Path/App/CommandPyImp.cpp b/src/Mod/Path/App/CommandPyImp.cpp index c5ec831dc5..bb181136e9 100644 --- a/src/Mod/Path/App/CommandPyImp.cpp +++ b/src/Mod/Path/App/CommandPyImp.cpp @@ -69,7 +69,7 @@ PyObject *CommandPy::PyMake(struct _typeobject *, PyObject *, PyObject *) // Py int CommandPy::PyInit(PyObject* args, PyObject* kwd) { PyObject *parameters = nullptr; - char *name = ""; + const char *name = ""; static const std::array kwlist {"name", "parameters", nullptr}; if (Base::Wrapped_ParseTupleAndKeywords(args, kwd, "|sO!", kwlist, &name, &PyDict_Type, ¶meters)) { std::string sname(name); diff --git a/src/Mod/Points/App/AppPointsPy.cpp b/src/Mod/Points/App/AppPointsPy.cpp index c446806219..c439779e74 100644 --- a/src/Mod/Points/App/AppPointsPy.cpp +++ b/src/Mod/Points/App/AppPointsPy.cpp @@ -404,7 +404,7 @@ private: Py::Object show(const Py::Tuple& args) { PyObject* pcObj; - char* name = "Points"; + const char* name = "Points"; if (!PyArg_ParseTuple(args.ptr(), "O!|s", &(PointsPy::Type), &pcObj, &name)) { throw Py::Exception(); } diff --git a/src/Mod/Robot/App/WaypointPyImp.cpp b/src/Mod/Robot/App/WaypointPyImp.cpp index 9b4d8aaa11..6c8870a0d9 100644 --- a/src/Mod/Robot/App/WaypointPyImp.cpp +++ b/src/Mod/Robot/App/WaypointPyImp.cpp @@ -90,8 +90,8 @@ PyObject* WaypointPy::PyMake(struct _typeobject*, PyObject*, PyObject*) // Pyth int WaypointPy::PyInit(PyObject* args, PyObject* kwd) { PyObject* pos; - char* name = "P"; - char* type = "PTP"; + const char* name = "P"; + const char* type = "PTP"; PyObject* vel = nullptr; PyObject* acc = nullptr; int cont = 0; diff --git a/src/Mod/TechDraw/App/AppTechDrawPy.cpp b/src/Mod/TechDraw/App/AppTechDrawPy.cpp index f24f71a5d3..950dea6090 100644 --- a/src/Mod/TechDraw/App/AppTechDrawPy.cpp +++ b/src/Mod/TechDraw/App/AppTechDrawPy.cpp @@ -961,19 +961,17 @@ private: { PyObject* pFace(nullptr); double scale = 1.0; - char* pPatName = ""; - char* pPatFile = ""; + const char* pPatName = {nullptr}; + const char* pPatFile = {nullptr}; TechDraw::DrawViewPart* source = nullptr; TopoDS_Face face; - if (!PyArg_ParseTuple(args.ptr(), "O|detet", &pFace, &scale, "utf-8", &pPatName, "utf-8", &pPatFile)) { + if (!PyArg_ParseTuple(args.ptr(), "O|dss", &pFace, &scale, &pPatName, &pPatFile)) { throw Py::TypeError("expected (face, [scale], [patName], [patFile])"); } std::string patName = std::string(pPatName); - PyMem_Free(pPatName); std::string patFile = std::string(pPatFile); - PyMem_Free(pPatFile); if (PyObject_TypeCheck(pFace, &(TopoShapeFacePy::Type))) { const TopoDS_Shape& shape = static_cast(pFace)->getTopoShapePtr()->getShape(); diff --git a/src/Mod/TechDraw/App/PreCompiled.h b/src/Mod/TechDraw/App/PreCompiled.h index 8d30795913..0dcea48ca5 100644 --- a/src/Mod/TechDraw/App/PreCompiled.h +++ b/src/Mod/TechDraw/App/PreCompiled.h @@ -54,14 +54,11 @@ // Qt #include -#include "QDomNodeModel.h" #include #include #include #include #include -#include -#include // OpenCasCade #include diff --git a/src/Mod/TechDraw/Gui/PreCompiled.h b/src/Mod/TechDraw/Gui/PreCompiled.h index e5c345b1fa..487a0962bd 100644 --- a/src/Mod/TechDraw/Gui/PreCompiled.h +++ b/src/Mod/TechDraw/Gui/PreCompiled.h @@ -57,8 +57,6 @@ #ifndef _QtAll__ # include #endif -#include -#include // OpenCasCade #include diff --git a/src/Mod/TechDraw/Gui/QGISectionLine.h b/src/Mod/TechDraw/Gui/QGISectionLine.h index ca2f927f8e..3d07f2f15f 100644 --- a/src/Mod/TechDraw/Gui/QGISectionLine.h +++ b/src/Mod/TechDraw/Gui/QGISectionLine.h @@ -93,7 +93,7 @@ protected: static QPointF normalizeQPointF(QPointF inPoint); private: - char* m_symbol; + const char* m_symbol; QGraphicsPathItem* m_line; QGraphicsPathItem* m_extend; QGIArrow* m_arrow1; diff --git a/src/Mod/TechDraw/Gui/QGIViewPart.cpp b/src/Mod/TechDraw/Gui/QGIViewPart.cpp index bd61ce4502..e692adf21e 100644 --- a/src/Mod/TechDraw/Gui/QGIViewPart.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewPart.cpp @@ -971,7 +971,7 @@ void QGIViewPart::dumpPath(const char* text, QPainterPath path) { QPainterPath::Element elem; Base::Console().Message(">>>%s has %d elements\n", text, path.elementCount()); - char* typeName; + const char* typeName; for (int iElem = 0; iElem < path.elementCount(); iElem++) { elem = path.elementAt(iElem); if (elem.isMoveTo()) {