]> SALOME platform Git repositories - tools/medcoupling.git/commitdiff
Salome HOME
Fix compilation problems on Win32 platform
authorabd <abd@opencascade.com>
Thu, 28 Aug 2008 09:50:28 +0000 (09:50 +0000)
committerabd <abd@opencascade.com>
Thu, 28 Aug 2008 09:50:28 +0000 (09:50 +0000)
47 files changed:
src/INTERP_KERNEL/BoundingBox.hxx
src/INTERP_KERNEL/ConvexIntersector.hxx
src/INTERP_KERNEL/Geometric2D/AbstractEdge.hxx
src/INTERP_KERNEL/Geometric2D/Bounds.hxx
src/INTERP_KERNEL/Geometric2D/ComposedEdge.hxx
src/INTERP_KERNEL/Geometric2D/ComposedEdgeWithIt.hxx
src/INTERP_KERNEL/Geometric2D/Edge.hxx
src/INTERP_KERNEL/Geometric2D/EdgeArcCircle.hxx
src/INTERP_KERNEL/Geometric2D/EdgeInfLin.hxx
src/INTERP_KERNEL/Geometric2D/EdgeLin.cxx
src/INTERP_KERNEL/Geometric2D/EdgeLin.hxx
src/INTERP_KERNEL/Geometric2D/ElementaryEdge.hxx
src/INTERP_KERNEL/Geometric2D/Geometric2D_defines.hxx [new file with mode: 0755]
src/INTERP_KERNEL/Geometric2D/Node.cxx
src/INTERP_KERNEL/Geometric2D/Node.hxx
src/INTERP_KERNEL/Geometric2D/Precision.hxx
src/INTERP_KERNEL/Geometric2D/QuadraticPolygon.hxx
src/INTERP_KERNEL/Geometric2DIntersector.hxx
src/INTERP_KERNEL/Geometric2DIntersector.txx
src/INTERP_KERNEL/INTERPKERNEL_defines.hxx [new file with mode: 0755]
src/INTERP_KERNEL/InterpKernelMatrix.hxx
src/INTERP_KERNEL/Interpolation.hxx
src/INTERP_KERNEL/Interpolation2D.hxx
src/INTERP_KERNEL/Interpolation3D.hxx
src/INTERP_KERNEL/Interpolation3D.txx
src/INTERP_KERNEL/Interpolation3DSurf.hxx
src/INTERP_KERNEL/InterpolationPlanar.hxx
src/INTERP_KERNEL/InterpolationUtils.hxx
src/INTERP_KERNEL/IntersectorHexa.hxx
src/INTERP_KERNEL/IntersectorTetra.hxx
src/INTERP_KERNEL/IntersectorTetra.txx
src/INTERP_KERNEL/MEDNormalizedUnstructuredMesh.hxx
src/INTERP_KERNEL/MeshElement.hxx
src/INTERP_KERNEL/MeshElement.txx
src/INTERP_KERNEL/MeshRegion.hxx
src/INTERP_KERNEL/MeshRegion.txx
src/INTERP_KERNEL/PlanarIntersector.hxx
src/INTERP_KERNEL/PointLocator.hxx
src/INTERP_KERNEL/PointLocatorAlgos.txx
src/INTERP_KERNEL/PolygonAlgorithms.hxx
src/INTERP_KERNEL/RegionNode.hxx
src/INTERP_KERNEL/Remapper.hxx
src/INTERP_KERNEL/TargetIntersector.hxx
src/INTERP_KERNEL/TetraAffineTransform.hxx
src/INTERP_KERNEL/TransformedTriangle.hxx
src/INTERP_KERNEL/TriangulationIntersector.hxx
src/INTERP_KERNEL/VTKNormalizedUnstructuredMesh.hxx

index 0715ba3f9a2f398824a792831d6a8c0c4bbea1d4..0e96a5bda4d67fa72063f4f35b10369a3df08bce 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef __BOUNDINGBOX_HXX__
 #define __BOUNDINGBOX_HXX__
 
+#include <INTERPKERNEL_defines.hxx>
 #include <iostream>
 
 namespace INTERP_KERNEL
@@ -10,7 +11,7 @@ namespace INTERP_KERNEL
    * \brief Class representing the bounding box of a number of points.
    *
    */
-  class BoundingBox 
+  class INTERPKERNEL_EXPORT BoundingBox 
   {
   public:
 
index 52c5f9baea59276a19c101eed0eafd24058d8a3e..60c927024fc4c6bea43b2833378e0ff5315b62e4 100644 (file)
@@ -7,7 +7,7 @@
 namespace INTERP_KERNEL
 {
   template<int SPACEDIM, int MESHDIM, class ConnType, NumberingPolicy numPol, class MyMeshType>
-  class ConvexIntersector: public PlanarIntersector<SPACEDIM,MESHDIM,ConnType,numPol,MyMeshType>
+  class INTERPKERNEL_EXPORT ConvexIntersector: public PlanarIntersector<SPACEDIM,MESHDIM,ConnType,numPol,MyMeshType>
   {
   public:
     ConvexIntersector(const NormalizedUnstructuredMesh<SPACEDIM,MESHDIM,ConnType,numPol,MyMeshType>& mesh_A,
index ec2e21e5be64c06389a973686dba37df6693ead1..6c0da69ab78fdf792ab850f25fc8ee3f79d328a0 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef __ABSTRACTEDGE_HXX__
 #define __ABSTRACTEDGE_HXX__
 
+#include "Geometric2D_defines.hxx"
+
 #include <set>
 #include <fstream>
 
@@ -14,7 +16,7 @@ namespace INTERP_KERNEL
   class ComposedEdge;
   class ElementaryEdge;
 
-  class IteratorOnComposedEdge
+  class GEOMETRIC2D_EXPORT IteratorOnComposedEdge
   {
     friend class AbstractEdge;
     friend class ComposedEdge;
@@ -44,7 +46,7 @@ namespace INTERP_KERNEL
     mutable ItOnFixdLev _current[MAX_INTERSCT_DEPH];
   };
 
-  class AbstractEdge
+  class GEOMETRIC2D_EXPORT AbstractEdge
   {
   public:
     virtual ~AbstractEdge() { }
index 6b3553786826d1d262f24441623feacdd74d94c3..8ae85904082c6a125b0a378e8a72c9c687f6d270 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef __BOUNDS_HXX__
 #define __BOUNDS_HXX__
 
+#include "Geometric2D_defines.hxx"
+
 namespace INTERP_KERNEL
 {
   /*!
@@ -14,7 +16,7 @@ namespace INTERP_KERNEL
       ON_BOUNDARY_NEG = 3
     } Position;
   
-  class Bounds
+  class GEOMETRIC2D_EXPORT Bounds
   {
   public:
     Bounds():_xMin(0),_xMax(0.),_yMin(0.),_yMax(0.) { }
index 16a24adf17b442524c5bb035aca88eb550a69c04..684e92fef688bf7e82aedc8a2b4d08ec0ce48364 100644 (file)
@@ -1,13 +1,15 @@
 #ifndef __COMPOSEDNODE_HXX__
 #define __COMPOSEDNODE_HXX__
 
+#include "Geometric2D_defines.hxx"
+
 #include "AbstractEdge.hxx"
 
 #include <vector>
 
 namespace INTERP_KERNEL
 {
-  class ComposedEdge : public AbstractEdge
+  class GEOMETRIC2D_EXPORT ComposedEdge : public AbstractEdge
   {
   public:
     ComposedEdge() { }
index ff31eb129eefe6740725f8687420a5b3617f9aba..ee7426ee25f5363ba895db446ec675f059411027 100644 (file)
@@ -1,13 +1,15 @@
 #ifndef __COMPOSEDNODEWITHIT_HXX__
 #define __COMPOSEDNODEWITHIT_HXX__
 
+#include "Geometric2D_defines.hxx"
+
 #include "ComposedEdge.hxx"
 
 #include <vector>
 
 namespace INTERP_KERNEL
 {
-  class ComposedEdgeWithIt : public ComposedEdge
+  class GEOMETRIC2D_EXPORT ComposedEdgeWithIt : public ComposedEdge
   {
   public:
     ComposedEdgeWithIt():_iterator(this) { }
index 2a72b6c3949e9c219e348b302ac3e6433bb29674..f44fc578d82e7c252c2d9db5f51ffe151dbce11f 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef __EDGE_HXX__
 #define __EDGE_HXX__
 
+#include "Geometric2D_defines.hxx"
+
 #include "InterpolationUtils.hxx"
 #include "ComposedEdge.hxx"
 #include "Bounds.hxx"
@@ -42,7 +44,7 @@ namespace INTERP_KERNEL
       FULL_UNKNOWN = 3
     } TypeOfEdgeLocInPolygon;
 
-  class MergePoints
+  class GEOMETRIC2D_EXPORT MergePoints
   {
   public:
     MergePoints();
@@ -71,7 +73,7 @@ namespace INTERP_KERNEL
     unsigned _ass2End2    : 1;
   };
 
-  class IntersectElement
+  class GEOMETRIC2D_EXPORT IntersectElement
   {
   public:
     IntersectElement(double val1, double val2, bool start1, bool end1, bool start2, bool end2, Node *node, const Edge& e1, const Edge& e2, bool keepOrder);
@@ -105,7 +107,7 @@ namespace INTERP_KERNEL
     static const unsigned NO_LIMIT = 19;
   };
 
-  class Intersector
+  class GEOMETRIC2D_EXPORT Intersector
   {
   protected:
     //! All non symetric methods are relative to 'e1'.
@@ -130,14 +132,14 @@ namespace INTERP_KERNEL
     const Edge& _e2;
   };
 
-  class SameTypeIntersector : public Intersector
+  class GEOMETRIC2D_EXPORT SameTypeIntersector : public Intersector
   {
   protected:
     SameTypeIntersector(const Edge& e1, const Edge& e2):Intersector(e1,e2) { }
     bool keepOrder() const { return true; }
   };
 
-  class CrossTypeIntersector : public Intersector
+  class GEOMETRIC2D_EXPORT CrossTypeIntersector : public Intersector
   {
   protected:
     CrossTypeIntersector(const Edge& e1, const Edge& e2, bool reverse):Intersector(e1,e2),_reverse(reverse) { }
@@ -157,7 +159,7 @@ namespace INTERP_KERNEL
   /*!
    * Deal with an oriented edge of a polygon.
    */
-  class Edge
+  class GEOMETRIC2D_EXPORT Edge
   {
   public:
     Edge(Node *start, Node *end, bool direction=true):_cnt(1),_loc(FULL_UNKNOWN) { if(direction) { _start=start; _end=end; } else { _start=end; _end=start; } _start->incrRef(); _end->incrRef(); }
index d8868d231c9c44331cc34174ea55aabb3bf7b27c..709c2e608de959bfd700ab8f675f6bc5cfd8e325 100644 (file)
@@ -1,11 +1,13 @@
 #ifndef __EDGEARCCIRCLE_HXX__
 #define __EDGEARCCIRCLE_HXX__
 
+#include "Geometric2D_defines.hxx"
+
 #include "Edge.hxx"
 
 namespace INTERP_KERNEL
 {
-  class ArcCArcCIntersector : public SameTypeIntersector
+  class GEOMETRIC2D_EXPORT ArcCArcCIntersector : public SameTypeIntersector
   {
     friend class EdgeArcCircle;
   public:
@@ -21,7 +23,7 @@ namespace INTERP_KERNEL
     //! 'delta' 'start' in ]-Pi;Pi[
     static bool isAngleNotIn(double start, double delta, double angleIn);
     //! for an angle 'angle' in ]-3*Pi;3*Pi[ returns angle in ]-Pi;Pi[
-    static double normalizeAngle(double angle) { if(angle>M_PI) return angle-2.*M_PI; if(angle<-M_PI) return angle+2.*M_PI; return angle; }
+    static double normalizeAngle(double angle) { if(angle> M_PI) return angle-2.*M_PI; if(angle<-M_PI) return angle+2.*M_PI; return angle; }
   private:
     const EdgeArcCircle& getE1() const { return (const EdgeArcCircle&)_e1; }
     const EdgeArcCircle& getE2() const { return (const EdgeArcCircle&)_e2; }
index 3f47b9adefdc7b6e96e03f63e450c87e62e08a0f..3cee120c628a561ea410771ab4486b773138745f 100644 (file)
@@ -1,11 +1,13 @@
 #ifndef __EDGEINFLIN_HXX__
 #define __EDGEINFLIN_HXX__
 
+#include "Geometric2D_defines.hxx"
+
 #include "EdgeLin.hxx"
 
 namespace INTERP_KERNEL
 {
-  class EdgeInfLin : public EdgeLin
+  class GEOMETRIC2D_EXPORT EdgeInfLin : public EdgeLin
   {
   public:
     EdgeInfLin(Node *start, Node *end):EdgeLin(start,end,true) { }
index fd4b86178675e8f025e4a93013de3ed4f92a781d..bd042f7f4d061570eddb2d0a7b1f99815a04b8d7 100644 (file)
@@ -49,7 +49,8 @@ void SegSegIntersector::getCurveAbscisse(Node *node, TypeOfLocInEdge& where, Mer
   obviousCaseForCurvAbscisse(node,where,commonNode,obvious);
   if(obvious)
     return ;
-  double ret=((*node)[!_ind]-(*_e1.getStartNode())[!_ind])/((*_e1.getEndNode())[!_ind]-(*_e1.getStartNode())[!_ind]);
+  int index = !_ind;
+  double ret=((*node)[index]-(*_e1.getStartNode())[index])/((*_e1.getEndNode())[index]-(*_e1.getStartNode())[index]);
   if(ret>0. && ret <1.)
     where=INSIDE;
   else if(ret<0.)
index 23cde49822956dc5e2ebc898b28f51f748fa2382..1cf341f63b2c9fe32a7bcc8ca3826b52e0934cde 100644 (file)
@@ -1,11 +1,13 @@
 #ifndef __EDGELIN_HXX__
 #define __EDGELIN_HXX__
 
+#include "Geometric2D_defines.hxx"
+
 #include "Edge.hxx"
 
 namespace INTERP_KERNEL
 {
-  class SegSegIntersector : SameTypeIntersector
+  class GEOMETRIC2D_EXPORT SegSegIntersector : SameTypeIntersector
     {
       friend class Edge;
     public:
@@ -24,7 +26,7 @@ namespace INTERP_KERNEL
       double _matrix[4];//SPACEDIM*SPACEDIM
     };
 
-  class EdgeLin : public Edge
+  class GEOMETRIC2D_EXPORT EdgeLin : public Edge
   {
     friend class SegSegIntersector;
   public:
index ae2dab9361858d788a1ef2211ba4ea2a918f68d6..a3be029249126bcdf6af51e0168ccb4f9629e9b1 100644 (file)
@@ -1,13 +1,15 @@
 #ifndef __ELEMENTARYEDGE_HXX__
 #define __ELEMENTARYEDGE_HXX__
 
+#include "Geometric2D_defines.hxx"
+
 #include "AbstractEdge.hxx"
 #include "InterpolationUtils.hxx"
 #include "Edge.hxx"
 
 namespace INTERP_KERNEL
 {
-  class ElementaryEdge : public AbstractEdge
+  class GEOMETRIC2D_EXPORT ElementaryEdge : public AbstractEdge
   {
   public:
     ElementaryEdge(Edge *ptr, bool direction):_direction(direction),_ptr(ptr) { }
diff --git a/src/INTERP_KERNEL/Geometric2D/Geometric2D_defines.hxx b/src/INTERP_KERNEL/Geometric2D/Geometric2D_defines.hxx
new file mode 100755 (executable)
index 0000000..e29fa80
--- /dev/null
@@ -0,0 +1,22 @@
+
+#ifndef __GEOMETRIC2D_DEFINES_HXX__
+#define __GEOMETRIC2D_DEFINES_HXX__
+
+//export symbols
+#ifdef WIN32
+# ifdef GEOMETRIC2D_EXPORTS
+#  define GEOMETRIC2D_EXPORT __declspec(dllexport)
+# else
+#  define GEOMETRIC2D_EXPORT __declspec(dllimport)
+# endif
+#else
+# define GEOMETRIC2D_EXPORT
+#endif 
+
+#ifdef WIN32
+# include <math.h>
+# define fmax __max
+# define fmin __min
+#endif
+
+#endif //__GEOMETRIC2D_DEFINES_HXX__
\ No newline at end of file
index 1f88b6d94187fba5ffb0ab60ea6607f299566502..902ae7cb1f9b2a376f70bcbcbb92bda0fffabdd2 100644 (file)
@@ -43,9 +43,9 @@ bool Node::decrRef()
 
 bool Node::isEqual(const Node& other) const
 {
-  const unsigned SPACEDIM=2;
+  const int SPACEDIM=2;
   bool ret=true;
-  for(unsigned i=0;i<SPACEDIM;i++)
+  for(int i=0;i<SPACEDIM;i++)
     ret&=areDoubleEquals((*this)[i],other[i]);
   return ret;
 }
index 5c5c9fadff70c42332a10a8289aa7efe075f0a1c..7dc63f609fd3b5323d0907aae68ce3bb3800db03 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef __NODE_HXX__
 #define __NODE_HXX__
 
+#include "Geometric2D_defines.hxx"
+
 #include "Precision.hxx"
 
 #include <cmath>
@@ -24,7 +26,7 @@ namespace INTERP_KERNEL
   /*!
    * As nodes can be shared between edges it is dealed with ref counting.
    */
-  class Node
+  class GEOMETRIC2D_EXPORT Node
   {
   public:
     Node(double x, double y);
@@ -44,7 +46,7 @@ namespace INTERP_KERNEL
     bool isEqualAndKeepTrack(const Node& other, std::vector<Node *>& track) const;
     void dumpInXfigFile(std::ostream& stream, int resolution, const Bounds& box) const;
     double distanceWithSq(const Node& other) const;
-    double operator[](int i) const { return _coords[i]; }
+    double operator[]( int i) const { return _coords[i]; }
     //!for tests only !
     void setNewCoords(double x, double y) { _coords[0]=x; _coords[1]=y; }
     static double sign(double val) { if(val>=0) return 1.; else return -1.; }
index 9eb3d275ee8c395b4d71a19fba28812804cb3899..64273aee9e62f8bf465675b7b9595ebab913d108 100644 (file)
@@ -1,6 +1,9 @@
+
+#include "Geometric2D_defines.hxx"
+
 namespace INTERP_KERNEL
 {
-  class QUADRATIC_PLANAR
+  class GEOMETRIC2D_EXPORT QUADRATIC_PLANAR
   {
   public:
     static double _precision;
index 9096db02d7a9575150a7b92dd081e993c46c02cc..21103c78bb67d169251b9e31c2a0aab5f842575a 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef __QUADRATICPOLYGON_HXX__
 #define __QUADRATICPOLYGON_HXX__
 
+#include "Geometric2D_defines.hxx"
+
 #include "ComposedEdge.hxx"
 
 #include <list>
@@ -10,7 +12,7 @@ namespace INTERP_KERNEL
   class Edge;
   class MergePoints;
 
-  class QuadraticPolygon : public ComposedEdge
+  class GEOMETRIC2D_EXPORT QuadraticPolygon : public ComposedEdge
   {
   public:
     QuadraticPolygon() { }
index 795049c041c7237800421e13fadd9c2505c5105f..deaf8b275ef2c399785602a20fecbb17971688a7 100644 (file)
@@ -8,7 +8,7 @@ namespace INTERP_KERNEL
   class QuadraticPolygon;
 
   template<int SPACEDIM, int MESHDIM, class ConnType, NumberingPolicy numPol, class MyMeshType>
-  class Geometric2DIntersector : public PlanarIntersector<SPACEDIM,MESHDIM,ConnType,numPol,MyMeshType>
+  class INTERPKERNEL_EXPORT Geometric2DIntersector : public PlanarIntersector<SPACEDIM,MESHDIM,ConnType,numPol,MyMeshType>
   {
   public:
     Geometric2DIntersector(const NormalizedUnstructuredMesh<SPACEDIM,MESHDIM,ConnType,numPol,MyMeshType>& mesh_A,
index 90e02f1737e49432adb16b7e1cf33361f287ce34..f0502120e90ce02359916c406c2ca8f438acbc81 100644 (file)
@@ -9,10 +9,10 @@
 
 namespace INTERP_KERNEL
 {
-  namespace QUADRATIC_PLANAR
+  /*namespace QUADRATIC_PLANAR
   {
     extern double _precision;
-  }
+  }*/
 
   template<int SPACEDIM, int MESHDIM, class ConnType, NumberingPolicy numPol, class MyMeshType>
   Geometric2DIntersector<SPACEDIM,MESHDIM,ConnType,numPol,MyMeshType>::Geometric2DIntersector(const NormalizedUnstructuredMesh<SPACEDIM,MESHDIM,ConnType,numPol,MyMeshType>& mesh_A,
diff --git a/src/INTERP_KERNEL/INTERPKERNEL_defines.hxx b/src/INTERP_KERNEL/INTERPKERNEL_defines.hxx
new file mode 100755 (executable)
index 0000000..18086a7
--- /dev/null
@@ -0,0 +1,15 @@
+#ifndef __INTERPKERNEL_DEFINES_HXX__
+#define __INTERPKERNEL_DEFINES_HXX__
+
+//export symbols
+#ifdef WIN32
+# ifdef INTERPKERNEL_EXPORTS
+#  define INTERPKERNEL_EXPORT __declspec(dllexport)
+# else
+#  define INTERPKERNEL_EXPORT __declspec(dllimport)
+# endif
+#else
+# define INTERPKERNEL_EXPORT
+#endif 
+
+#endif //__INTERPKERNEL_DEFINES_HXX__
index 1d326aa0dd9655901c769ec812a0b90792bc95cc..4525b3c7e3b82523e790ae1a679960977a8d07ca 100755 (executable)
@@ -20,7 +20,7 @@ namespace INTERP_KERNEL
   std::istream& operator>>(std::istream& in, Matrix<U,type>& m);
        
   template<class T, NumberingPolicy type=ALL_C_MODE>
-  class Matrix
+  class INTERPKERNEL_EXPORT Matrix
   {
     class Row : public std::vector< typename std::pair<int,T> >
     {
@@ -45,10 +45,10 @@ namespace INTERP_KERNEL
     };
     
   private:
-    uint _nb_rows;
+    unsigned int _nb_rows;
     T* _coeffs;
-    uint* _cols;
-    std::vector<uint> _ncols_offset;
+    unsigned int* _cols;
+    std::vector<unsigned int> _ncols_offset;
     std::vector< Row > _auxiliary_matrix;
     friend std::ostream& operator<<<>(std::ostream& in, const Matrix<T,type>& m);
     friend std::istream& operator>><>(std::istream& in, Matrix<T,type>& m);
@@ -113,7 +113,7 @@ namespace INTERP_KERNEL
                }
 
     /*! declares a method that specifies the number of rows */
-    void resize(uint nbrows)
+    void resize(unsigned int nbrows)
     {
       _nb_rows=nbrows;
       _auxiliary_matrix.resize(nbrows);
@@ -152,7 +152,7 @@ namespace INTERP_KERNEL
       for (int i=0; i< _nb_rows; i++)
         {
           output[i]=0;
-          for (int j=_ncols_offset[i]; j< _ncols_offset[i+1]; j++) {
+          for (unsigned int j=_ncols_offset[i]; j< _ncols_offset[i+1]; j++) {
             int icol = _cols[j];
             output[i]+=input[icol]*_coeffs[j];
           }
@@ -168,16 +168,16 @@ namespace INTERP_KERNEL
     {
       _ncols_offset.resize(_nb_rows+1);
       _ncols_offset[0]=0;
-      for (int i=0; i<_nb_rows; i++)
+      for (unsigned int i=0; i<_nb_rows; i++)
         _ncols_offset[i+1]=_ncols_offset[i]+_auxiliary_matrix[i].size();
       int nbcoeffs= _ncols_offset[_nb_rows];
-      _cols=new uint[nbcoeffs];
+      _cols=new unsigned int[nbcoeffs];
       _coeffs=new T[nbcoeffs];
-      uint* cols_ptr=_cols;
+      unsigned int* cols_ptr=_cols;
       T* coeffs_ptr=_coeffs;
-      for (uint i=0; i<_nb_rows; i++)
+      for (unsigned int i=0; i<_nb_rows; i++)
         {
-          for (uint j=0; j<_auxiliary_matrix[i].size(); j++)
+          for (unsigned int j=0; j<_auxiliary_matrix[i].size(); j++)
             {
               *cols_ptr++ = OTT<int,type>::ind2C(_auxiliary_matrix[i][j].first);
               *coeffs_ptr++ = _auxiliary_matrix[i][j].second;
@@ -190,7 +190,7 @@ namespace INTERP_KERNEL
     /*! 
      * 0 <= irow < n
      */
-    Row &operator [] (uint irow)
+    Row &operator [] (unsigned int irow)
     {
       return _auxiliary_matrix[irow];
     }
index 7f13d87929582b4ff1fae4e0075c812ec37a8273..5a7a1e0fe8a81b6d85fb53c2661c7ae48bace363 100644 (file)
@@ -12,7 +12,7 @@
 namespace INTERP_KERNEL
 {
   template<class TrueMainInterpolator>
-  class Interpolation
+  class INTERPKERNEL_EXPORT Interpolation
   {
   public:
     Interpolation() { }
index 800736b28e801dcdc7e80ea32c8719262c290ae4..9eecb454a99487fceac29577603a64b6241a19db 100755 (executable)
@@ -5,7 +5,7 @@
 
 namespace INTERP_KERNEL
 {
-  class Interpolation2D : public InterpolationPlanar<Interpolation2D>
+  class INTERPKERNEL_EXPORT Interpolation2D : public InterpolationPlanar<Interpolation2D>
   {
   public:
     Interpolation2D() { }
index 04a6c7f64bed8b3b403f0a1f1ada6c8c6d2ed7a6..125996348cdb7d0fa35a483b976796d412e35d3a 100644 (file)
@@ -7,7 +7,7 @@
 namespace INTERP_KERNEL
 {
 
-  class Interpolation3D : public Interpolation<Interpolation3D>
+  class INTERPKERNEL_EXPORT Interpolation3D : public Interpolation<Interpolation3D>
   {
   public:
     Interpolation3D();
index df76196f1061c0664c7920f6fe5cb4b385f2f67d..253a98b6b3b3f6be5ad32f20373ec914c24bce77 100644 (file)
@@ -70,8 +70,8 @@ namespace INTERP_KERNEL
 
     LOG(2, "Source mesh has " << numSrcElems << " elements and target mesh has " << numTargetElems << " elements ");
 
-    MeshElement<ConnType>* srcElems[numSrcElems];
-    MeshElement<ConnType>* targetElems[numTargetElems];
+    std::vector<MeshElement<ConnType>*> srcElems(numSrcElems);
+    std::vector<MeshElement<ConnType>*> targetElems(numTargetElems);
     
     std::map<MeshElement<ConnType>*, int> indices;
     
index 9b7b616526f9336ae3bacb52bc9924a07545f63d..656d804139f9b08ce7f95c0892f9b234f1c9f9f5 100644 (file)
@@ -5,7 +5,7 @@
 
 namespace INTERP_KERNEL
 {
-  class Interpolation3DSurf : public InterpolationPlanar<Interpolation3DSurf>
+  class INTERPKERNEL_EXPORT Interpolation3DSurf : public InterpolationPlanar<Interpolation3DSurf>
   {
   public:
     Interpolation3DSurf();
index d9aa7b703143546f936a823a3c8ed91c590f1f9a..9a079fa741acc591a3e13264eb885220d64ddd95 100755 (executable)
@@ -10,7 +10,7 @@ namespace INTERP_KERNEL
   typedef enum {Triangulation, Convex, Geometric2D, Generic} IntersectionType;
 
   template<class RealPlanar>
-  class InterpolationPlanar : public Interpolation< InterpolationPlanar<RealPlanar> >
+  class INTERPKERNEL_EXPORT InterpolationPlanar : public Interpolation< InterpolationPlanar<RealPlanar> >
   {
   private: 
     int  _printLevel;
index af61e9d19d12d6c6e63768a9294d0b32af8a274b..1efd067927dbc66627bfd6a7ba3f721ed0f31f08 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef _INTERPOLATIONUTILS_HXX_
 #define _INTERPOLATIONUTILS_HXX_
 
+#include <INTERPKERNEL_defines.hxx>
+
 #include "NormalizedUnstructuredMesh.hxx"
 
 #include <deque>
index 526573e3ff10d812bbf320304c61515c7f868a9d..d2f04198b3984e59c3f65162ac378c343202060f 100644 (file)
@@ -13,7 +13,7 @@ namespace INTERP_KERNEL
    *
    */
   template<int SPACEDIM, int MESHDIM, class ConnType, NumberingPolicy numPol, class MyMeshType>
-  class IntersectorHexa : public TargetIntersector<ConnType>
+  class INTERPKERNEL_EXPORT IntersectorHexa : public TargetIntersector<ConnType>
   {
 
   public:
index 4b4160342ea895dbfd7dccf68171d844cf5ca042..1da0745208606c4e667c0aa90d4175423567926a 100644 (file)
 #include <vector>
 #include <functional>
 #include <map>
-#include <ext/hash_map>
+#ifdef WIN32
+# include <hash_map>
+#else
+# include <ext/hash_map>
+#endif
 
 #include "MEDMEM_define.hxx"
 #include "MEDMEM_CellModel.hxx"
 
+#ifndef WIN32
 using __gnu_cxx::hash_map;
+#endif
 
 namespace INTERP_KERNEL
 {
@@ -23,7 +29,7 @@ namespace INTERP_KERNEL
    * \brief Class representing a triangular face, used as key in caching hash map in IntersectorTetra.
    *
    */
-  class TriangleFaceKey
+  class INTERPKERNEL_EXPORT TriangleFaceKey
   {
   public:
     
@@ -64,6 +70,13 @@ namespace INTERP_KERNEL
     {
       return _hashVal;
     }
+
+#ifdef WIN32
+    operator size_t () const
+    {
+      return _hashVal;
+    }
+#endif
      
     inline void sort3Ints(int* sorted, int node1, int node2, int node3);
 
@@ -121,10 +134,11 @@ namespace INTERP_KERNEL
       }
   }
 }
-
+#ifndef WIN32
 namespace __gnu_cxx
 {
 
+
   /**
    * \brief Template specialization of __gnu_cxx::hash<T> function object for use with a __gnu_cxx::hash_map 
    * with TriangleFaceKey as key class.
@@ -132,6 +146,7 @@ namespace __gnu_cxx
    */
   template<>
   class hash<INTERP_KERNEL::TriangleFaceKey>
+
   {
   public:
     /**
@@ -146,6 +161,16 @@ namespace __gnu_cxx
     }
   };
 }
+#else
+  struct TriangleFaceKeyComparator
+  {
+    bool operator()(const INTERP_KERNEL::TriangleFaceKey& key1,
+                    const INTERP_KERNEL::TriangleFaceKey& key2 ) const
+    {
+      return key1.hashVal() < key2.hashVal();
+    }
+  };
+#endif
 
 namespace INTERP_KERNEL
 {
@@ -156,7 +181,7 @@ namespace INTERP_KERNEL
    *
    */
   template<int SPACEDIM, int MESHDIM, class ConnType, NumberingPolicy numPol, class MyMeshType>
-  class IntersectorTetra : public TargetIntersector<ConnType>
+  class INTERPKERNEL_EXPORT IntersectorTetra : public TargetIntersector<ConnType>
   {
 
   public: 
@@ -194,7 +219,11 @@ namespace INTERP_KERNEL
     hash_map< int, double* > _nodes;
     
     /// hash_map relating triangular faces to calculated volume contributions, used for caching
-    hash_map< TriangleFaceKey, double > _volumes;
+    hash_map< TriangleFaceKey, double
+#ifdef WIN32
+        , hash_compare<TriangleFaceKey,TriangleFaceKeyComparator> 
+#endif
+    > _volumes;
 
     /// reference to the source mesh
     const NormalizedUnstructuredMesh<SPACEDIM,MESHDIM,ConnType,numPol,MyMeshType>& _srcMesh;
index cd4090e6d153ed3b106ccc335b7a1fa82deb3b76..f394287a258280cd75aaba22369acac4c7559678 100644 (file)
@@ -157,7 +157,7 @@ namespace INTERP_KERNEL
        
             assert(faceModel.getDimension() == 2);
 
-            int faceNodes[faceModel.getNumberOfNodes()];
+            std::vector<int> faceNodes(faceModel.getNumberOfNodes());
 
             // get the nodes of the face
             for(int j = 1; j <= faceModel.getNumberOfNodes(); ++j)
index be85466118dc4dec60175d9e85a084612e722f31..8ee434ee260e7d004a938f93dea173eca7f38754 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef __MEDNORMALIZEDUNSTRUCTUREDMESH_HXX__
 #define __MEDNORMALIZEDUNSTRUCTUREDMESH_HXX__
 
+#include <INTERPKERNEL_defines.hxx>
+
 #include "NormalizedUnstructuredMesh.hxx"
 
 namespace MEDMEM
@@ -9,7 +11,7 @@ namespace MEDMEM
 }
 
 template<int SPACEDIM,int MESHDIM>
-class MEDNormalizedUnstructuredMesh : public INTERP_KERNEL::NormalizedUnstructuredMesh<SPACEDIM,MESHDIM,int,INTERP_KERNEL::ALL_FORTRAN_MODE,MEDNormalizedUnstructuredMesh<SPACEDIM,MESHDIM> >
+class INTERPKERNEL_EXPORT MEDNormalizedUnstructuredMesh : public INTERP_KERNEL::NormalizedUnstructuredMesh<SPACEDIM,MESHDIM,int,INTERP_KERNEL::ALL_FORTRAN_MODE,MEDNormalizedUnstructuredMesh<SPACEDIM,MESHDIM> >
 {
 public:
   MEDNormalizedUnstructuredMesh(const MEDMEM::MESH *mesh);
index 7b0394fc69216e42ba90c9fb6fe74ef0757aa942..d13a2467f64d2ea1dabd04d881367f1dba036682 100644 (file)
@@ -13,7 +13,7 @@ namespace INTERP_KERNEL
    * easy bounding box intersection tests between MeshElements and collections of MeshElement (MeshRegions)
    */
   template<class ConnType>
-  class MeshElement
+  class INTERPKERNEL_EXPORT MeshElement
   {
 
   public:
@@ -51,7 +51,7 @@ namespace INTERP_KERNEL
    * has a smaller YMIN is sorted before one with a larger YMIN.
    *
    */
-  class ElementBBoxOrder
+  class INTERPKERNEL_EXPORT ElementBBoxOrder
   {
   public : 
     
index 13b859dee47af6cd4bfd19cff957c96fe09a20da..49ffab789c5bc42153e9f91de435322986aba566 100644 (file)
@@ -23,7 +23,7 @@ namespace INTERP_KERNEL
   MeshElement<ConnType>::MeshElement(const ConnType index, const NormalizedUnstructuredMesh<SPACEDIM,MESHDIM,ConnType,numPol,MyMeshType>& mesh)
     : _index(index), _box(0), _number(mesh.getNumberOfNodesOfElement(index))
   {
-    const double* vertices[_number];
+    const double**vertices = new const double*[_number];
 
     for(unsigned char i = 0 ; i < _number ; ++i)
       vertices[i] = getCoordsOfNode(i , index, mesh);
index 6ea13181fda01c7373c2ca6133b55215216703c2..864d02858c9b5871dddedff7978a54af8a52da1a 100644 (file)
@@ -15,7 +15,7 @@ namespace INTERP_KERNEL
    *
    */
   template<class ConnType>
-  class MeshRegion
+  class INTERPKERNEL_EXPORT MeshRegion
   {
   public:
     
index 91d6610ab7ecda20c908bea3a9c4b73df3dcb681..e8e7c9a6e9b6f07dd06fc781d79caec75e080537 100644 (file)
@@ -47,7 +47,7 @@ namespace INTERP_KERNEL
        
     if(_box == 0)
       {
-        const double* pts[numNodes];
+        const double** pts = new const double*[numNodes];
 
         // get coordinates of the nodes of the element
         for(unsigned char i = 0 ; i < numNodes ; ++i)
index 389f27f6767829059b98abe2a4df1cd534a4f977..a200a46c6254e5dceff134d58432d5e33346c78e 100644 (file)
@@ -10,7 +10,7 @@ namespace INTERP_KERNEL
   class TranslationRotationMatrix;
   
   template<int SPACEDIM, int MESHDIM, class ConnType, NumberingPolicy numPol, class MyMeshType>
-  class PlanarIntersector
+  class INTERPKERNEL_EXPORT PlanarIntersector
   {
   public:
     PlanarIntersector(double dimCaracteristic, double precision, double medianPlane, bool doRotate, int printLevel);
index 43ec36fd3b84117825556950f8dab1f8ba86e43b..2d6d591124048c58736092c34ff545dd6756ac71 100644 (file)
@@ -6,7 +6,7 @@
 #include "PointLocatorAlgos.txx"
 namespace INTERP_KERNEL
 {
-class PointLocator
+class INTERPKERNEL_EXPORT PointLocator
 {
 public:
        PointLocator(const MEDMEM::MESH& mesh);
index 7f18751c3c34975a33db2f74881c931821541fec..94ac407a4c4c374cfa29eac9483a32e95cdce28a 100644 (file)
@@ -105,7 +105,7 @@ namespace INTERP_KERNEL{
                                {
                                        //in 2D, nbedges==nbnodes
                                        int nbedges=nbnodes;
-                                       int sign[nbedges];
+                                       int* sign = new int[nbedges];
                                        for (int iedge=0; iedge<nbedges; iedge++)
                                                {
                                                        const double* A=coords+SPACEDIM*(OTT<ConnType,numPol>::ind2C(conn_elem[iedge]));
@@ -147,7 +147,7 @@ namespace INTERP_KERNEL{
                                        }
                                        const MEDMEM::CELLMODEL& model=MEDMEM::CELLMODEL_Map::retrieveCellModel(elem_type);
                                        int nbfaces = model.getNumberOfConstituents(1);
-                                       int sign[nbfaces];
+                                       int* sign = new int[nbfaces];
                                        for (int iface=0; iface<nbfaces; iface++)
                                                {
                                                        int* connface=model.getNodesConstituent(1,iface+1);
index 3f744f2075d2bc139fb00e4885d4ae4e2ada0b3f..7c2d5cdcd17d3eb560987db22de7d93c23c7dfad 100644 (file)
@@ -23,7 +23,7 @@ namespace INTERP_KERNEL
   };
   
   template<int DIM>
-  class PolygonAlgorithms
+  class INTERPKERNEL_EXPORT PolygonAlgorithms
   {
   public:
     PolygonAlgorithms(double epsilon, double precision);
index 0ea8610148ed3d14c7c7f958166f24b03f85b401..5ffb1b6e40b5e7416fd71439779a51218b2684dd 100644 (file)
@@ -12,7 +12,7 @@ namespace INTERP_KERNEL
    * in the bounding-box filtering process.
    */
   template<class ConnType>
-  class RegionNode
+  class INTERPKERNEL_EXPORT RegionNode
   {
   public:
     
index a2344da50cbb78fcb75c5686179512b1771644c0..64d5c07d98cbd2e521f3a865d9e8de435b7c422f 100644 (file)
@@ -9,7 +9,7 @@
 namespace INTERP_KERNEL
 {
 
-class Remapper
+class INTERPKERNEL_EXPORT Remapper
 {
 public:
        Remapper();
index 61f895ea07a8b816a1bdf830673dde87df581ef0..aed6f20b07c51a1d45c00c2ffc9f2067b17447a4 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef __TARGETINTERSECTOR__HXX__
 #define __TARGETINTERSECTOR__HXX__
 
+#include <INTERPKERNEL_defines.hxx>
+
 namespace INTERP_KERNEL
 {
   /**
@@ -9,7 +11,7 @@ namespace INTERP_KERNEL
    * with the source elements.
    */
   template<class ConnType>
-  class TargetIntersector
+  class INTERPKERNEL_EXPORT TargetIntersector
   {
   public:
 
index d9e447a6a202acf6cb8527f1fbd8ff909384ce80..835bdbb2880a8b5cb274fbaa3a2a83716ac2e3d7 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef __TETRA_AFFINE_TRANSFORM_HXX__
 #define __TETRA_AFFINE_TRANSFORM_HXX__
 
+#include <INTERPKERNEL_defines.hxx>
+
 #undef INVERSION_SELF_CHECK // debugging : check that calculated inverse is correct
 
 namespace INTERP_KERNEL
@@ -11,7 +13,7 @@ namespace INTERP_KERNEL
    * into the unit tetrahedron.
    *
    */
-  class TetraAffineTransform
+  class INTERPKERNEL_EXPORT TetraAffineTransform
   {
 
   public:
index 14e54fc00d702c36922394abd933cec4bf21587f..b3d8feaaf9280dd5f634395ff872a78bf03c8513 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef __TRANSFORMED_TRIANGLE_HXX__
 #define __TRANSFORMED_TRIANGLE_HXX__
 
+#include <INTERPKERNEL_defines.hxx>
+
 #include <vector>
 
 
@@ -82,10 +84,9 @@ namespace INTERP_KERNEL
    *    If OPTIMIZE is defined, a large number of methods will be prefixed with inline and some optimizations concerning the tests 
    * with zero double products will be used.
    */
-  class TransformedTriangle
+  class INTERPKERNEL_EXPORT TransformedTriangle
   {
-
-  
 
   public:
 
index 0e9bfbf241fcf6820294c72c0ddbd603652de039..17eb20f81e2ebd8a45896af18ba536f7b8273c69 100644 (file)
@@ -6,7 +6,7 @@
 namespace INTERP_KERNEL
 {
   template<int SPACEDIM, int MESHDIM, class ConnType, NumberingPolicy numPol, class MyMeshType>
-  class TriangulationIntersector : public PlanarIntersector<SPACEDIM,MESHDIM,ConnType,numPol,MyMeshType>
+  class INTERPKERNEL_EXPORT TriangulationIntersector : public PlanarIntersector<SPACEDIM,MESHDIM,ConnType,numPol,MyMeshType>
   {
   public:
     TriangulationIntersector(const NormalizedUnstructuredMesh<SPACEDIM,MESHDIM,ConnType,numPol,MyMeshType>& mesh_A,
index 253d22a24c7390b0419464c3107c70b9c50ef477..9aebf11cc57f94b5481022ee9253ad830f5ec167 100644 (file)
@@ -8,7 +8,7 @@
 class vtkUnstructuredGrid;
 
 template<int MESHDIM>
-class VTKNormalizedUnstructuredMesh : public INTERP_KERNEL::NormalizedUnstructuredMesh<3,MESHDIM,vtkIdType,INTERP_KERNEL::ALL_C_MODE,VTKNormalizedUnstructuredMesh<MESHDIM> >
+class INTERPKERNEL_EXPORT VTKNormalizedUnstructuredMesh : public INTERP_KERNEL::NormalizedUnstructuredMesh<3,MESHDIM,vtkIdType,INTERP_KERNEL::ALL_C_MODE,VTKNormalizedUnstructuredMesh<MESHDIM> >
 {
 public:
   VTKNormalizedUnstructuredMesh(vtkUnstructuredGrid *mesh);