From 207fb09b6858583d9d52a39feb258211b7feffa8 Mon Sep 17 00:00:00 2001 From: wmayer Date: Tue, 28 Nov 2023 09:36:46 +0100 Subject: [PATCH] MSYS: fix build failure with MinGW & gcc --- .../salomesmesh/inc/SMESH_MeshEditor.hxx | 31 ++- src/Base/Observer.cpp | 2 + src/Base/Observer.h | 3 +- src/Mod/Import/App/dxf/dxf.h | 248 +++++++++--------- 4 files changed, 151 insertions(+), 133 deletions(-) diff --git a/src/3rdParty/salomesmesh/inc/SMESH_MeshEditor.hxx b/src/3rdParty/salomesmesh/inc/SMESH_MeshEditor.hxx index 560c99812c..5a75345151 100644 --- a/src/3rdParty/salomesmesh/inc/SMESH_MeshEditor.hxx +++ b/src/3rdParty/salomesmesh/inc/SMESH_MeshEditor.hxx @@ -45,6 +45,17 @@ #include #include +#if defined(__MINGW32__) +#define SMESH_EXPORT_MINGW SMESH_EXPORT +#define SMESH_EXPORT_MSVC +#elif defined(_MSC_VER) +#define SMESH_EXPORT_MINGW +#define SMESH_EXPORT_MSVC SMESH_EXPORT +#else +#define SMESH_EXPORT_MSVC +#define SMESH_EXPORT_MINGW +#endif + class SMDS_MeshFace; class SMDS_MeshNode; class gp_Ax1; @@ -74,7 +85,7 @@ public: SMESH_ComputeErrorPtr & GetError() { return myError; } // -------------------------------------------------------------------------------- - struct ElemFeatures //!< Features of element to create + struct SMESH_EXPORT_MINGW ElemFeatures //!< Features of element to create { SMDSAbs_ElementType myType; bool myIsPoly, myIsQuad; @@ -82,28 +93,28 @@ public: double myBallDiameter; std::vector myPolyhedQuantities; - SMESH_EXPORT ElemFeatures( SMDSAbs_ElementType type=SMDSAbs_All, bool isPoly=false, bool isQuad=false ) + SMESH_EXPORT_MSVC ElemFeatures( SMDSAbs_ElementType type=SMDSAbs_All, bool isPoly=false, bool isQuad=false ) :myType( type ), myIsPoly(isPoly), myIsQuad(isQuad), myID(-1), myBallDiameter(0) {} - SMESH_EXPORT ElemFeatures& Init( SMDSAbs_ElementType type, bool isPoly=false, bool isQuad=false ) + SMESH_EXPORT_MSVC ElemFeatures& Init( SMDSAbs_ElementType type, bool isPoly=false, bool isQuad=false ) { myType = type; myIsPoly = isPoly; myIsQuad = isQuad; return *this; } - SMESH_EXPORT ElemFeatures& Init( const SMDS_MeshElement* elem, bool basicOnly=true ); + SMESH_EXPORT_MSVC ElemFeatures& Init( const SMDS_MeshElement* elem, bool basicOnly=true ); - SMESH_EXPORT ElemFeatures& Init( double diameter ) + SMESH_EXPORT_MSVC ElemFeatures& Init( double diameter ) { myType = SMDSAbs_Ball; myBallDiameter = diameter; return *this; } - SMESH_EXPORT ElemFeatures& Init( std::vector& quanities, bool isQuad=false ) + SMESH_EXPORT_MSVC ElemFeatures& Init( std::vector& quanities, bool isQuad=false ) { myType = SMDSAbs_Volume; myIsPoly = 1; myIsQuad = isQuad; myPolyhedQuantities.swap( quanities ); return *this; } - SMESH_EXPORT ElemFeatures& Init( const std::vector& quanities, bool isQuad=false ) + SMESH_EXPORT_MSVC ElemFeatures& Init( const std::vector& quanities, bool isQuad=false ) { myType = SMDSAbs_Volume; myIsPoly = 1; myIsQuad = isQuad; myPolyhedQuantities = quanities; return *this; } - SMESH_EXPORT ElemFeatures& SetPoly(bool isPoly) { myIsPoly = isPoly; return *this; } - SMESH_EXPORT ElemFeatures& SetQuad(bool isQuad) { myIsQuad = isQuad; return *this; } - SMESH_EXPORT ElemFeatures& SetID (int ID) { myID = ID; return *this; } + SMESH_EXPORT_MSVC ElemFeatures& SetPoly(bool isPoly) { myIsPoly = isPoly; return *this; } + SMESH_EXPORT_MSVC ElemFeatures& SetQuad(bool isQuad) { myIsQuad = isQuad; return *this; } + SMESH_EXPORT_MSVC ElemFeatures& SetID (int ID) { myID = ID; return *this; } }; /*! diff --git a/src/Base/Observer.cpp b/src/Base/Observer.cpp index db9098e188..b40317e616 100644 --- a/src/Base/Observer.cpp +++ b/src/Base/Observer.cpp @@ -29,7 +29,9 @@ namespace Base { +#if !defined(__MINGW32__) template class BaseExport Observer; template class BaseExport Subject; +#endif } // namespace Base diff --git a/src/Base/Observer.h b/src/Base/Observer.h index a45fea156c..85753467a2 100644 --- a/src/Base/Observer.h +++ b/src/Base/Observer.h @@ -243,9 +243,10 @@ private: #define Base_EXPORT BaseExport #endif +#if !defined(__MINGW32__) extern template class Base_EXPORT Observer; extern template class Base_EXPORT Subject; - +#endif } // namespace Base diff --git a/src/Mod/Import/App/dxf/dxf.h b/src/Mod/Import/App/dxf/dxf.h index c5eb7f5814..260c218b40 100644 --- a/src/Mod/Import/App/dxf/dxf.h +++ b/src/Mod/Import/App/dxf/dxf.h @@ -6,6 +6,10 @@ #ifndef _dxf_h_ #define _dxf_h_ +#ifdef _MSC_VER +#pragma warning(disable : 4251) +#endif + #include #include #include @@ -131,7 +135,7 @@ typedef enum } eDXFVersion_t; //******************** -class CDxfWrite +class ImportExport CDxfWrite { private: std::ofstream* m_ofs; @@ -195,114 +199,114 @@ protected: std::vector m_blkRecordList; public: - ImportExport CDxfWrite(const char* filepath); - ImportExport ~CDxfWrite(); + CDxfWrite(const char* filepath); + ~CDxfWrite(); - ImportExport void init(); - ImportExport void endRun(); + void init(); + void endRun(); - ImportExport bool Failed() + bool Failed() { return m_fail; } // void setOptions(void); // bool isVersionValid(int vers); - ImportExport std::string getLayerName() + std::string getLayerName() { return m_layerName; } - ImportExport void setLayerName(std::string s); - ImportExport void setVersion(int v) + void setLayerName(std::string s); + void setVersion(int v) { m_version = v; } - ImportExport void setPolyOverride(bool b) + void setPolyOverride(bool b) { m_polyOverride = b; } - ImportExport void addBlockName(std::string s, std::string blkRecordHandle); + void addBlockName(std::string s, std::string blkRecordHandle); - ImportExport void writeLine(const double* s, const double* e); - ImportExport void writePoint(const double*); - ImportExport void writeArc(const double* s, const double* e, const double* c, bool dir); - ImportExport void writeEllipse(const double* c, - double major_radius, - double minor_radius, - double rotation, - double start_angle, - double end_angle, - bool endIsCW); - ImportExport void writeCircle(const double* c, double radius); - ImportExport void writeSpline(const SplineDataOut& sd); - ImportExport void writeLWPolyLine(const LWPolyDataOut& pd); - ImportExport void writePolyline(const LWPolyDataOut& pd); - ImportExport void writeVertex(double x, double y, double z); - ImportExport void writeText(const char* text, - const double* location1, - const double* location2, - const double height, - const int horizJust); - ImportExport void writeLinearDim(const double* textMidPoint, - const double* lineDefPoint, - const double* extLine1, - const double* extLine2, - const char* dimText, - int type); - ImportExport void writeLinearDimBlock(const double* textMidPoint, - const double* lineDefPoint, - const double* extLine1, - const double* extLine2, - const char* dimText, - int type); - ImportExport void writeAngularDim(const double* textMidPoint, - const double* lineDefPoint, - const double* startExt1, - const double* endExt1, - const double* startExt2, - const double* endExt2, - const char* dimText); - ImportExport void writeAngularDimBlock(const double* textMidPoint, - const double* lineDefPoint, - const double* startExt1, - const double* endExt1, - const double* startExt2, - const double* endExt2, - const char* dimText); - ImportExport void writeRadialDim(const double* centerPoint, - const double* textMidPoint, - const double* arcPoint, - const char* dimText); - ImportExport void writeRadialDimBlock(const double* centerPoint, - const double* textMidPoint, - const double* arcPoint, - const char* dimText); - ImportExport void writeDiametricDim(const double* textMidPoint, - const double* arcPoint1, - const double* arcPoint2, - const char* dimText); - ImportExport void writeDiametricDimBlock(const double* textMidPoint, - const double* arcPoint1, - const double* arcPoint2, - const char* dimText); + void writeLine(const double* s, const double* e); + void writePoint(const double*); + void writeArc(const double* s, const double* e, const double* c, bool dir); + void writeEllipse(const double* c, + double major_radius, + double minor_radius, + double rotation, + double start_angle, + double end_angle, + bool endIsCW); + void writeCircle(const double* c, double radius); + void writeSpline(const SplineDataOut& sd); + void writeLWPolyLine(const LWPolyDataOut& pd); + void writePolyline(const LWPolyDataOut& pd); + void writeVertex(double x, double y, double z); + void writeText(const char* text, + const double* location1, + const double* location2, + const double height, + const int horizJust); + void writeLinearDim(const double* textMidPoint, + const double* lineDefPoint, + const double* extLine1, + const double* extLine2, + const char* dimText, + int type); + void writeLinearDimBlock(const double* textMidPoint, + const double* lineDefPoint, + const double* extLine1, + const double* extLine2, + const char* dimText, + int type); + void writeAngularDim(const double* textMidPoint, + const double* lineDefPoint, + const double* startExt1, + const double* endExt1, + const double* startExt2, + const double* endExt2, + const char* dimText); + void writeAngularDimBlock(const double* textMidPoint, + const double* lineDefPoint, + const double* startExt1, + const double* endExt1, + const double* startExt2, + const double* endExt2, + const char* dimText); + void writeRadialDim(const double* centerPoint, + const double* textMidPoint, + const double* arcPoint, + const char* dimText); + void writeRadialDimBlock(const double* centerPoint, + const double* textMidPoint, + const double* arcPoint, + const char* dimText); + void writeDiametricDim(const double* textMidPoint, + const double* arcPoint1, + const double* arcPoint2, + const char* dimText); + void writeDiametricDimBlock(const double* textMidPoint, + const double* arcPoint1, + const double* arcPoint2, + const char* dimText); - ImportExport void writeDimBlockPreamble(); - ImportExport void writeBlockTrailer(); + void writeDimBlockPreamble(); + void writeBlockTrailer(); - ImportExport void writeHeaderSection(); - ImportExport void writeTablesSection(); - ImportExport void writeBlocksSection(); - ImportExport void writeEntitiesSection(); - ImportExport void writeObjectsSection(); - ImportExport void writeClassesSection(); + void writeHeaderSection(); + void writeTablesSection(); + void writeBlocksSection(); + void writeEntitiesSection(); + void writeObjectsSection(); + void writeClassesSection(); - ImportExport void makeLayerTable(); - ImportExport void makeBlockRecordTableHead(); - ImportExport void makeBlockRecordTableBody(); - ImportExport void makeBlockSectionHead(); + void makeLayerTable(); + void makeBlockRecordTableHead(); + void makeBlockRecordTableBody(); + void makeBlockSectionHead(); }; // derive a class from this and implement it's virtual functions -class CDxfRead +class ImportExport CDxfRead { private: std::ifstream* m_ifs; @@ -371,64 +375,64 @@ private: const char* GeneralToUTF8(const char* encoded) const; public: - ImportExport CDxfRead(const char* filepath); // this opens the file - ImportExport virtual ~CDxfRead(); // this closes the file + CDxfRead(const char* filepath); // this opens the file + virtual ~CDxfRead(); // this closes the file - ImportExport bool Failed() + bool Failed() { return m_fail; } - ImportExport void DoRead( + void DoRead( const bool ignore_errors = false); // this reads the file and calls the following functions - ImportExport double mm(double value) const; + double mm(double value) const; - ImportExport bool IgnoreErrors() const + bool IgnoreErrors() const { return (m_ignore_errors); } - ImportExport virtual void OnReadLine(const double* /*s*/, const double* /*e*/, bool /*hidden*/) + virtual void OnReadLine(const double* /*s*/, const double* /*e*/, bool /*hidden*/) {} - ImportExport virtual void OnReadPoint(const double* /*s*/) + virtual void OnReadPoint(const double* /*s*/) {} - ImportExport virtual void OnReadText(const double* /*point*/, - const double /*height*/, - const char* /*text*/, - const double /*rotation*/) + virtual void OnReadText(const double* /*point*/, + const double /*height*/, + const char* /*text*/, + const double /*rotation*/) {} - ImportExport virtual void OnReadArc(const double* /*s*/, - const double* /*e*/, - const double* /*c*/, - bool /*dir*/, - bool /*hidden*/) + virtual void OnReadArc(const double* /*s*/, + const double* /*e*/, + const double* /*c*/, + bool /*dir*/, + bool /*hidden*/) {} - ImportExport virtual void + virtual void OnReadCircle(const double* /*s*/, const double* /*c*/, bool /*dir*/, bool /*hidden*/) {} - ImportExport virtual void OnReadEllipse(const double* /*c*/, - double /*major_radius*/, - double /*minor_radius*/, - double /*rotation*/, - double /*start_angle*/, - double /*end_angle*/, - bool /*dir*/) + virtual void OnReadEllipse(const double* /*c*/, + double /*major_radius*/, + double /*minor_radius*/, + double /*rotation*/, + double /*start_angle*/, + double /*end_angle*/, + bool /*dir*/) {} - ImportExport virtual void OnReadSpline(struct SplineData& /*sd*/) + virtual void OnReadSpline(struct SplineData& /*sd*/) {} - ImportExport virtual void OnReadInsert(const double* /*point*/, - const double* /*scale*/, - const char* /*name*/, - double /*rotation*/) + virtual void OnReadInsert(const double* /*point*/, + const double* /*scale*/, + const char* /*name*/, + double /*rotation*/) {} - ImportExport virtual void OnReadDimension(const double* /*s*/, - const double* /*e*/, - const double* /*point*/, - double /*rotation*/) + virtual void OnReadDimension(const double* /*s*/, + const double* /*e*/, + const double* /*point*/, + double /*rotation*/) {} - ImportExport virtual void AddGraphics() const + virtual void AddGraphics() const {} - ImportExport std::string LayerName() const; + std::string LayerName() const; }; #endif