MSYS: fix build failure with MinGW & gcc

This commit is contained in:
wmayer
2023-11-28 09:36:46 +01:00
committed by wwmayer
parent 6c7167043f
commit 207fb09b68
4 changed files with 151 additions and 133 deletions

View File

@@ -45,6 +45,17 @@
#include <map>
#include <set>
#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<int> 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<int>& quanities, bool isQuad=false )
SMESH_EXPORT_MSVC ElemFeatures& Init( std::vector<int>& quanities, bool isQuad=false )
{ myType = SMDSAbs_Volume; myIsPoly = 1; myIsQuad = isQuad;
myPolyhedQuantities.swap( quanities ); return *this; }
SMESH_EXPORT ElemFeatures& Init( const std::vector<int>& quanities, bool isQuad=false )
SMESH_EXPORT_MSVC ElemFeatures& Init( const std::vector<int>& 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; }
};
/*!

View File

@@ -29,7 +29,9 @@
namespace Base
{
#if !defined(__MINGW32__)
template class BaseExport Observer<const char*>;
template class BaseExport Subject<const char*>;
#endif
} // namespace Base

View File

@@ -243,9 +243,10 @@ private:
#define Base_EXPORT BaseExport
#endif
#if !defined(__MINGW32__)
extern template class Base_EXPORT Observer<const char*>;
extern template class Base_EXPORT Subject<const char*>;
#endif
} // namespace Base

View File

@@ -6,6 +6,10 @@
#ifndef _dxf_h_
#define _dxf_h_
#ifdef _MSC_VER
#pragma warning(disable : 4251)
#endif
#include <algorithm>
#include <cmath>
#include <cstdio>
@@ -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<std::string> 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