MSYS: fix build failure with MinGW & gcc
This commit is contained in:
@@ -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; }
|
||||
};
|
||||
|
||||
/*!
|
||||
|
||||
@@ -29,7 +29,9 @@
|
||||
namespace Base
|
||||
{
|
||||
|
||||
#if !defined(__MINGW32__)
|
||||
template class BaseExport Observer<const char*>;
|
||||
template class BaseExport Subject<const char*>;
|
||||
#endif
|
||||
|
||||
} // namespace Base
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user