diff --git a/src/BRepMesh/BRepMesh_BaseMeshAlgo.cxx b/src/BRepMesh/BRepMesh_BaseMeshAlgo.cxx
index a9f2a7fafc..e914fb284c 100644
--- a/src/BRepMesh/BRepMesh_BaseMeshAlgo.cxx
+++ b/src/BRepMesh/BRepMesh_BaseMeshAlgo.cxx
@@ -24,6 +24,8 @@
 #include <BRepMesh_ShapeTool.hxx>
 #include <Standard_ErrorHandler.hxx>
 
+IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_BaseMeshAlgo, IMeshTools_MeshAlgo)
+
 //=======================================================================
 // Function: Constructor
 // Purpose : 
diff --git a/src/BRepMesh/BRepMesh_BaseMeshAlgo.hxx b/src/BRepMesh/BRepMesh_BaseMeshAlgo.hxx
index ddf4419933..c2d38eeaed 100644
--- a/src/BRepMesh/BRepMesh_BaseMeshAlgo.hxx
+++ b/src/BRepMesh/BRepMesh_BaseMeshAlgo.hxx
@@ -45,36 +45,36 @@ public:
     const IMeshTools_Parameters&  theParameters,
     const Message_ProgressRange&  theRange = Message_ProgressRange()) Standard_OVERRIDE;
 
-  DEFINE_STANDARD_RTTI_INLINE(BRepMesh_BaseMeshAlgo, IMeshTools_MeshAlgo)
+  DEFINE_STANDARD_RTTIEXT(BRepMesh_BaseMeshAlgo, IMeshTools_MeshAlgo)
 
 protected:
 
   //! Gets discrete face.
-  inline const IMeshData::IFaceHandle& getDFace() const
+  const IMeshData::IFaceHandle& getDFace() const
   {
     return myDFace;
   }
 
   //! Gets meshing parameters.
-  inline const IMeshTools_Parameters& getParameters() const
+  const IMeshTools_Parameters& getParameters() const
   {
     return myParameters;
   }
 
   //! Gets common allocator.
-  inline const Handle(NCollection_IncAllocator)& getAllocator() const
+  const Handle(NCollection_IncAllocator)& getAllocator() const
   {
     return myAllocator;
   }
 
   //! Gets mesh structure.
-  inline const Handle(BRepMesh_DataStructureOfDelaun)& getStructure() const
+  const Handle(BRepMesh_DataStructureOfDelaun)& getStructure() const
   {
     return myStructure;
   }
 
   //! Gets 3d nodes map.
-  inline const Handle(VectorOfPnt)& getNodesMap() const
+  const Handle(VectorOfPnt)& getNodesMap() const
   {
     return myNodesMap;
   }
diff --git a/src/BRepMesh/BRepMesh_Circle.hxx b/src/BRepMesh/BRepMesh_Circle.hxx
index 15d748f1ca..c37813fc19 100644
--- a/src/BRepMesh/BRepMesh_Circle.hxx
+++ b/src/BRepMesh/BRepMesh_Circle.hxx
@@ -44,26 +44,26 @@ public:
   
   //! Sets location of a circle.
   //! @param theLocation location of a circle.
-  inline void SetLocation(const gp_XY& theLocation)
+  void SetLocation(const gp_XY& theLocation)
   {
     myLocation = theLocation;
   }
   
   //! Sets radius of a circle.
   //! @param theRadius radius of a circle.
-  inline void SetRadius(const Standard_Real theRadius)
+  void SetRadius(const Standard_Real theRadius)
   {
     myRadius = theRadius;
   }
   
   //! Returns location of a circle.
-  inline const gp_XY& Location() const
+  const gp_XY& Location() const
   {
     return myLocation;
   }
 
   //! Returns radius of a circle.
-  inline const Standard_Real& Radius() const
+  const Standard_Real& Radius() const
   {
     return myRadius;
   }
diff --git a/src/BRepMesh/BRepMesh_CircleInspector.hxx b/src/BRepMesh/BRepMesh_CircleInspector.hxx
index c954d7d50c..8bdac2c65a 100644
--- a/src/BRepMesh/BRepMesh_CircleInspector.hxx
+++ b/src/BRepMesh/BRepMesh_CircleInspector.hxx
@@ -46,14 +46,14 @@ public:
   //! Adds the circle to vector of circles at the given position.
   //! @param theIndex position of circle in the vector.
   //! @param theCircle circle to be added.
-  inline void Bind(const Standard_Integer theIndex,
-                   const BRepMesh_Circle& theCircle)
+  void Bind(const Standard_Integer theIndex,
+            const BRepMesh_Circle& theCircle)
   {
     myCircles.SetValue(theIndex, theCircle);
   }
 
   //! Resutns vector of registered circles.
-  inline const IMeshData::VectorOfCircle& Circles() const
+  const IMeshData::VectorOfCircle& Circles() const
   {
     return myCircles; 
   }
@@ -61,21 +61,21 @@ public:
   //! Returns circle with the given index.
   //! @param theIndex index of circle.
   //! @return circle with the given index.
-  inline BRepMesh_Circle& Circle(const Standard_Integer theIndex)
+  BRepMesh_Circle& Circle(const Standard_Integer theIndex)
   {
     return myCircles(theIndex);
   }
 
   //! Set reference point to be checked.
   //! @param thePoint bullet point.
-  inline void SetPoint(const gp_XY& thePoint)
+  void SetPoint(const gp_XY& thePoint)
   {
     myResIndices.Clear();
     myPoint = thePoint;
   }
 
   //! Returns list of circles shot by the reference point.
-  inline IMeshData::ListOfInteger& GetShotCircles()
+  IMeshData::ListOfInteger& GetShotCircles()
   {
     return myResIndices;
   }
@@ -83,7 +83,7 @@ public:
   //! Performs inspection of a circle with the given index.
   //! @param theTargetIndex index of a circle to be checked.
   //! @return status of the check.
-  inline NCollection_CellFilter_Action Inspect(
+  NCollection_CellFilter_Action Inspect(
     const Standard_Integer theTargetIndex)
   {
     BRepMesh_Circle& aCircle = myCircles(theTargetIndex);
diff --git a/src/BRepMesh/BRepMesh_CircleTool.hxx b/src/BRepMesh/BRepMesh_CircleTool.hxx
index 3f5701d63d..7dd5501809 100644
--- a/src/BRepMesh/BRepMesh_CircleTool.hxx
+++ b/src/BRepMesh/BRepMesh_CircleTool.hxx
@@ -50,14 +50,14 @@ public:
 
   //! Initializes the tool.
   //! @param theReservedSize size to be reserved for vector of circles.
-  inline void Init(const Standard_Integer /*theReservedSize*/)
+  void Init(const Standard_Integer /*theReservedSize*/)
   {
     myTolerance = Precision::PConfusion();
   }
 
   //! Sets new size for cell filter.
   //! @param theSize cell size to be set for X and Y dimensions.
-  inline void SetCellSize(const Standard_Real theSize)
+  void SetCellSize(const Standard_Real theSize)
   {
     myCellFilter.Reset(theSize, myAllocator);
   }
@@ -65,8 +65,8 @@ public:
   //! Sets new size for cell filter.
   //! @param theSizeX cell size to be set for X dimension.
   //! @param theSizeY cell size to be set for Y dimension.
-  inline void SetCellSize(const Standard_Real theSizeX,
-                          const Standard_Real theSizeY)
+  void SetCellSize(const Standard_Real theSizeX,
+                   const Standard_Real theSizeY)
   {
     Standard_Real aCellSizeC[2] = { theSizeX, theSizeY };
     NCollection_Array1<Standard_Real> aCellSize(aCellSizeC[0], 1, 2);
@@ -76,15 +76,15 @@ public:
   //! Sets limits of inspection area.
   //! @param theMin bottom left corner of inspection area.
   //! @param theMax top right corner of inspection area.
-  inline void SetMinMaxSize(const gp_XY& theMin,
-                            const gp_XY& theMax)
+  void SetMinMaxSize(const gp_XY& theMin,
+                     const gp_XY& theMax)
   {
     myFaceMin = theMin;
     myFaceMax = theMax;
   }
 
   //! Retruns true if cell filter contains no circle.
-  inline Standard_Boolean IsEmpty () const
+  Standard_Boolean IsEmpty () const
   {
     return mySelector.Circles ().IsEmpty ();
   }
diff --git a/src/BRepMesh/BRepMesh_Classifier.cxx b/src/BRepMesh/BRepMesh_Classifier.cxx
index 9ec0ca51dd..30f853cb84 100644
--- a/src/BRepMesh/BRepMesh_Classifier.cxx
+++ b/src/BRepMesh/BRepMesh_Classifier.cxx
@@ -20,6 +20,8 @@
 #include <CSLib_Class2d.hxx>
 #include <TColgp_Array1OfPnt2d.hxx>
 
+IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_Classifier, Standard_Transient)
+
 //=======================================================================
 //function : Constructor
 //purpose  : 
diff --git a/src/BRepMesh/BRepMesh_Classifier.hxx b/src/BRepMesh/BRepMesh_Classifier.hxx
index d7ee6f57e5..c81a303eaa 100644
--- a/src/BRepMesh/BRepMesh_Classifier.hxx
+++ b/src/BRepMesh/BRepMesh_Classifier.hxx
@@ -58,7 +58,7 @@ public:
     const std::pair<Standard_Real, Standard_Real>& theRangeU,
     const std::pair<Standard_Real, Standard_Real>& theRangeV);
 
-  DEFINE_STANDARD_RTTI_INLINE (BRepMesh_Classifier, Standard_Transient)
+  DEFINE_STANDARD_RTTIEXT(BRepMesh_Classifier, Standard_Transient)
 
 private:
 
diff --git a/src/BRepMesh/BRepMesh_ConstrainedBaseMeshAlgo.cxx b/src/BRepMesh/BRepMesh_ConstrainedBaseMeshAlgo.cxx
new file mode 100644
index 0000000000..2c7201e0b2
--- /dev/null
+++ b/src/BRepMesh/BRepMesh_ConstrainedBaseMeshAlgo.cxx
@@ -0,0 +1,18 @@
+// Created on: 2020-09-28
+// Copyright (c) 2020 OPEN CASCADE SAS
+// Created by: Maria KRYLOVA
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <BRepMesh_ConstrainedBaseMeshAlgo.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_ConstrainedBaseMeshAlgo, BRepMesh_BaseMeshAlgo)
\ No newline at end of file
diff --git a/src/BRepMesh/BRepMesh_ConstrainedBaseMeshAlgo.hxx b/src/BRepMesh/BRepMesh_ConstrainedBaseMeshAlgo.hxx
index 59e9836027..87405592a6 100644
--- a/src/BRepMesh/BRepMesh_ConstrainedBaseMeshAlgo.hxx
+++ b/src/BRepMesh/BRepMesh_ConstrainedBaseMeshAlgo.hxx
@@ -39,7 +39,7 @@ public:
   {
   }
 
-  DEFINE_STANDARD_RTTI_INLINE(BRepMesh_ConstrainedBaseMeshAlgo, BRepMesh_BaseMeshAlgo)
+  DEFINE_STANDARD_RTTIEXT(BRepMesh_ConstrainedBaseMeshAlgo, BRepMesh_BaseMeshAlgo)
 
 protected:
 
diff --git a/src/BRepMesh/BRepMesh_Context.cxx b/src/BRepMesh/BRepMesh_Context.cxx
index fe9b6520d7..5ff2294d38 100644
--- a/src/BRepMesh/BRepMesh_Context.cxx
+++ b/src/BRepMesh/BRepMesh_Context.cxx
@@ -26,6 +26,8 @@
 #include <Message.hxx>
 #include <OSD_Environment.hxx>
 
+IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_Context, IMeshTools_Context)
+
 //=======================================================================
 // Function: Constructor
 // Purpose : 
diff --git a/src/BRepMesh/BRepMesh_Context.hxx b/src/BRepMesh/BRepMesh_Context.hxx
index e2b004d1d6..b99e6dce8a 100644
--- a/src/BRepMesh/BRepMesh_Context.hxx
+++ b/src/BRepMesh/BRepMesh_Context.hxx
@@ -30,7 +30,7 @@ public:
   //! Destructor.
   Standard_EXPORT virtual ~BRepMesh_Context ();
 
-  DEFINE_STANDARD_RTTI_INLINE(BRepMesh_Context, IMeshTools_Context)
+  DEFINE_STANDARD_RTTIEXT(BRepMesh_Context, IMeshTools_Context)
 };
 
 #endif
\ No newline at end of file
diff --git a/src/BRepMesh/BRepMesh_CurveTessellator.cxx b/src/BRepMesh/BRepMesh_CurveTessellator.cxx
index bb780d27e0..179597bbc8 100644
--- a/src/BRepMesh/BRepMesh_CurveTessellator.cxx
+++ b/src/BRepMesh/BRepMesh_CurveTessellator.cxx
@@ -28,6 +28,8 @@
 #include <Standard_Failure.hxx>
 #include <GCPnts_AbscissaPoint.hxx>
 
+IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_CurveTessellator, IMeshTools_CurveTessellator)
+
 //=======================================================================
 //function : Constructor
 //purpose  : 
diff --git a/src/BRepMesh/BRepMesh_CurveTessellator.hxx b/src/BRepMesh/BRepMesh_CurveTessellator.hxx
index 4a666be6b8..eaf7f37847 100644
--- a/src/BRepMesh/BRepMesh_CurveTessellator.hxx
+++ b/src/BRepMesh/BRepMesh_CurveTessellator.hxx
@@ -60,7 +60,7 @@ public:
     gp_Pnt&                thePoint,
     Standard_Real&         theParameter) const Standard_OVERRIDE;
 
-  DEFINE_STANDARD_RTTI_INLINE(BRepMesh_CurveTessellator, IMeshTools_CurveTessellator)
+  DEFINE_STANDARD_RTTIEXT(BRepMesh_CurveTessellator, IMeshTools_CurveTessellator)
 
 private:
 
diff --git a/src/BRepMesh/BRepMesh_CustomBaseMeshAlgo.cxx b/src/BRepMesh/BRepMesh_CustomBaseMeshAlgo.cxx
new file mode 100644
index 0000000000..2f4a0616ca
--- /dev/null
+++ b/src/BRepMesh/BRepMesh_CustomBaseMeshAlgo.cxx
@@ -0,0 +1,18 @@
+// Created on: 2020-09-28
+// Copyright (c) 2020 OPEN CASCADE SAS
+// Created by: Maria KRYLOVA
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <BRepMesh_CustomBaseMeshAlgo.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_CustomBaseMeshAlgo, BRepMesh_ConstrainedBaseMeshAlgo)
\ No newline at end of file
diff --git a/src/BRepMesh/BRepMesh_CustomBaseMeshAlgo.hxx b/src/BRepMesh/BRepMesh_CustomBaseMeshAlgo.hxx
index 74d6b0c81f..6282074d25 100644
--- a/src/BRepMesh/BRepMesh_CustomBaseMeshAlgo.hxx
+++ b/src/BRepMesh/BRepMesh_CustomBaseMeshAlgo.hxx
@@ -32,21 +32,21 @@ class BRepMesh_CustomBaseMeshAlgo : public BRepMesh_ConstrainedBaseMeshAlgo
 public:
 
   //! Constructor.
-  Standard_EXPORT BRepMesh_CustomBaseMeshAlgo ()
+  BRepMesh_CustomBaseMeshAlgo ()
   {
   }
 
   //! Destructor.
-  Standard_EXPORT virtual ~BRepMesh_CustomBaseMeshAlgo ()
+  virtual ~BRepMesh_CustomBaseMeshAlgo ()
   {
   }
 
-  DEFINE_STANDARD_RTTI_INLINE(BRepMesh_CustomBaseMeshAlgo, BRepMesh_ConstrainedBaseMeshAlgo)
+  DEFINE_STANDARD_RTTIEXT(BRepMesh_CustomBaseMeshAlgo, BRepMesh_ConstrainedBaseMeshAlgo)
 
 protected:
 
   //! Generates mesh for the contour stored in data structure.
-  Standard_EXPORT virtual void generateMesh (const Message_ProgressRange& theRange) Standard_OVERRIDE
+  virtual void generateMesh (const Message_ProgressRange& theRange) Standard_OVERRIDE
   {
     const Handle (BRepMesh_DataStructureOfDelaun)& aStructure = this->getStructure ();
     const Standard_Integer aNodesNb = aStructure->NbNodes ();
diff --git a/src/BRepMesh/BRepMesh_DataStructureOfDelaun.cxx b/src/BRepMesh/BRepMesh_DataStructureOfDelaun.cxx
index 7a49413c95..e69a110dc9 100644
--- a/src/BRepMesh/BRepMesh_DataStructureOfDelaun.cxx
+++ b/src/BRepMesh/BRepMesh_DataStructureOfDelaun.cxx
@@ -24,6 +24,8 @@
 #include <BRepTools.hxx>
 #include <Standard_ErrorHandler.hxx>
 
+IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_DataStructureOfDelaun, Standard_Transient)
+
 //=======================================================================
 //function : BRepMesh_DataStructureOfDelaun
 //purpose  : 
diff --git a/src/BRepMesh/BRepMesh_DataStructureOfDelaun.hxx b/src/BRepMesh/BRepMesh_DataStructureOfDelaun.hxx
index cc6b714153..e190e17a8f 100644
--- a/src/BRepMesh/BRepMesh_DataStructureOfDelaun.hxx
+++ b/src/BRepMesh/BRepMesh_DataStructureOfDelaun.hxx
@@ -42,7 +42,7 @@ public:
 public: //! @name API for accessing mesh nodes.
 
   //! Returns number of nodes.
-  inline Standard_Integer NbNodes() const
+  Standard_Integer NbNodes() const
   {
     return myNodes->Extent();
   }
@@ -68,7 +68,7 @@ public: //! @name API for accessing mesh nodes.
   //! Get node by the index.
   //! @param theIndex index of a node.
   //! @return node with the given index.
-  inline const BRepMesh_Vertex& GetNode(const Standard_Integer theIndex)
+  const BRepMesh_Vertex& GetNode(const Standard_Integer theIndex)
   {
     return myNodes->FindKey(theIndex);
   }
@@ -105,7 +105,7 @@ public: //! @name API for accessing mesh nodes.
   //! Get list of links attached to the node with the given index.
   //! @param theIndex index of node whose links should be retrieved.
   //! @return list of links attached to the node.
-  inline const IMeshData::ListOfInteger& LinksConnectedTo(
+  const IMeshData::ListOfInteger& LinksConnectedTo(
     const Standard_Integer theIndex) const
   {
     return linksConnectedTo(theIndex);
@@ -115,7 +115,7 @@ public: //! @name API for accessing mesh nodes.
 public: //! @name API for accessing mesh links.
 
   //! Returns number of links.
-  inline Standard_Integer NbLinks() const
+  Standard_Integer NbLinks() const
   {
     return myLinks.Extent();
   }
@@ -142,7 +142,7 @@ public: //! @name API for accessing mesh links.
   }
 
   //! Returns map of indices of links registered in mesh.
-  inline const IMeshData::MapOfInteger& LinksOfDomain() const
+  const IMeshData::MapOfInteger& LinksOfDomain() const
   {
     return myLinksOfDomain;
   }
@@ -176,7 +176,7 @@ public: //! @name API for accessing mesh links.
 public: //! @name API for accessing mesh elements.
 
   //! Returns number of links.
-  inline Standard_Integer NbElements() const
+  Standard_Integer NbElements() const
   {
     return myElements.Size();
   }
@@ -195,7 +195,7 @@ public: //! @name API for accessing mesh elements.
   }
 
   //! Returns map of indices of elements registered in mesh.
-  inline const IMeshData::MapOfInteger& ElementsOfDomain() const
+  const IMeshData::MapOfInteger& ElementsOfDomain() const
   {
     return myElementsOfDomain;
   }
@@ -229,13 +229,13 @@ public: //! @name Auxilary API
   Standard_EXPORT void Statistics(Standard_OStream& theStream) const;
   
   //! Returns memory allocator used by the structure.
-  inline const Handle(NCollection_IncAllocator)& Allocator() const
+  const Handle(NCollection_IncAllocator)& Allocator() const
   {
     return myAllocator;
   }
 
   //! Gives the data structure for initialization of cell size and tolerance.
-  inline const Handle(BRepMesh_VertexTool)& Data()
+  const Handle(BRepMesh_VertexTool)& Data()
   {
     return myNodes;
   }
@@ -251,14 +251,14 @@ public: //! @name Auxilary API
     clearDeletedNodes();
   }
 
-  DEFINE_STANDARD_RTTI_INLINE(BRepMesh_DataStructureOfDelaun, Standard_Transient)
+  DEFINE_STANDARD_RTTIEXT(BRepMesh_DataStructureOfDelaun, Standard_Transient)
 
 private: 
 
   //! Get list of links attached to the node with the given index.
   //! @param theIndex index of node whose links should be retrieved.
   //! @return list of links attached to the node.
-  inline IMeshData::ListOfInteger& linksConnectedTo(
+  IMeshData::ListOfInteger& linksConnectedTo(
     const Standard_Integer theIndex) const
   {
     return (IMeshData::ListOfInteger&)myNodeLinks.Find(theIndex);
diff --git a/src/BRepMesh/BRepMesh_DefaultRangeSplitter.hxx b/src/BRepMesh/BRepMesh_DefaultRangeSplitter.hxx
index 45f2175c39..a12333d100 100644
--- a/src/BRepMesh/BRepMesh_DefaultRangeSplitter.hxx
+++ b/src/BRepMesh/BRepMesh_DefaultRangeSplitter.hxx
@@ -70,7 +70,7 @@ public:
 
   //! Returns point in 3d space corresponded to the given 
   //! point defined in parameteric space of surface.
-  inline gp_Pnt Point(const gp_Pnt2d& thePoint2d) const
+  gp_Pnt Point(const gp_Pnt2d& thePoint2d) const
   {
     return GetSurface()->Value(thePoint2d.X(), thePoint2d.Y());
   }
@@ -85,36 +85,36 @@ protected:
 
 public:
   //! Returns face model.
-  inline const IMeshData::IFaceHandle& GetDFace() const
+  const IMeshData::IFaceHandle& GetDFace() const
   {
     return myDFace;
   }
 
   //! Returns surface.
-  inline const Handle(BRepAdaptor_HSurface)& GetSurface() const
+  const Handle(BRepAdaptor_HSurface)& GetSurface() const
   {
     return myDFace->GetSurface();
   }
 
   //! Returns U range.
-  inline const std::pair<Standard_Real, Standard_Real>& GetRangeU() const
+  const std::pair<Standard_Real, Standard_Real>& GetRangeU() const
   {
     return myRangeU;
   }
 
   //! Returns V range.
-  inline const std::pair<Standard_Real, Standard_Real>& GetRangeV() const
+  const std::pair<Standard_Real, Standard_Real>& GetRangeV() const
   {
     return myRangeV;
   }
 
   //! Returns delta.
-  inline const std::pair<Standard_Real, Standard_Real>& GetDelta () const
+  const std::pair<Standard_Real, Standard_Real>& GetDelta () const
   {
     return myDelta;
   }
 
-  inline const std::pair<Standard_Real, Standard_Real>& GetToleranceUV() const
+  const std::pair<Standard_Real, Standard_Real>& GetToleranceUV() const
   {
     return myTolerance;
   }
diff --git a/src/BRepMesh/BRepMesh_Deflection.cxx b/src/BRepMesh/BRepMesh_Deflection.cxx
index f6e37b2b48..8d8fc97b05 100644
--- a/src/BRepMesh/BRepMesh_Deflection.cxx
+++ b/src/BRepMesh/BRepMesh_Deflection.cxx
@@ -24,6 +24,8 @@
 #include <TopExp.hxx>
 #include <TopoDS_Vertex.hxx>
 
+IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_Deflection, Standard_Transient)
+
 //=======================================================================
 //function : RelativeEdgeDeflection
 //purpose  : 
diff --git a/src/BRepMesh/BRepMesh_Deflection.hxx b/src/BRepMesh/BRepMesh_Deflection.hxx
index d8c7caf472..9c15607673 100644
--- a/src/BRepMesh/BRepMesh_Deflection.hxx
+++ b/src/BRepMesh/BRepMesh_Deflection.hxx
@@ -72,7 +72,7 @@ public:
     const Standard_Boolean theAllowDecrease,
     const Standard_Real theRatio = 0.1);
 
-  DEFINE_STANDARD_RTTI_INLINE(BRepMesh_Deflection, Standard_Transient)
+  DEFINE_STANDARD_RTTIEXT(BRepMesh_Deflection, Standard_Transient)
 };
 
 #endif
\ No newline at end of file
diff --git a/src/BRepMesh/BRepMesh_Delaun.cxx b/src/BRepMesh/BRepMesh_Delaun.cxx
index 6ca5cee049..cf4078c8a4 100644
--- a/src/BRepMesh/BRepMesh_Delaun.cxx
+++ b/src/BRepMesh/BRepMesh_Delaun.cxx
@@ -71,7 +71,7 @@ namespace {
     Handle(BRepMesh_DataStructureOfDelaun) myStructure;
   };
 
-  inline void UpdateBndBox(const gp_XY& thePnt1, const gp_XY& thePnt2, Bnd_B2d& theBox)
+  void UpdateBndBox(const gp_XY& thePnt1, const gp_XY& thePnt2, Bnd_B2d& theBox)
   {
     theBox.Add( thePnt1 );
     theBox.Add( thePnt2 );
diff --git a/src/BRepMesh/BRepMesh_Delaun.hxx b/src/BRepMesh/BRepMesh_Delaun.hxx
index f0812d48d1..0a6c078843 100755
--- a/src/BRepMesh/BRepMesh_Delaun.hxx
+++ b/src/BRepMesh/BRepMesh_Delaun.hxx
@@ -84,13 +84,13 @@ public:
   Standard_EXPORT Standard_Boolean UseEdge (const Standard_Integer theEdge);
 
   //! Gives the Mesh data structure.
-  inline const Handle(BRepMesh_DataStructureOfDelaun)& Result() const
+  const Handle(BRepMesh_DataStructureOfDelaun)& Result() const
   {
     return myMeshData;
   }
 
   //! Forces insertion of constraint edges into the base triangulation. 
-  inline void ProcessConstraints()
+  void ProcessConstraints()
   {
     insertInternalEdges();
 
@@ -99,43 +99,43 @@ public:
   }
 
   //! Gives the list of frontier edges.
-  inline Handle(IMeshData::MapOfInteger) Frontier() const
+  Handle(IMeshData::MapOfInteger) Frontier() const
   {
     return getEdgesByType (BRepMesh_Frontier);
   }
 
   //! Gives the list of internal edges.
-  inline Handle(IMeshData::MapOfInteger) InternalEdges() const
+  Handle(IMeshData::MapOfInteger) InternalEdges() const
   {
     return getEdgesByType (BRepMesh_Fixed);
   }
 
   //! Gives the list of free edges used only one time
-  inline Handle(IMeshData::MapOfInteger) FreeEdges() const
+  Handle(IMeshData::MapOfInteger) FreeEdges() const
   {
     return getEdgesByType (BRepMesh_Free);
   }
 
   //! Gives vertex with the given index
-  inline const BRepMesh_Vertex& GetVertex (const Standard_Integer theIndex) const
+  const BRepMesh_Vertex& GetVertex (const Standard_Integer theIndex) const
   {
     return myMeshData->GetNode (theIndex);
   }
 
   //! Gives edge with the given index
-  inline const BRepMesh_Edge& GetEdge (const Standard_Integer theIndex) const
+  const BRepMesh_Edge& GetEdge (const Standard_Integer theIndex) const
   {
     return myMeshData->GetLink (theIndex);
   }
 
   //! Gives triangle with the given index
-  inline const BRepMesh_Triangle& GetTriangle (const Standard_Integer theIndex) const
+  const BRepMesh_Triangle& GetTriangle (const Standard_Integer theIndex) const
   {
     return myMeshData->GetElement (theIndex);
   }
 
   //! Returns tool used to build mesh consistent to Delaunay criteria.
-  inline const BRepMesh_CircleTool& Circles() const
+  const BRepMesh_CircleTool& Circles() const
   {
     return myCircles;
   }
@@ -260,16 +260,16 @@ private:
     IMeshData::SequenceOfBndB2d&  thePolyBoxesCut);
 
   //! Triangulation of closed polygon containing only three edges.
-  inline Standard_Boolean meshElementaryPolygon (const IMeshData::SequenceOfInteger& thePolygon);
+  Standard_Boolean meshElementaryPolygon (const IMeshData::SequenceOfInteger& thePolygon);
 
   //! Creates the triangles beetween the given node and the given polyline.
   void createTriangles (const Standard_Integer         theVertexIndex,
                         IMeshData::MapOfIntegerInteger& thePoly);
 
   //! Add a triangle based on the given oriented edges into mesh
-  inline void addTriangle (const Standard_Integer (&theEdgesId)[3],
-                           const Standard_Boolean (&theEdgesOri)[3],
-                           const Standard_Integer (&theNodesId)[3]);
+  void addTriangle (const Standard_Integer (&theEdgesId)[3],
+                    const Standard_Boolean (&theEdgesOri)[3],
+                    const Standard_Integer (&theNodesId)[3]);
 
   //! Deletes the triangle with the given index and adds the free edges into the map.
   //! When an edge is suppressed more than one time it is destroyed.
diff --git a/src/BRepMesh/BRepMesh_DelaunayBaseMeshAlgo.cxx b/src/BRepMesh/BRepMesh_DelaunayBaseMeshAlgo.cxx
index 33593dbccf..284f095254 100644
--- a/src/BRepMesh/BRepMesh_DelaunayBaseMeshAlgo.cxx
+++ b/src/BRepMesh/BRepMesh_DelaunayBaseMeshAlgo.cxx
@@ -17,6 +17,8 @@
 #include <BRepMesh_MeshTool.hxx>
 #include <BRepMesh_Delaun.hxx>
 
+IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_DelaunayBaseMeshAlgo, BRepMesh_ConstrainedBaseMeshAlgo)
+
 //=======================================================================
 // Function: Constructor
 // Purpose : 
diff --git a/src/BRepMesh/BRepMesh_DelaunayBaseMeshAlgo.hxx b/src/BRepMesh/BRepMesh_DelaunayBaseMeshAlgo.hxx
index 627d489cf0..5cfdc31aaa 100644
--- a/src/BRepMesh/BRepMesh_DelaunayBaseMeshAlgo.hxx
+++ b/src/BRepMesh/BRepMesh_DelaunayBaseMeshAlgo.hxx
@@ -35,7 +35,7 @@ public:
   //! Destructor.
   Standard_EXPORT virtual ~BRepMesh_DelaunayBaseMeshAlgo();
 
-  DEFINE_STANDARD_RTTI_INLINE(BRepMesh_DelaunayBaseMeshAlgo, BRepMesh_ConstrainedBaseMeshAlgo)
+  DEFINE_STANDARD_RTTIEXT(BRepMesh_DelaunayBaseMeshAlgo, BRepMesh_ConstrainedBaseMeshAlgo)
 
 protected:
 
diff --git a/src/BRepMesh/BRepMesh_DelaunayDeflectionControlMeshAlgo.hxx b/src/BRepMesh/BRepMesh_DelaunayDeflectionControlMeshAlgo.hxx
index ea355e797f..cc496f20ca 100644
--- a/src/BRepMesh/BRepMesh_DelaunayDeflectionControlMeshAlgo.hxx
+++ b/src/BRepMesh/BRepMesh_DelaunayDeflectionControlMeshAlgo.hxx
@@ -193,7 +193,7 @@ private:
   };
 
   //! Returns nodes info of the given triangle.
-  inline void getTriangleInfo(
+  void getTriangleInfo(
     const BRepMesh_Triangle& theTriangle,
     const Standard_Integer (&theNodesIndices)[3],
     TriangleNodeInfo       (&theInfo)[3]) const
@@ -237,7 +237,7 @@ private:
 
   //! Updates array of links vectors.
   //! @return False on degenerative triangle.
-  inline Standard_Boolean computeTriangleGeometry(
+  Standard_Boolean computeTriangleGeometry(
     const TriangleNodeInfo(&theNodesInfo)[3],
     gp_Vec                (&theLinks)[3],
     gp_Vec                 &theNormal)
@@ -258,7 +258,7 @@ private:
 
   //! Updates array of links vectors.
   //! @return False on degenerative triangle.
-  inline Standard_Boolean checkTriangleForDegenerativityAndGetLinks(
+  Standard_Boolean checkTriangleForDegenerativityAndGetLinks(
     const TriangleNodeInfo (&theNodesInfo)[3],
     gp_Vec                 (&theLinks)[3])
   {
@@ -277,7 +277,7 @@ private:
 
   //! Checks area of triangle in parametric space for degenerativity.
   //! @return False on degenerative triangle.
-  inline Standard_Boolean checkTriangleArea2d(
+  Standard_Boolean checkTriangleArea2d(
     const TriangleNodeInfo (&theNodesInfo)[3])
   {
     const gp_Vec2d aLink2d1(theNodesInfo[0].Point2d, theNodesInfo[1].Point2d);
@@ -289,9 +289,9 @@ private:
 
   //! Computes normal using two link vectors.
   //! @return True on success, False in case of normal of null magnitude.
-  inline Standard_Boolean computeNormal(const gp_Vec& theLink1,
-                                        const gp_Vec& theLink2,
-                                        gp_Vec&       theNormal)
+  Standard_Boolean computeNormal(const gp_Vec& theLink1,
+                                 const gp_Vec& theLink2,
+                                 gp_Vec&       theNormal)
   {
     const gp_Vec aNormal(theLink1 ^ theLink2);
     if (aNormal.SquareMagnitude() > gp::Resolution())
@@ -305,7 +305,7 @@ private:
 
   //! Computes deflection of midpoints of triangles links.
   //! @return True if point fits specified deflection.
-  inline void splitLinks(
+  void splitLinks(
     const TriangleNodeInfo (&theNodesInfo)[3],
     const Standard_Integer (&theNodesIndices)[3])
   {
@@ -385,7 +385,7 @@ private:
   //! insertion in case if it overflows deflection.
   //! @return True if point has been cached for insertion.
   template<class DeflectionFunctor>
-  inline Standard_Boolean usePoint(
+  Standard_Boolean usePoint(
     const gp_XY&             thePnt2d,
     const DeflectionFunctor& theDeflectionFunctor)
   {
diff --git a/src/BRepMesh/BRepMesh_DelaunayNodeInsertionMeshAlgo.hxx b/src/BRepMesh/BRepMesh_DelaunayNodeInsertionMeshAlgo.hxx
index a2e6d5037e..606eec61a7 100644
--- a/src/BRepMesh/BRepMesh_DelaunayNodeInsertionMeshAlgo.hxx
+++ b/src/BRepMesh/BRepMesh_DelaunayNodeInsertionMeshAlgo.hxx
@@ -42,7 +42,7 @@ public:
   }
 
   //! Returns PreProcessSurfaceNodes flag. 
-  inline Standard_Boolean IsPreProcessSurfaceNodes () const
+  Standard_Boolean IsPreProcessSurfaceNodes () const
   {
     return myIsPreProcessSurfaceNodes;
   }
@@ -50,7 +50,7 @@ public:
   //! Sets PreProcessSurfaceNodes flag.
   //! If TRUE, registers surface nodes before generation of base mesh.
   //! If FALSE, inserts surface nodes after generation of base mesh. 
-  inline void SetPreProcessSurfaceNodes (const Standard_Boolean isPreProcessSurfaceNodes)
+  void SetPreProcessSurfaceNodes (const Standard_Boolean isPreProcessSurfaceNodes)
   {
     myIsPreProcessSurfaceNodes = isPreProcessSurfaceNodes;
   }
diff --git a/src/BRepMesh/BRepMesh_DiscretFactory.hxx b/src/BRepMesh/BRepMesh_DiscretFactory.hxx
index a5f47d3111..4f7af9ba21 100644
--- a/src/BRepMesh/BRepMesh_DiscretFactory.hxx
+++ b/src/BRepMesh/BRepMesh_DiscretFactory.hxx
@@ -39,7 +39,7 @@ public:
   Standard_EXPORT static BRepMesh_DiscretFactory& Get();
   
   //! Returns the list of registered meshing algorithms.
-  inline const TColStd_MapOfAsciiString& Names() const
+  const TColStd_MapOfAsciiString& Names() const
   {
     return myNames;
   }
@@ -53,7 +53,7 @@ public:
   }
   
   //! Returns name for current meshing algorithm.
-  inline const TCollection_AsciiString& DefaultName() const
+  const TCollection_AsciiString& DefaultName() const
   {
     return myDefaultName;
   }
@@ -67,13 +67,13 @@ public:
   }
   
   //! Returns function name that should be exported by plugin.
-  inline const TCollection_AsciiString& FunctionName() const
+  const TCollection_AsciiString& FunctionName() const
   {
     return myFunctionName;
   }
   
   //! Returns error status for last meshing algorithm switch.
-  inline BRepMesh_FactoryError ErrorStatus() const
+  BRepMesh_FactoryError ErrorStatus() const
   {
     return myErrorStatus;
   }
diff --git a/src/BRepMesh/BRepMesh_DiscretRoot.hxx b/src/BRepMesh/BRepMesh_DiscretRoot.hxx
index eb549d31b3..77bb24cae7 100644
--- a/src/BRepMesh/BRepMesh_DiscretRoot.hxx
+++ b/src/BRepMesh/BRepMesh_DiscretRoot.hxx
@@ -30,18 +30,18 @@ public:
   Standard_EXPORT virtual ~BRepMesh_DiscretRoot();
 
   //! Set the shape to triangulate.
-  inline void SetShape(const TopoDS_Shape& theShape)
+  void SetShape(const TopoDS_Shape& theShape)
   {
     myShape = theShape;
   }
   
-  inline const TopoDS_Shape& Shape() const
+  const TopoDS_Shape& Shape() const
   {
     return myShape;
   }
   
   //! Returns true if triangualtion was performed and has success.
-  inline Standard_Boolean IsDone() const
+  Standard_Boolean IsDone() const
   {
     return myIsDone;
   }
@@ -58,13 +58,13 @@ protected:
   Standard_EXPORT BRepMesh_DiscretRoot();
   
   //! Sets IsDone flag.
-  inline void setDone()
+  void setDone()
   {
     myIsDone = Standard_True;
   }
   
   //! Clears IsDone flag.
-  inline void setNotDone()
+  void setNotDone()
   {
     myIsDone = Standard_False;
   }
diff --git a/src/BRepMesh/BRepMesh_Edge.hxx b/src/BRepMesh/BRepMesh_Edge.hxx
index 3ef8151311..b46056bffc 100644
--- a/src/BRepMesh/BRepMesh_Edge.hxx
+++ b/src/BRepMesh/BRepMesh_Edge.hxx
@@ -43,14 +43,14 @@ public:
   }
 
   //! Returns movability flag of the Link.
-  inline BRepMesh_DegreeOfFreedom Movability() const
+  BRepMesh_DegreeOfFreedom Movability() const
   {
     return myMovability;
   }
 
   //! Sets movability flag of the Link.
   //! @param theMovability flag to be set.
-  inline void SetMovability(const BRepMesh_DegreeOfFreedom theMovability)
+  void SetMovability(const BRepMesh_DegreeOfFreedom theMovability)
   {
     myMovability = theMovability;
   }
@@ -58,7 +58,7 @@ public:
   //! Checks if the given edge and this one have the same orientation.
   //! @param theOther edge to be checked against this one.
   //! \retrun TRUE if edges have the same orientation, FALSE if not.
-  inline Standard_Boolean IsSameOrientation(const BRepMesh_Edge& theOther) const
+  Standard_Boolean IsSameOrientation(const BRepMesh_Edge& theOther) const
   {
     return BRepMesh_OrientedEdge::IsEqual(theOther);
   }
@@ -66,7 +66,7 @@ public:
   //! Checks for equality with another edge.
   //! @param theOther edge to be checked against this one.
   //! @return TRUE if equal, FALSE if not.
-  inline Standard_Boolean IsEqual(const BRepMesh_Edge& theOther) const
+  Standard_Boolean IsEqual(const BRepMesh_Edge& theOther) const
   {
     if (myMovability == BRepMesh_Deleted || theOther.myMovability == BRepMesh_Deleted)
       return Standard_False;
@@ -76,7 +76,7 @@ public:
   }
 
   //! Alias for IsEqual.
-  inline Standard_Boolean operator ==(const BRepMesh_Edge& Other) const
+  Standard_Boolean operator ==(const BRepMesh_Edge& Other) const
   {
     return IsEqual(Other);
   }
diff --git a/src/BRepMesh/BRepMesh_EdgeDiscret.cxx b/src/BRepMesh/BRepMesh_EdgeDiscret.cxx
index dfdc045065..277ec6ab1c 100644
--- a/src/BRepMesh/BRepMesh_EdgeDiscret.cxx
+++ b/src/BRepMesh/BRepMesh_EdgeDiscret.cxx
@@ -26,6 +26,8 @@
 #include <BRepMesh_CurveTessellator.hxx>
 #include <OSD_Parallel.hxx>
 
+IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_EdgeDiscret, IMeshTools_ModelAlgo)
+
 //=======================================================================
 // Function: Constructor
 // Purpose : 
diff --git a/src/BRepMesh/BRepMesh_EdgeDiscret.hxx b/src/BRepMesh/BRepMesh_EdgeDiscret.hxx
index 2adfc0a847..c8db5ec342 100644
--- a/src/BRepMesh/BRepMesh_EdgeDiscret.hxx
+++ b/src/BRepMesh/BRepMesh_EdgeDiscret.hxx
@@ -53,7 +53,7 @@ public:
     const IMeshData::IFaceHandle& theDFace);
 
   //! Functor API to discretize the given edge.
-  inline void operator() (const Standard_Integer theEdgeIndex) const {
+  void operator() (const Standard_Integer theEdgeIndex) const {
     process (theEdgeIndex);
   }
 
@@ -68,7 +68,7 @@ public:
     const IMeshData::IEdgeHandle& theDEdge,
     const Standard_Boolean        theUpdateEnds);
 
-  DEFINE_STANDARD_RTTI_INLINE(BRepMesh_EdgeDiscret, IMeshTools_ModelAlgo)
+  DEFINE_STANDARD_RTTIEXT(BRepMesh_EdgeDiscret, IMeshTools_ModelAlgo)
 
 protected:
 
diff --git a/src/BRepMesh/BRepMesh_EdgeTessellationExtractor.cxx b/src/BRepMesh/BRepMesh_EdgeTessellationExtractor.cxx
index 5e2748042d..6f9e1ab8bb 100644
--- a/src/BRepMesh/BRepMesh_EdgeTessellationExtractor.cxx
+++ b/src/BRepMesh/BRepMesh_EdgeTessellationExtractor.cxx
@@ -20,6 +20,8 @@
 #include <IMeshData_Face.hxx>
 #include <IMeshData_Edge.hxx>
 
+IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_EdgeTessellationExtractor, IMeshTools_CurveTessellator)
+
 //=======================================================================
 //function : Constructor
 //purpose  : 
diff --git a/src/BRepMesh/BRepMesh_EdgeTessellationExtractor.hxx b/src/BRepMesh/BRepMesh_EdgeTessellationExtractor.hxx
index 8ce07f590f..48e0a915bf 100644
--- a/src/BRepMesh/BRepMesh_EdgeTessellationExtractor.hxx
+++ b/src/BRepMesh/BRepMesh_EdgeTessellationExtractor.hxx
@@ -50,7 +50,7 @@ public:
     gp_Pnt&                thePoint,
     Standard_Real&         theParameter) const Standard_OVERRIDE;
 
-  DEFINE_STANDARD_RTTI_INLINE(BRepMesh_EdgeTessellationExtractor, IMeshTools_CurveTessellator)
+  DEFINE_STANDARD_RTTIEXT(BRepMesh_EdgeTessellationExtractor, IMeshTools_CurveTessellator)
 
 private:
 
diff --git a/src/BRepMesh/BRepMesh_FaceChecker.cxx b/src/BRepMesh/BRepMesh_FaceChecker.cxx
index e40f17d1ea..b78238d692 100644
--- a/src/BRepMesh/BRepMesh_FaceChecker.cxx
+++ b/src/BRepMesh/BRepMesh_FaceChecker.cxx
@@ -19,6 +19,8 @@
 #include <OSD_Parallel.hxx>
 #include <BRepMesh_GeomTool.hxx>
 
+IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_FaceChecker, Standard_Transient)
+
 namespace
 {
   const Standard_Real MaxTangentAngle = 5. * M_PI / 180.;
diff --git a/src/BRepMesh/BRepMesh_FaceChecker.hxx b/src/BRepMesh/BRepMesh_FaceChecker.hxx
index 5166f3bfe4..b0597ed5ad 100644
--- a/src/BRepMesh/BRepMesh_FaceChecker.hxx
+++ b/src/BRepMesh/BRepMesh_FaceChecker.hxx
@@ -78,17 +78,17 @@ public: //! @name mesher API
   }
 
   //! Checks wire with the given index for intersection with others.
-  inline void operator()(const Standard_Integer theWireIndex) const
+  void operator()(const Standard_Integer theWireIndex) const
   {
     perform(theWireIndex);
   }
 
-  DEFINE_STANDARD_RTTI_INLINE(BRepMesh_FaceChecker, Standard_Transient)
+  DEFINE_STANDARD_RTTIEXT(BRepMesh_FaceChecker, Standard_Transient)
 
 private:
 
   //! Returns True in case if check can be performed in parallel mode.
-  inline Standard_Boolean isParallel() const
+  Standard_Boolean isParallel() const
   {
     return (myParameters.InParallel && myDFace->WiresNb() > 1);
   }
diff --git a/src/BRepMesh/BRepMesh_FaceDiscret.cxx b/src/BRepMesh/BRepMesh_FaceDiscret.cxx
index 424fdd2c59..5d76218476 100644
--- a/src/BRepMesh/BRepMesh_FaceDiscret.cxx
+++ b/src/BRepMesh/BRepMesh_FaceDiscret.cxx
@@ -21,6 +21,8 @@
 #include <IMeshTools_MeshAlgo.hxx>
 #include <OSD_Parallel.hxx>
 
+IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_FaceDiscret, IMeshTools_ModelAlgo)
+
 //=======================================================================
 // Function: Constructor
 // Purpose : 
diff --git a/src/BRepMesh/BRepMesh_FaceDiscret.hxx b/src/BRepMesh/BRepMesh_FaceDiscret.hxx
index a7b550f1b2..026ec0310e 100644
--- a/src/BRepMesh/BRepMesh_FaceDiscret.hxx
+++ b/src/BRepMesh/BRepMesh_FaceDiscret.hxx
@@ -37,7 +37,7 @@ public:
   //! Destructor.
   Standard_EXPORT virtual ~BRepMesh_FaceDiscret();
 
-  DEFINE_STANDARD_RTTI_INLINE(BRepMesh_FaceDiscret, IMeshTools_ModelAlgo)
+  DEFINE_STANDARD_RTTIEXT(BRepMesh_FaceDiscret, IMeshTools_ModelAlgo)
 
 protected:
 
diff --git a/src/BRepMesh/BRepMesh_GeomTool.hxx b/src/BRepMesh/BRepMesh_GeomTool.hxx
index 6d69c4bd76..c4d6c39d2e 100644
--- a/src/BRepMesh/BRepMesh_GeomTool.hxx
+++ b/src/BRepMesh/BRepMesh_GeomTool.hxx
@@ -99,15 +99,15 @@ public:
   //! @param theIsReplace if TRUE replaces existing point lying within 
   //! parameteric tolerance of the given point.
   //! @return index of new added point or found with parametric tolerance
-  inline Standard_Integer AddPoint(const gp_Pnt&           thePoint,
-                                   const Standard_Real     theParam,
-                                   const Standard_Boolean  theIsReplace = Standard_True)
+  Standard_Integer AddPoint(const gp_Pnt&           thePoint,
+                            const Standard_Real     theParam,
+                            const Standard_Boolean  theIsReplace = Standard_True)
   {
     return myDiscretTool.AddPoint(thePoint, theParam, theIsReplace);
   }
   
   //! Returns number of discretization points.
-  inline Standard_Integer NbPoints() const
+  Standard_Integer NbPoints() const
   {
     return myDiscretTool.NbPoints();
   }
diff --git a/src/BRepMesh/BRepMesh_IncrementalMesh.cxx b/src/BRepMesh/BRepMesh_IncrementalMesh.cxx
index eb00e303eb..04c46f92c1 100644
--- a/src/BRepMesh/BRepMesh_IncrementalMesh.cxx
+++ b/src/BRepMesh/BRepMesh_IncrementalMesh.cxx
@@ -22,6 +22,8 @@
 #include <IMeshData_Wire.hxx>
 #include <IMeshTools_MeshBuilder.hxx>
 
+IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_IncrementalMesh, BRepMesh_DiscretRoot)
+
 namespace
 {
   //! Default flag to control parallelization for BRepMesh_IncrementalMesh
diff --git a/src/BRepMesh/BRepMesh_IncrementalMesh.hxx b/src/BRepMesh/BRepMesh_IncrementalMesh.hxx
index 0e64147616..61f1fcc443 100644
--- a/src/BRepMesh/BRepMesh_IncrementalMesh.hxx
+++ b/src/BRepMesh/BRepMesh_IncrementalMesh.hxx
@@ -63,25 +63,25 @@ public: //! @name mesher API
 public: //! @name accessing to parameters.
 
   //! Returns meshing parameters
-  inline const IMeshTools_Parameters& Parameters() const
+  const IMeshTools_Parameters& Parameters() const
   {
     return myParameters;
   }
 
   //! Returns modifiable meshing parameters
-  inline IMeshTools_Parameters& ChangeParameters()
+  IMeshTools_Parameters& ChangeParameters()
   {
     return myParameters;
   }
 
   //! Returns modified flag.
-  inline Standard_Boolean IsModified() const
+  Standard_Boolean IsModified() const
   {
     return myModified;
   }
   
   //! Returns accumulated status flags faced during meshing.
-  inline Standard_Integer GetStatusFlags() const
+  Standard_Integer GetStatusFlags() const
   {
     return myStatus;
   }
@@ -89,7 +89,7 @@ public: //! @name accessing to parameters.
 private:
 
   //! Initializes specific parameters
-  inline void initParameters()
+  void initParameters()
   {
     if (myParameters.DeflectionInterior < Precision::Confusion())
     {
@@ -131,7 +131,7 @@ public: //! @name plugin API
   //! Discret() static method (thus applied only to Mesh Factories).
   Standard_EXPORT static void SetParallelDefault(const Standard_Boolean isInParallel);
 
-  DEFINE_STANDARD_RTTI_INLINE(BRepMesh_IncrementalMesh, BRepMesh_DiscretRoot)
+  DEFINE_STANDARD_RTTIEXT(BRepMesh_IncrementalMesh, BRepMesh_DiscretRoot)
 
 protected:
 
diff --git a/src/BRepMesh/BRepMesh_MeshAlgoFactory.cxx b/src/BRepMesh/BRepMesh_MeshAlgoFactory.cxx
index 891448a1cf..e6650d27e9 100644
--- a/src/BRepMesh/BRepMesh_MeshAlgoFactory.cxx
+++ b/src/BRepMesh/BRepMesh_MeshAlgoFactory.cxx
@@ -25,6 +25,8 @@
 #include <BRepMesh_DelaunayDeflectionControlMeshAlgo.hxx>
 #include <BRepMesh_BoundaryParamsRangeSplitter.hxx>
 
+IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_MeshAlgoFactory, IMeshTools_MeshAlgoFactory)
+
 namespace
 {
   struct BaseMeshAlgo
diff --git a/src/BRepMesh/BRepMesh_MeshAlgoFactory.hxx b/src/BRepMesh/BRepMesh_MeshAlgoFactory.hxx
index ed6b9b1db5..491cb16e83 100644
--- a/src/BRepMesh/BRepMesh_MeshAlgoFactory.hxx
+++ b/src/BRepMesh/BRepMesh_MeshAlgoFactory.hxx
@@ -38,7 +38,7 @@ public:
     const GeomAbs_SurfaceType    theSurfaceType,
     const IMeshTools_Parameters& theParameters) const Standard_OVERRIDE;
 
-  DEFINE_STANDARD_RTTI_INLINE(BRepMesh_MeshAlgoFactory, IMeshTools_MeshAlgoFactory)
+  DEFINE_STANDARD_RTTIEXT(BRepMesh_MeshAlgoFactory, IMeshTools_MeshAlgoFactory)
 };
 
 #endif
\ No newline at end of file
diff --git a/src/BRepMesh/BRepMesh_MeshTool.cxx b/src/BRepMesh/BRepMesh_MeshTool.cxx
index 31a304f883..37b32735cb 100644
--- a/src/BRepMesh/BRepMesh_MeshTool.cxx
+++ b/src/BRepMesh/BRepMesh_MeshTool.cxx
@@ -24,10 +24,12 @@
 #include <BRepTools.hxx>
 #include <gp_Pln.hxx>
 
+IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_MeshTool, Standard_Transient)
+
 namespace
 {
   //! Returns index of triangle node opposite to the given link.
-  inline Standard_Integer findApexIndex(
+  Standard_Integer findApexIndex(
     const Standard_Integer(&aNodes)[3],
     const BRepMesh_Edge&   theLink)
   {
diff --git a/src/BRepMesh/BRepMesh_MeshTool.hxx b/src/BRepMesh/BRepMesh_MeshTool.hxx
index 7ca02940aa..72c9912ada 100644
--- a/src/BRepMesh/BRepMesh_MeshTool.hxx
+++ b/src/BRepMesh/BRepMesh_MeshTool.hxx
@@ -49,7 +49,7 @@ public:
       mySign = myConstraint.Direction().X() > 0;
     }
 
-    inline Standard_Boolean IsAbove(const Standard_Integer theNodeIndex) const
+    Standard_Boolean IsAbove(const Standard_Integer theNodeIndex) const
     {
       const BRepMesh_Vertex& aVertex = myStructure->GetNode(theNodeIndex);
       const gp_Vec2d aNodeVec(myConstraint.Location(), aVertex.Coord());
@@ -88,7 +88,7 @@ public:
   Standard_EXPORT virtual ~BRepMesh_MeshTool();
 
   //! Returns data structure manipulated by this tool.
-  inline const Handle(BRepMesh_DataStructureOfDelaun)& GetStructure() const
+  const Handle(BRepMesh_DataStructureOfDelaun)& GetStructure() const
   {
     return myStructure;
   }
@@ -98,7 +98,7 @@ public:
 
   //! Adds new triangle with specified nodes to mesh.
   //! Legalizes triangle in case if it violates circle criteria.
-  inline void AddAndLegalizeTriangle(
+  void AddAndLegalizeTriangle(
     const Standard_Integer thePoint1,
     const Standard_Integer thePoint2,
     const Standard_Integer thePoint3)
@@ -112,7 +112,7 @@ public:
   }
 
   //! Adds new triangle with specified nodes to mesh.
-  inline void AddTriangle(
+  void AddTriangle(
     const Standard_Integer thePoint1,
     const Standard_Integer thePoint2,
     const Standard_Integer thePoint3,
@@ -128,10 +128,10 @@ public:
 
   //! Adds new link to mesh.
   //! Updates link index and link orientaion parameters.
-  inline void AddLink(const Standard_Integer theFirstNode,
-                      const Standard_Integer theLastNode,
-                      Standard_Integer&      theLinkIndex,
-                      Standard_Boolean&      theLinkOri)
+  void AddLink(const Standard_Integer theFirstNode,
+               const Standard_Integer theLastNode,
+               Standard_Integer&      theLinkIndex,
+               Standard_Boolean&      theLinkOri)
   {
     const Standard_Integer aLinkIt = myStructure->AddLink(
       BRepMesh_Edge(theFirstNode, theLastNode, BRepMesh_Free));
@@ -169,12 +169,12 @@ public:
   //! Gives the list of edges with type defined by input parameter.
   Standard_EXPORT Handle(IMeshData::MapOfInteger) GetEdgesByType(const BRepMesh_DegreeOfFreedom theEdgeType) const;
 
-  DEFINE_STANDARD_RTTI_INLINE(BRepMesh_MeshTool, Standard_Transient)
+  DEFINE_STANDARD_RTTIEXT(BRepMesh_MeshTool, Standard_Transient)
 
 private:
 
   //! Returns True if the given point lies within circumcircle of the given triangle.
-  inline Standard_Boolean checkCircle(
+  Standard_Boolean checkCircle(
     const Standard_Integer(&aNodes)[3],
     const Standard_Integer thePoint)
   {
@@ -200,7 +200,7 @@ private:
 
   //! Adds new triangle with the given nodes and updates
   //! links stack by ones are not in used map.
-  inline void addTriangleAndUpdateStack(
+  void addTriangleAndUpdateStack(
     const Standard_Integer         theNode0,
     const Standard_Integer         theNode1,
     const Standard_Integer         theNode2,
diff --git a/src/BRepMesh/BRepMesh_ModelBuilder.cxx b/src/BRepMesh/BRepMesh_ModelBuilder.cxx
index 1a15482cdf..79c25f8de9 100644
--- a/src/BRepMesh/BRepMesh_ModelBuilder.cxx
+++ b/src/BRepMesh/BRepMesh_ModelBuilder.cxx
@@ -22,6 +22,8 @@
 #include <Bnd_Box.hxx>
 #include <BRepBndLib.hxx>
 
+IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_ModelBuilder, IMeshTools_ModelBuilder)
+
 //=======================================================================
 // Function: Constructor
 // Purpose : 
diff --git a/src/BRepMesh/BRepMesh_ModelBuilder.hxx b/src/BRepMesh/BRepMesh_ModelBuilder.hxx
index 56898a1eeb..f88a680829 100644
--- a/src/BRepMesh/BRepMesh_ModelBuilder.hxx
+++ b/src/BRepMesh/BRepMesh_ModelBuilder.hxx
@@ -36,7 +36,7 @@ public:
   //! Destructor.
   Standard_EXPORT virtual ~BRepMesh_ModelBuilder ();
 
-  DEFINE_STANDARD_RTTI_INLINE(BRepMesh_ModelBuilder, IMeshTools_ModelBuilder)
+  DEFINE_STANDARD_RTTIEXT(BRepMesh_ModelBuilder, IMeshTools_ModelBuilder)
 
 protected:
 
diff --git a/src/BRepMesh/BRepMesh_ModelHealer.cxx b/src/BRepMesh/BRepMesh_ModelHealer.cxx
index 8e1421cdb5..8f466d76bb 100644
--- a/src/BRepMesh/BRepMesh_ModelHealer.cxx
+++ b/src/BRepMesh/BRepMesh_ModelHealer.cxx
@@ -33,6 +33,8 @@
 #include <TopoDS_Compound.hxx>
 #endif
 
+IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_ModelHealer, IMeshTools_ModelAlgo)
+
 namespace
 {
   //! Decreases deflection of the given edge and tries to update discretization.
@@ -73,7 +75,7 @@ namespace
   };
 
   //! Returns True if some of two vertcies is same with reference one.
-  inline Standard_Boolean isSameWithSomeOf(
+  Standard_Boolean isSameWithSomeOf(
     const TopoDS_Vertex& theRefVertex,
     const TopoDS_Vertex& theVertex1,
     const TopoDS_Vertex& theVertex2)
@@ -83,7 +85,7 @@ namespace
   }
 
   //! Returns True if some of two vertcies is within tolerance of reference one.
-  inline Standard_Boolean isInToleranceWithSomeOf(
+  Standard_Boolean isInToleranceWithSomeOf(
     const gp_Pnt& theRefPoint,
     const gp_Pnt& thePoint1,
     const gp_Pnt& thePoint2,
diff --git a/src/BRepMesh/BRepMesh_ModelHealer.hxx b/src/BRepMesh/BRepMesh_ModelHealer.hxx
index ec082c8e08..5e407c57a8 100644
--- a/src/BRepMesh/BRepMesh_ModelHealer.hxx
+++ b/src/BRepMesh/BRepMesh_ModelHealer.hxx
@@ -45,16 +45,16 @@ public:
   Standard_EXPORT virtual ~BRepMesh_ModelHealer();
 
   //! Functor API to discretize the given edge.
-  inline void operator() (const Standard_Integer theEdgeIndex) const {
+  void operator() (const Standard_Integer theEdgeIndex) const {
     process(theEdgeIndex);
   }
 
   //! Functor API to discretize the given edge.
-  inline void operator() (const IMeshData::IFaceHandle& theDFace) const {
+  void operator() (const IMeshData::IFaceHandle& theDFace) const {
     process(theDFace);
   }
 
-  DEFINE_STANDARD_RTTI_INLINE(BRepMesh_ModelHealer, IMeshTools_ModelAlgo)
+  DEFINE_STANDARD_RTTIEXT(BRepMesh_ModelHealer, IMeshTools_ModelAlgo)
 
 protected:
 
@@ -67,7 +67,7 @@ protected:
 private:
 
   //! Checks existing discretization of the face and updates data model.
-  inline void process(const Standard_Integer theFaceIndex) const
+  void process(const Standard_Integer theFaceIndex) const
   {
     const IMeshData::IFaceHandle& aDFace = myModel->GetFace(theFaceIndex);
     process(aDFace);
@@ -96,7 +96,7 @@ private:
   //! Chooses the most closest point to reference one from the given pair.
   //! Returns square distance between reference point and closest one as 
   //! well as pointer to closest point.
-  inline Standard_Real closestPoint(
+  Standard_Real closestPoint(
     gp_Pnt2d&  theRefPnt,
     gp_Pnt2d&  theFristPnt,
     gp_Pnt2d&  theSecondPnt,
@@ -118,7 +118,7 @@ private:
   //! Chooses the most closest points among the given to reference one from the given pair.
   //! Returns square distance between reference point and closest one as 
   //! well as pointer to closest point.
-  inline Standard_Real closestPoints(
+  Standard_Real closestPoints(
     gp_Pnt2d&  theFirstPnt1,
     gp_Pnt2d&  theSecondPnt1,
     gp_Pnt2d&  theFirstPnt2,
@@ -144,7 +144,7 @@ private:
   //! Adjusts the given pair of points supposed to be the same.
   //! In addition, adjusts another end-point of an edge in order
   //! to perform correct matching in case of gap.
-  inline void adjustSamePoints(
+  void adjustSamePoints(
     gp_Pnt2d*& theMajorSamePnt1,
     gp_Pnt2d*& theMinorSamePnt1,
     gp_Pnt2d*& theMajorSamePnt2,
@@ -168,7 +168,7 @@ private:
   void fixFaceBoundaries(const IMeshData::IFaceHandle& theDFace) const;
 
   //! Returns True if check can be done in parallel.
-  inline Standard_Boolean isParallel() const
+  Standard_Boolean isParallel() const
   {
     return (myParameters.InParallel && myModel->FacesNb() > 1);
   }
diff --git a/src/BRepMesh/BRepMesh_ModelPostProcessor.cxx b/src/BRepMesh/BRepMesh_ModelPostProcessor.cxx
index 6e7453fe76..4a2a8b080b 100644
--- a/src/BRepMesh/BRepMesh_ModelPostProcessor.cxx
+++ b/src/BRepMesh/BRepMesh_ModelPostProcessor.cxx
@@ -20,6 +20,8 @@
 #include <IMeshData_PCurve.hxx>
 #include <OSD_Parallel.hxx>
 
+IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_ModelPostProcessor, IMeshTools_ModelAlgo)
+
 namespace
 {
   //! Commits 3D polygons and polygons on triangulations for corresponding edges.
diff --git a/src/BRepMesh/BRepMesh_ModelPostProcessor.hxx b/src/BRepMesh/BRepMesh_ModelPostProcessor.hxx
index f9fc631243..f780f05adb 100644
--- a/src/BRepMesh/BRepMesh_ModelPostProcessor.hxx
+++ b/src/BRepMesh/BRepMesh_ModelPostProcessor.hxx
@@ -32,7 +32,7 @@ public:
   //! Destructor.
   Standard_EXPORT virtual ~BRepMesh_ModelPostProcessor();
 
-  DEFINE_STANDARD_RTTI_INLINE(BRepMesh_ModelPostProcessor, IMeshTools_ModelAlgo)
+  DEFINE_STANDARD_RTTIEXT(BRepMesh_ModelPostProcessor, IMeshTools_ModelAlgo)
 
 protected:
 
diff --git a/src/BRepMesh/BRepMesh_ModelPreProcessor.cxx b/src/BRepMesh/BRepMesh_ModelPreProcessor.cxx
index d51dd5f13c..baa9c15b50 100644
--- a/src/BRepMesh/BRepMesh_ModelPreProcessor.cxx
+++ b/src/BRepMesh/BRepMesh_ModelPreProcessor.cxx
@@ -24,6 +24,8 @@
 #include <OSD_Parallel.hxx>
 #include <BRepMesh_ConeRangeSplitter.hxx>
 
+IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_ModelPreProcessor, IMeshTools_ModelAlgo)
+
 namespace
 {
   //! Checks consistency of triangulation stored in topological face.
diff --git a/src/BRepMesh/BRepMesh_ModelPreProcessor.hxx b/src/BRepMesh/BRepMesh_ModelPreProcessor.hxx
index eb9943b55a..8f0903f1cb 100644
--- a/src/BRepMesh/BRepMesh_ModelPreProcessor.hxx
+++ b/src/BRepMesh/BRepMesh_ModelPreProcessor.hxx
@@ -33,7 +33,7 @@ public:
   //! Destructor.
   Standard_EXPORT virtual ~BRepMesh_ModelPreProcessor();
 
-  DEFINE_STANDARD_RTTI_INLINE(BRepMesh_ModelPreProcessor, IMeshTools_ModelAlgo)
+  DEFINE_STANDARD_RTTIEXT(BRepMesh_ModelPreProcessor, IMeshTools_ModelAlgo)
 
 protected:
 
diff --git a/src/BRepMesh/BRepMesh_NURBSRangeSplitter.cxx b/src/BRepMesh/BRepMesh_NURBSRangeSplitter.cxx
index dd1529ced1..e64f1980ba 100644
--- a/src/BRepMesh/BRepMesh_NURBSRangeSplitter.cxx
+++ b/src/BRepMesh/BRepMesh_NURBSRangeSplitter.cxx
@@ -217,7 +217,7 @@ namespace
   };
 
   //! Adds param to map if it fits specified range.
-  inline Standard_Boolean addParam(
+  Standard_Boolean addParam(
     const Standard_Real&                           theParam,
     const std::pair<Standard_Real, Standard_Real>& theRange,
     IMeshData::IMapOfReal&                         theParams)
@@ -233,7 +233,7 @@ namespace
   }
 
   //! Initializes parameters map using CN intervals.
-  inline Standard_Boolean initParamsFromIntervals(
+  Standard_Boolean initParamsFromIntervals(
     const TColStd_Array1OfReal&                    theIntervals,
     const std::pair<Standard_Real, Standard_Real>& theRange,
     const Standard_Boolean                         isSplitIntervals,
diff --git a/src/BRepMesh/BRepMesh_OrientedEdge.hxx b/src/BRepMesh/BRepMesh_OrientedEdge.hxx
index 976c1ba4a2..60007abfb8 100644
--- a/src/BRepMesh/BRepMesh_OrientedEdge.hxx
+++ b/src/BRepMesh/BRepMesh_OrientedEdge.hxx
@@ -43,13 +43,13 @@ public:
   }
 
   //! Returns index of first node of the Link.
-  inline Standard_Integer FirstNode() const
+  Standard_Integer FirstNode() const
   {
     return myFirstNode;
   }
 
   //! Returns index of last node of the Link.
-  inline Standard_Integer LastNode() const
+  Standard_Integer LastNode() const
   {
     return myLastNode;
   }
@@ -57,7 +57,7 @@ public:
   //! Computes a hash code for this oriented edge, in the range [1, theUpperBound]
   //! @param theUpperBound the upper bound of the range a computing hash code must be within
   //! @return a computed hash code, in the range [1, theUpperBound]
-  inline Standard_Integer HashCode (const Standard_Integer theUpperBound) const
+  Standard_Integer HashCode (const Standard_Integer theUpperBound) const
   {
     return ::HashCode (myFirstNode + myLastNode, theUpperBound);
   }
@@ -65,13 +65,13 @@ public:
   //! Checks this and other edge for equality.
   //! @param theOther edge to be checked against this one.
   //! @retrun TRUE if edges have the same orientation, FALSE if not.
-  inline Standard_Boolean IsEqual(const BRepMesh_OrientedEdge& theOther) const
+  Standard_Boolean IsEqual(const BRepMesh_OrientedEdge& theOther) const
   {
     return (myFirstNode == theOther.myFirstNode && myLastNode == theOther.myLastNode);
   }
 
   //! Alias for IsEqual.
-  inline Standard_Boolean operator ==(const BRepMesh_OrientedEdge& Other) const
+  Standard_Boolean operator ==(const BRepMesh_OrientedEdge& Other) const
   {
     return IsEqual(Other);
   }
diff --git a/src/BRepMesh/BRepMesh_PairOfIndex.hxx b/src/BRepMesh/BRepMesh_PairOfIndex.hxx
index 81808bcf5f..846b3d4cce 100644
--- a/src/BRepMesh/BRepMesh_PairOfIndex.hxx
+++ b/src/BRepMesh/BRepMesh_PairOfIndex.hxx
@@ -38,7 +38,7 @@ public:
   }
 
   //! Appends index to the pair.
-  inline void Append(const Standard_Integer theIndex)
+  void Append(const Standard_Integer theIndex)
   {
     if (myIndex[0] < 0)
       myIndex[0] = theIndex;
@@ -52,7 +52,7 @@ public:
   }
 
   //! Prepends index to the pair.
-  inline void Prepend(const Standard_Integer theIndex)
+  void Prepend(const Standard_Integer theIndex)
   {
     if (myIndex[1] >= 0)
       throw Standard_OutOfRange("BRepMesh_PairOfIndex::Prepend, more than two index to store");
@@ -62,7 +62,7 @@ public:
   }
 
   //! Returns is pair is empty.
-  inline Standard_Boolean IsEmpty() const
+  Standard_Boolean IsEmpty() const
   {
     // Check only first index. It is impossible to update
     // second index if the first one is empty.
@@ -70,26 +70,26 @@ public:
   }
 
   //! Returns number of initialized indeces.
-  inline Standard_Integer Extent() const
+  Standard_Integer Extent() const
   {
     return (myIndex[0] < 0 ? 0 : (myIndex[1] < 0 ? 1 : 2));
   }
 
   //! Returns first index of pair.
-  inline Standard_Integer FirstIndex() const
+  Standard_Integer FirstIndex() const
   {
     return myIndex[0];
   }
 
   //! Returns last index of pair
-  inline Standard_Integer LastIndex() const
+  Standard_Integer LastIndex() const
   {
     return (myIndex[1] < 0 ? myIndex[0] : myIndex[1]);
   }
 
   //! Returns index corresponding to the given position in the pair.
   //! @param thePairPos position of index in the pair (1 or 2).
-  inline Standard_Integer Index(const Standard_Integer thePairPos) const
+  Standard_Integer Index(const Standard_Integer thePairPos) const
   {
     if (thePairPos != 1 && thePairPos != 2)
       throw Standard_OutOfRange("BRepMesh_PairOfIndex::Index, requested index is out of range");
@@ -100,8 +100,8 @@ public:
   //! Sets index corresponding to the given position in the pair.
   //! @param thePairPos position of index in the pair (1 or 2).
   //! @param theIndex index to be stored.
-  inline void SetIndex(const Standard_Integer thePairPos,
-                       const Standard_Integer theIndex)
+  void SetIndex(const Standard_Integer thePairPos,
+                const Standard_Integer theIndex)
   {
     if (thePairPos != 1 && thePairPos != 2)
       throw Standard_OutOfRange("BRepMesh_PairOfIndex::SetIndex, requested index is out of range");
@@ -111,7 +111,7 @@ public:
 
   //! Remove index from the given position.
   //! @param thePairPos position of index in the pair (1 or 2).
-  inline void RemoveIndex(const Standard_Integer thePairPos)
+  void RemoveIndex(const Standard_Integer thePairPos)
   {
     if (thePairPos != 1 && thePairPos != 2)
       throw Standard_OutOfRange("BRepMesh_PairOfIndex::RemoveIndex, requested index is out of range");
diff --git a/src/BRepMesh/BRepMesh_SelectorOfDataStructureOfDelaun.cxx b/src/BRepMesh/BRepMesh_SelectorOfDataStructureOfDelaun.cxx
index dd323f29eb..0eefc90bc6 100644
--- a/src/BRepMesh/BRepMesh_SelectorOfDataStructureOfDelaun.cxx
+++ b/src/BRepMesh/BRepMesh_SelectorOfDataStructureOfDelaun.cxx
@@ -18,6 +18,8 @@
 #include <BRepMesh_PairOfIndex.hxx>
 #include <BRepMesh_Edge.hxx>
 
+IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_SelectorOfDataStructureOfDelaun, Standard_Transient)
+
 //=======================================================================
 //function : Default constructor
 //purpose  : 
diff --git a/src/BRepMesh/BRepMesh_SelectorOfDataStructureOfDelaun.hxx b/src/BRepMesh/BRepMesh_SelectorOfDataStructureOfDelaun.hxx
index 2d1cc4684c..caef4f0cc0 100644
--- a/src/BRepMesh/BRepMesh_SelectorOfDataStructureOfDelaun.hxx
+++ b/src/BRepMesh/BRepMesh_SelectorOfDataStructureOfDelaun.hxx
@@ -60,40 +60,40 @@ public:
   Standard_EXPORT void NeighboursByEdgeOf(const BRepMesh_Triangle& theElement);
   
   //! Adds a level of neighbours by edge to the selector.
-  inline void NeighboursOf(const BRepMesh_SelectorOfDataStructureOfDelaun& /*theSelector*/)
+  void NeighboursOf(const BRepMesh_SelectorOfDataStructureOfDelaun& /*theSelector*/)
   {
   }
   
   //! Adds a level of neighbours by edge the selector.
-  inline void AddNeighbours()
+  void AddNeighbours()
   {
   }
   
   //! Returns selected nodes.
-  inline const IMeshData::MapOfInteger& Nodes() const
+  const IMeshData::MapOfInteger& Nodes() const
   {
     return myNodes;
   }
   
   //! Returns selected links.
-  inline const IMeshData::MapOfInteger& Links() const
+  const IMeshData::MapOfInteger& Links() const
   {
     return myLinks;
   }
   
   //! Returns selected elements.
-  inline const IMeshData::MapOfInteger& Elements() const
+  const IMeshData::MapOfInteger& Elements() const
   {
     return myElements;
   }
   
   //! Gives the list of incices of frontier links.
-  inline const IMeshData::MapOfInteger& FrontierLinks() const
+  const IMeshData::MapOfInteger& FrontierLinks() const
   {
     return myFrontier;
   }
 
-  DEFINE_STANDARD_RTTI_INLINE(BRepMesh_SelectorOfDataStructureOfDelaun, Standard_Transient)
+  DEFINE_STANDARD_RTTIEXT(BRepMesh_SelectorOfDataStructureOfDelaun, Standard_Transient)
 
 private:
 
diff --git a/src/BRepMesh/BRepMesh_ShapeTool.cxx b/src/BRepMesh/BRepMesh_ShapeTool.cxx
index 98572df738..8189c32684 100644
--- a/src/BRepMesh/BRepMesh_ShapeTool.cxx
+++ b/src/BRepMesh/BRepMesh_ShapeTool.cxx
@@ -26,6 +26,8 @@
 #include <Precision.hxx>
 #include <Bnd_Box.hxx>
 
+IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_ShapeTool, Standard_Transient)
+
 namespace
 {
   //! Auxilary struct to take a tolerance of edge.
diff --git a/src/BRepMesh/BRepMesh_ShapeTool.hxx b/src/BRepMesh/BRepMesh_ShapeTool.hxx
index d257d612d0..f47ebfba25 100644
--- a/src/BRepMesh/BRepMesh_ShapeTool.hxx
+++ b/src/BRepMesh/BRepMesh_ShapeTool.hxx
@@ -150,7 +150,7 @@ public:
     Standard_Real&          theLastParam,
     const Standard_Boolean  isConsiderOrientation = Standard_False);
 
-  DEFINE_STANDARD_RTTI_INLINE(BRepMesh_ShapeTool, Standard_Transient)
+  DEFINE_STANDARD_RTTIEXT(BRepMesh_ShapeTool, Standard_Transient)
 };
 
 #endif
\ No newline at end of file
diff --git a/src/BRepMesh/BRepMesh_ShapeVisitor.cxx b/src/BRepMesh/BRepMesh_ShapeVisitor.cxx
index 0705c13cf0..0c4727ab07 100644
--- a/src/BRepMesh/BRepMesh_ShapeVisitor.cxx
+++ b/src/BRepMesh/BRepMesh_ShapeVisitor.cxx
@@ -33,6 +33,8 @@
 #include <IMeshTools_Context.hxx>
 #include <BRepTools.hxx>
 
+IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_ShapeVisitor, IMeshTools_ShapeVisitor)
+
 //=======================================================================
 // Function: Constructor
 // Purpose : 
diff --git a/src/BRepMesh/BRepMesh_ShapeVisitor.hxx b/src/BRepMesh/BRepMesh_ShapeVisitor.hxx
index 171f49c61b..9a1e0c0ece 100644
--- a/src/BRepMesh/BRepMesh_ShapeVisitor.hxx
+++ b/src/BRepMesh/BRepMesh_ShapeVisitor.hxx
@@ -49,7 +49,7 @@ public:
   //! Handles TopoDS_Edge object.
   Standard_EXPORT virtual void Visit (const TopoDS_Edge& theEdge) Standard_OVERRIDE;
 
-  DEFINE_STANDARD_RTTI_INLINE(BRepMesh_ShapeVisitor, IMeshTools_ShapeVisitor)
+  DEFINE_STANDARD_RTTIEXT(BRepMesh_ShapeVisitor, IMeshTools_ShapeVisitor)
 
 private:
 
diff --git a/src/BRepMesh/BRepMesh_SphereRangeSplitter.hxx b/src/BRepMesh/BRepMesh_SphereRangeSplitter.hxx
index c237df213e..c1dc41f059 100644
--- a/src/BRepMesh/BRepMesh_SphereRangeSplitter.hxx
+++ b/src/BRepMesh/BRepMesh_SphereRangeSplitter.hxx
@@ -42,7 +42,7 @@ public:
 private:
 
   //! Computes step for the given range.
-  inline void computeStep(
+  void computeStep(
     const std::pair<Standard_Real, Standard_Real>& theRange,
     const Standard_Real                            theDefaultStep,
     std::pair<Standard_Real, Standard_Real>&       theStepAndOffset) const
diff --git a/src/BRepMesh/BRepMesh_Triangle.hxx b/src/BRepMesh/BRepMesh_Triangle.hxx
index 6cb531a56b..72ee6eb666 100644
--- a/src/BRepMesh/BRepMesh_Triangle.hxx
+++ b/src/BRepMesh/BRepMesh_Triangle.hxx
@@ -60,7 +60,7 @@ public:
   //! @param theEdges array of edges of triangle.
   //! @param theOrientations array of edge's orientations.
   //! @param theMovability movability of triangle.
-  inline void Initialize(
+  void Initialize(
     const Standard_Integer          (&theEdges)[3],
     const Standard_Boolean          (&theOrientations)[3],
     const BRepMesh_DegreeOfFreedom  theMovability)
@@ -73,21 +73,21 @@ public:
   //! Gets edges with orientations composing the triangle.
   //! @param[out] theEdges array edges are stored to.
   //! @param[out] theOrientations array orientations are stored to.
-  inline void Edges(Standard_Integer (&theEdges)[3],
-                    Standard_Boolean (&theOrientations)[3]) const
+  void Edges(Standard_Integer (&theEdges)[3],
+             Standard_Boolean (&theOrientations)[3]) const
   {
     memcpy(theEdges, myEdges, sizeof(myEdges));
     memcpy(theOrientations, myOrientations, sizeof(myOrientations));
   }
   
   //! Returns movability of the triangle.
-  inline BRepMesh_DegreeOfFreedom Movability() const 
+  BRepMesh_DegreeOfFreedom Movability() const 
   {
     return myMovability;
   }
   
   //! Sets movability of the triangle.
-  inline void SetMovability(const BRepMesh_DegreeOfFreedom theMovability)
+  void SetMovability(const BRepMesh_DegreeOfFreedom theMovability)
   {
     myMovability = theMovability;
   }
@@ -95,7 +95,7 @@ public:
   //! Computes a hash code for this triangle, in the range [1, theUpperBound]
   //! @param theUpperBound the upper bound of the range a computing hash code must be within
   //! @return a computed hash code, in the range [1, theUpperBound]
-  inline Standard_Integer HashCode (const Standard_Integer theUpperBound) const
+  Standard_Integer HashCode (const Standard_Integer theUpperBound) const
   {
     return ::HashCode (myEdges[0] + myEdges[1] + myEdges[2], theUpperBound);
   }
@@ -103,7 +103,7 @@ public:
   //! Checks for equality with another triangle.
   //! @param theOther triangle to be checked against this one.
   //! @return TRUE if equal, FALSE if not.
-  inline Standard_Boolean IsEqual(const BRepMesh_Triangle& theOther) const
+  Standard_Boolean IsEqual(const BRepMesh_Triangle& theOther) const
   {
     if (myMovability == BRepMesh_Deleted || theOther.myMovability == BRepMesh_Deleted)
       return Standard_False;
@@ -133,7 +133,7 @@ public:
   }
   
   //! Alias for IsEqual.
-  inline Standard_Boolean operator ==(const BRepMesh_Triangle& theOther) const
+  Standard_Boolean operator ==(const BRepMesh_Triangle& theOther) const
   {
     return IsEqual(theOther);
   }
diff --git a/src/BRepMesh/BRepMesh_UVParamRangeSplitter.hxx b/src/BRepMesh/BRepMesh_UVParamRangeSplitter.hxx
index f6d2b6223b..9538802a61 100644
--- a/src/BRepMesh/BRepMesh_UVParamRangeSplitter.hxx
+++ b/src/BRepMesh/BRepMesh_UVParamRangeSplitter.hxx
@@ -49,25 +49,25 @@ public:
 
 public:
   //! Returns U parameters.
-  inline const IMeshData::IMapOfReal& GetParametersU() const
+  const IMeshData::IMapOfReal& GetParametersU() const
   {
     return myUParams;
   }
 
   //! Returns U parameters.
-  inline IMeshData::IMapOfReal& GetParametersU()
+  IMeshData::IMapOfReal& GetParametersU()
   {
     return myUParams;
   }
 
   //! Returns V parameters.
-  inline const IMeshData::IMapOfReal& GetParametersV() const
+  const IMeshData::IMapOfReal& GetParametersV() const
   {
     return myVParams;
   }
 
   //! Returns V parameters.
-  inline IMeshData::IMapOfReal& GetParametersV()
+  IMeshData::IMapOfReal& GetParametersV()
   {
     return myVParams;
   }
diff --git a/src/BRepMesh/BRepMesh_Vertex.hxx b/src/BRepMesh/BRepMesh_Vertex.hxx
index 73a31798ea..5c6e7cf102 100644
--- a/src/BRepMesh/BRepMesh_Vertex.hxx
+++ b/src/BRepMesh/BRepMesh_Vertex.hxx
@@ -65,9 +65,9 @@ public:
   //! @param theUV position of vertex in parametric space.
   //! @param theLocation3d index of 3d point to be associated with vertex.
   //! @param theMovability movability of the vertex.
-  inline void Initialize(const gp_XY&                   theUV,
-                         const Standard_Integer         theLocation3d,
-                         const BRepMesh_DegreeOfFreedom theMovability)
+  void Initialize(const gp_XY&                   theUV,
+                  const Standard_Integer         theLocation3d,
+                  const BRepMesh_DegreeOfFreedom theMovability)
   {
     myUV         = theUV;
     myLocation3d = theLocation3d;
@@ -75,31 +75,31 @@ public:
   }
   
   //! Returns position of the vertex in parametric space.
-  inline const gp_XY& Coord() const
+  const gp_XY& Coord() const
   {
     return myUV;
   }
 
   //! Returns position of the vertex in parametric space for modification.
-  inline gp_XY& ChangeCoord()
+  gp_XY& ChangeCoord()
   {
     return myUV;
   }
   
   //! Returns index of 3d point associated with the vertex.
-  inline Standard_Integer Location3d() const
+  Standard_Integer Location3d() const
   {
     return myLocation3d;
   }
   
   //! Returns movability of the vertex.
-  inline BRepMesh_DegreeOfFreedom Movability() const
+  BRepMesh_DegreeOfFreedom Movability() const
   {
     return myMovability;
   }
   
   //! Sets movability of the vertex.
-  inline void SetMovability(const BRepMesh_DegreeOfFreedom theMovability)
+  void SetMovability(const BRepMesh_DegreeOfFreedom theMovability)
   {
     myMovability = theMovability;
   }
@@ -107,7 +107,7 @@ public:
   //! Computes a hash code for this vertex, in the range [1, theUpperBound]
   //! @param theUpperBound the upper bound of the range a computing hash code must be within
   //! @return a computed hash code, in the range [1, theUpperBound]
-  inline Standard_Integer HashCode(const Standard_Integer theUpperBound) const
+  Standard_Integer HashCode(const Standard_Integer theUpperBound) const
   {
     return ::HashCode(Floor(1e5 * myUV.X()) * Floor(1e5 * myUV.Y()), theUpperBound);
   }
@@ -115,7 +115,7 @@ public:
   //! Checks for equality with another vertex.
   //! @param theOther vertex to be checked against this one.
   //! @return TRUE if equal, FALSE if not.
-  inline Standard_Boolean IsEqual(const BRepMesh_Vertex& theOther) const
+  Standard_Boolean IsEqual(const BRepMesh_Vertex& theOther) const
   {
     if (myMovability          == BRepMesh_Deleted || 
         theOther.myMovability == BRepMesh_Deleted)
@@ -127,7 +127,7 @@ public:
   }
 
   //! Alias for IsEqual.
-  inline Standard_Boolean operator ==(const BRepMesh_Vertex& Other) const
+  Standard_Boolean operator ==(const BRepMesh_Vertex& Other) const
   {
     return IsEqual(Other);
   }
diff --git a/src/BRepMesh/BRepMesh_VertexInspector.hxx b/src/BRepMesh/BRepMesh_VertexInspector.hxx
index dfd51ae926..e8efa57dbf 100644
--- a/src/BRepMesh/BRepMesh_VertexInspector.hxx
+++ b/src/BRepMesh/BRepMesh_VertexInspector.hxx
@@ -60,7 +60,7 @@ public:
 
   //! Sets the tolerance to be used for identification of 
   //! coincident vertices equal for both dimensions.
-  inline void SetTolerance(const Standard_Real theTolerance)
+  void SetTolerance(const Standard_Real theTolerance)
   {
     myTolerance[0] = theTolerance * theTolerance;
     myTolerance[1] = 0.;
@@ -70,15 +70,15 @@ public:
   //! coincident vertices.
   //! @param theToleranceX tolerance for X dimension.
   //! @param theToleranceY tolerance for Y dimension.
-  inline void SetTolerance(const Standard_Real theToleranceX,
-                           const Standard_Real theToleranceY)
+  void SetTolerance(const Standard_Real theToleranceX,
+                    const Standard_Real theToleranceY)
   {
     myTolerance[0] = theToleranceX * theToleranceX;
     myTolerance[1] = theToleranceY * theToleranceY;
   }
   
   //! Clear inspector's internal data structures.
-  inline void Clear()
+  void Clear()
   {
     myVertices->Clear();
     myDelNodes.Clear();
@@ -86,26 +86,26 @@ public:
 
   //! Deletes vertex with the given index.
   //! @param theIndex index of vertex to be removed.
-  inline void Delete(const Standard_Integer theIndex)
+  void Delete(const Standard_Integer theIndex)
   {
     myVertices->ChangeValue(theIndex - 1).SetMovability(BRepMesh_Deleted);
     myDelNodes.Append(theIndex);
   }
   
   //! Returns number of registered vertices.
-  inline Standard_Integer NbVertices() const
+  Standard_Integer NbVertices() const
   {
     return myVertices->Length(); 
   }
 
   //! Returns vertex with the given index.
-  inline BRepMesh_Vertex& GetVertex(Standard_Integer theIndex)
+  BRepMesh_Vertex& GetVertex(Standard_Integer theIndex)
   {
     return myVertices->ChangeValue(theIndex - 1);
   }
   
   //! Set reference point to be checked.
-  inline void SetPoint(const gp_XY& thePoint) 
+  void SetPoint(const gp_XY& thePoint) 
   { 
     myIndex     = 0;
     myMinSqDist = RealLast();
@@ -113,26 +113,26 @@ public:
   }
 
   //! Returns index of point coinciding with regerence one.
-  inline Standard_Integer GetCoincidentPoint() const
+  Standard_Integer GetCoincidentPoint() const
   {
     return myIndex;
   }
   
   //! Returns list with indexes of vertices that have movability attribute 
   //! equal to BRepMesh_Deleted and can be replaced with another node.
-  inline const IMeshData::ListOfInteger& GetListOfDelPoints() const
+  const IMeshData::ListOfInteger& GetListOfDelPoints() const
   {
     return myDelNodes;
   }
 
   //! Returns set of mesh vertices.
-  inline const Handle(IMeshData::VectorOfVertex)& Vertices() const
+  const Handle(IMeshData::VectorOfVertex)& Vertices() const
   {
     return myVertices;
   }
 
   //! Returns set of mesh vertices for modification.
-  inline Handle(IMeshData::VectorOfVertex)& ChangeVertices()
+  Handle(IMeshData::VectorOfVertex)& ChangeVertices()
   {
     return myVertices;
   }
diff --git a/src/BRepMesh/BRepMesh_VertexTool.cxx b/src/BRepMesh/BRepMesh_VertexTool.cxx
index fffa7ac4da..3393f92497 100644
--- a/src/BRepMesh/BRepMesh_VertexTool.cxx
+++ b/src/BRepMesh/BRepMesh_VertexTool.cxx
@@ -16,6 +16,8 @@
 #include <BRepMesh_VertexTool.hxx>
 #include <Precision.hxx>
 
+IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_VertexTool, Standard_Transient)
+
 //=======================================================================
 //function : Inspect
 //purpose  : 
diff --git a/src/BRepMesh/BRepMesh_VertexTool.hxx b/src/BRepMesh/BRepMesh_VertexTool.hxx
index 35aa778a8a..094021e8e0 100644
--- a/src/BRepMesh/BRepMesh_VertexTool.hxx
+++ b/src/BRepMesh/BRepMesh_VertexTool.hxx
@@ -99,19 +99,19 @@ public:
   Standard_EXPORT void DeleteVertex(const Standard_Integer theIndex);
 
   //! Returns set of mesh vertices.
-  inline const Handle(IMeshData::VectorOfVertex)& Vertices() const
+  const Handle(IMeshData::VectorOfVertex)& Vertices() const
   {
     return mySelector.Vertices();
   }
 
   //! Returns set of mesh vertices.
-  inline Handle(IMeshData::VectorOfVertex)& ChangeVertices()
+  Handle(IMeshData::VectorOfVertex)& ChangeVertices()
   {
     return mySelector.ChangeVertices();
   }
 
   //! Returns vertex by the given index.
-  inline const BRepMesh_Vertex& FindKey(const Standard_Integer theIndex)
+  const BRepMesh_Vertex& FindKey(const Standard_Integer theIndex)
   {
     return mySelector.GetVertex(theIndex);
   }
@@ -125,13 +125,13 @@ public:
   }
 
   //! Returns a number of vertices.
-  inline Standard_Integer Extent() const
+  Standard_Integer Extent() const
   {
     return mySelector.NbVertices();
   }
 
   //! Returns True when the map contains no keys. <br>
-  inline Standard_Boolean IsEmpty() const
+  Standard_Boolean IsEmpty() const
   {
     return (Extent() == 0);
   }
@@ -143,14 +143,14 @@ public:
                                   const BRepMesh_Vertex& theVertex);
 
   //! Remove last node from the structure.
-  inline void RemoveLast()
+  void RemoveLast()
   {
     DeleteVertex(Extent());
   }
 
   //! Returns the list with indexes of vertices that have movability attribute
   //! equal to BRepMesh_Deleted and can be replaced with another node.
-  inline const IMeshData::ListOfInteger& GetListOfDelNodes() const
+  const IMeshData::ListOfInteger& GetListOfDelNodes() const
   {
     return mySelector.GetListOfDelPoints();
   }
@@ -158,7 +158,7 @@ public:
   //! Prints statistics.
   Standard_EXPORT void Statistics(Standard_OStream& theStream) const;
 
-  DEFINE_STANDARD_RTTI_INLINE(BRepMesh_VertexTool, Standard_Transient)
+  DEFINE_STANDARD_RTTIEXT(BRepMesh_VertexTool, Standard_Transient)
 
 private:
   
@@ -166,9 +166,9 @@ private:
   //! @param thePoint point to be expanded.
   //! @param[out] theMinPoint bottom left corner of area defined by expanded point.
   //! @param[out] theMaxPoint top right corner of area defined by expanded point.
-  inline void expandPoint(const gp_XY& thePoint,
-                          gp_XY&       theMinPoint,
-                          gp_XY&       theMaxPoint)
+  void expandPoint(const gp_XY& thePoint,
+                   gp_XY&       theMinPoint,
+                   gp_XY&       theMaxPoint)
   {
     theMinPoint.SetX(thePoint.X() - myTolerance[0]);
     theMinPoint.SetY(thePoint.Y() - myTolerance[1]);
diff --git a/src/BRepMesh/FILES b/src/BRepMesh/FILES
index 44333fcb2f..90df7c410b 100755
--- a/src/BRepMesh/FILES
+++ b/src/BRepMesh/FILES
@@ -1,6 +1,7 @@
 BRepMesh_BaseMeshAlgo.cxx
 BRepMesh_BaseMeshAlgo.hxx
 BRepMesh_ConstrainedBaseMeshAlgo.hxx
+BRepMesh_ConstrainedBaseMeshAlgo.cxx
 BRepMesh_BoundaryParamsRangeSplitter.hxx
 BRepMesh_Circle.hxx
 BRepMesh_CircleInspector.hxx
@@ -85,6 +86,7 @@ BRepMesh_VertexInspector.hxx
 BRepMesh_VertexTool.cxx
 BRepMesh_VertexTool.hxx
 BRepMesh_CustomBaseMeshAlgo.hxx
+BRepMesh_CustomBaseMeshAlgo.cxx
 BRepMesh_CustomDelaunayBaseMeshAlgo.hxx
 delabella.pxx
 delabella.cpp
diff --git a/src/BRepMeshData/BRepMeshData_Curve.cxx b/src/BRepMeshData/BRepMeshData_Curve.cxx
index ac427f9946..7b954cd0ae 100644
--- a/src/BRepMeshData/BRepMeshData_Curve.cxx
+++ b/src/BRepMeshData/BRepMeshData_Curve.cxx
@@ -18,6 +18,8 @@
 #include <BRepMesh_OrientedEdge.hxx>
 #include <BRepMesh_Vertex.hxx>
 
+IMPLEMENT_STANDARD_RTTIEXT(BRepMeshData_Curve, IMeshData_Curve)
+
 //=======================================================================
 // Function: Constructor
 // Purpose : 
diff --git a/src/BRepMeshData/BRepMeshData_Curve.hxx b/src/BRepMeshData/BRepMeshData_Curve.hxx
index 1566a4d916..41faf8b8fc 100644
--- a/src/BRepMeshData/BRepMeshData_Curve.hxx
+++ b/src/BRepMeshData/BRepMeshData_Curve.hxx
@@ -60,7 +60,7 @@ public:
   //! Clears parameters list.
   Standard_EXPORT virtual void Clear(const Standard_Boolean isKeepEndPoints) Standard_OVERRIDE;
 
-  DEFINE_STANDARD_RTTI_INLINE(BRepMeshData_Curve, IMeshData_Curve)
+  DEFINE_STANDARD_RTTIEXT(BRepMeshData_Curve, IMeshData_Curve)
 
 protected:
 
diff --git a/src/BRepMeshData/BRepMeshData_Edge.cxx b/src/BRepMeshData/BRepMeshData_Edge.cxx
index 67ce8228ff..1af0dc15c0 100644
--- a/src/BRepMeshData/BRepMeshData_Edge.cxx
+++ b/src/BRepMeshData/BRepMeshData_Edge.cxx
@@ -19,6 +19,8 @@
 #include <BRepMesh_OrientedEdge.hxx>
 #include <BRepMesh_Vertex.hxx>
 
+IMPLEMENT_STANDARD_RTTIEXT(BRepMeshData_Edge, IMeshData_Edge)
+
 //=======================================================================
 // Function: Constructor
 // Purpose : 
diff --git a/src/BRepMeshData/BRepMeshData_Edge.hxx b/src/BRepMeshData/BRepMeshData_Edge.hxx
index d30e550da7..74a5a57f19 100644
--- a/src/BRepMeshData/BRepMeshData_Edge.hxx
+++ b/src/BRepMeshData/BRepMeshData_Edge.hxx
@@ -53,7 +53,7 @@ public:
   Standard_EXPORT virtual const IMeshData::IPCurveHandle& GetPCurve (
     const Standard_Integer theIndex) const Standard_OVERRIDE;
 
-  DEFINE_STANDARD_RTTI_INLINE(BRepMeshData_Edge, IMeshData_Edge)
+  DEFINE_STANDARD_RTTIEXT(BRepMeshData_Edge, IMeshData_Edge)
 
 private:
 
diff --git a/src/BRepMeshData/BRepMeshData_Face.cxx b/src/BRepMeshData/BRepMeshData_Face.cxx
index 2dca22c8a4..833e108c27 100644
--- a/src/BRepMeshData/BRepMeshData_Face.cxx
+++ b/src/BRepMeshData/BRepMeshData_Face.cxx
@@ -18,6 +18,8 @@
 #include <BRepMesh_OrientedEdge.hxx>
 #include <BRepMesh_Vertex.hxx>
 
+IMPLEMENT_STANDARD_RTTIEXT(BRepMeshData_Face, IMeshData_Face)
+
 //=======================================================================
 // Function: Constructor
 // Purpose : 
diff --git a/src/BRepMeshData/BRepMeshData_Face.hxx b/src/BRepMeshData/BRepMeshData_Face.hxx
index 1f187f7cea..bc3ef4a7e1 100644
--- a/src/BRepMeshData/BRepMeshData_Face.hxx
+++ b/src/BRepMeshData/BRepMeshData_Face.hxx
@@ -47,7 +47,7 @@ public:
     const TopoDS_Wire&     theWire,
     const Standard_Integer theEdgeNb = 0) Standard_OVERRIDE;
 
-  DEFINE_STANDARD_RTTI_INLINE(BRepMeshData_Face, IMeshData_Face)
+  DEFINE_STANDARD_RTTIEXT(BRepMeshData_Face, IMeshData_Face)
 
 private:
 
diff --git a/src/BRepMeshData/BRepMeshData_Model.cxx b/src/BRepMeshData/BRepMeshData_Model.cxx
index 08c07f8c96..e62bb3cf0b 100644
--- a/src/BRepMeshData/BRepMeshData_Model.cxx
+++ b/src/BRepMeshData/BRepMeshData_Model.cxx
@@ -21,6 +21,8 @@
 #include <BRepMesh_Vertex.hxx>
 #include <NCollection_IncAllocator.hxx>
 
+IMPLEMENT_STANDARD_RTTIEXT(BRepMeshData_Model, IMeshData_Model)
+
 //=======================================================================
 // Function: Constructor
 // Purpose : 
diff --git a/src/BRepMeshData/BRepMeshData_Model.hxx b/src/BRepMeshData/BRepMeshData_Model.hxx
index 2b19684a73..b76315aeac 100644
--- a/src/BRepMeshData/BRepMeshData_Model.hxx
+++ b/src/BRepMeshData/BRepMeshData_Model.hxx
@@ -35,18 +35,18 @@ public:
   Standard_EXPORT virtual ~BRepMeshData_Model ();
 
   //! Returns maximum size of shape's bounding box.
-  Standard_EXPORT virtual Standard_Real GetMaxSize () const Standard_OVERRIDE
+  virtual Standard_Real GetMaxSize () const Standard_OVERRIDE
   {
     return myMaxSize;
   }
 
   //! Sets maximum size of shape's bounding box.
-  inline void SetMaxSize (const Standard_Real theValue)
+  void SetMaxSize (const Standard_Real theValue)
   {
     myMaxSize = theValue;
   }
 
-  DEFINE_STANDARD_RTTI_INLINE(BRepMeshData_Model, IMeshData_Model)
+  DEFINE_STANDARD_RTTIEXT(BRepMeshData_Model, IMeshData_Model)
 
 public: //! @name discrete faces
 
diff --git a/src/BRepMeshData/BRepMeshData_PCurve.cxx b/src/BRepMeshData/BRepMeshData_PCurve.cxx
index 4c03911829..818b7a3c62 100644
--- a/src/BRepMeshData/BRepMeshData_PCurve.cxx
+++ b/src/BRepMeshData/BRepMeshData_PCurve.cxx
@@ -19,6 +19,8 @@
 #include <BRepMesh_Vertex.hxx>
 #include <Standard_OutOfRange.hxx>
 
+IMPLEMENT_STANDARD_RTTIEXT(BRepMeshData_PCurve, IMeshData_PCurve)
+
 //=======================================================================
 // Function: Constructor
 // Purpose : 
diff --git a/src/BRepMeshData/BRepMeshData_PCurve.hxx b/src/BRepMeshData/BRepMeshData_PCurve.hxx
index 1189f92636..3d8ffbcd69 100644
--- a/src/BRepMeshData/BRepMeshData_PCurve.hxx
+++ b/src/BRepMeshData/BRepMeshData_PCurve.hxx
@@ -65,7 +65,7 @@ public:
   //! Clears parameters list.
   Standard_EXPORT virtual void Clear(const Standard_Boolean isKeepEndPoints) Standard_OVERRIDE;
 
-  DEFINE_STANDARD_RTTI_INLINE(BRepMeshData_PCurve, IMeshData_PCurve)
+  DEFINE_STANDARD_RTTIEXT(BRepMeshData_PCurve, IMeshData_PCurve)
 
 protected:
 
diff --git a/src/BRepMeshData/BRepMeshData_Wire.cxx b/src/BRepMeshData/BRepMeshData_Wire.cxx
index 8139f6a84a..deb56edb7a 100644
--- a/src/BRepMeshData/BRepMeshData_Wire.cxx
+++ b/src/BRepMeshData/BRepMeshData_Wire.cxx
@@ -18,6 +18,8 @@
 #include <BRepMesh_OrientedEdge.hxx>
 #include <BRepMesh_Vertex.hxx>
 
+IMPLEMENT_STANDARD_RTTIEXT(BRepMeshData_Wire, IMeshData_Wire)
+
 //=======================================================================
 // Function: Constructor
 // Purpose : 
diff --git a/src/BRepMeshData/BRepMeshData_Wire.hxx b/src/BRepMeshData/BRepMeshData_Wire.hxx
index bf55509684..228edb80f6 100644
--- a/src/BRepMeshData/BRepMeshData_Wire.hxx
+++ b/src/BRepMeshData/BRepMeshData_Wire.hxx
@@ -52,7 +52,7 @@ public:
   Standard_EXPORT virtual TopAbs_Orientation GetEdgeOrientation (
     const Standard_Integer theIndex) const Standard_OVERRIDE;
 
-  DEFINE_STANDARD_RTTI_INLINE(BRepMeshData_Wire, IMeshData_Wire)
+  DEFINE_STANDARD_RTTIEXT(BRepMeshData_Wire, IMeshData_Wire)
 
 private:
 
diff --git a/src/IMeshData/FILES b/src/IMeshData/FILES
index 1af663a2f1..592173b568 100644
--- a/src/IMeshData/FILES
+++ b/src/IMeshData/FILES
@@ -1,13 +1,22 @@
 IMeshData_Curve.hxx
+IMeshData_Curve.cxx
 IMeshData_Edge.hxx
+IMeshData_Edge.cxx
 IMeshData_Face.hxx
+IMeshData_Face.cxx
 IMeshData_Model.hxx
+IMeshData_Model.cxx
 IMeshData_ParametersList.hxx
+IMeshData_ParametersList.cxx
 IMeshData_ParametersListArrayAdaptor.hxx
 IMeshData_PCurve.hxx
+IMeshData_PCurve.cxx
 IMeshData_Shape.hxx
+IMeshData_Shape.cxx
 IMeshData_Status.hxx
 IMeshData_StatusOwner.hxx
 IMeshData_TessellatedShape.hxx
+IMeshData_TessellatedShape.cxx
 IMeshData_Types.hxx
 IMeshData_Wire.hxx
+IMeshData_Wire.cxx
diff --git a/src/IMeshData/IMeshData_Curve.cxx b/src/IMeshData/IMeshData_Curve.cxx
new file mode 100644
index 0000000000..6756ad9b38
--- /dev/null
+++ b/src/IMeshData/IMeshData_Curve.cxx
@@ -0,0 +1,18 @@
+// Created on: 2020-09-28
+// Copyright (c) 2020 OPEN CASCADE SAS
+// Created by: Maria KRYLOVA
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <IMeshData_Curve.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(IMeshData_Curve, IMeshData_ParametersList)
\ No newline at end of file
diff --git a/src/IMeshData/IMeshData_Curve.hxx b/src/IMeshData/IMeshData_Curve.hxx
index 505efad262..e98a684b3a 100644
--- a/src/IMeshData/IMeshData_Curve.hxx
+++ b/src/IMeshData/IMeshData_Curve.hxx
@@ -28,7 +28,7 @@ class IMeshData_Curve : public IMeshData_ParametersList
 public:
 
   //! Destructor.
-  Standard_EXPORT virtual ~IMeshData_Curve()
+  virtual ~IMeshData_Curve()
   {
   }
 
@@ -49,12 +49,12 @@ public:
   //! Removes point with the given index.
   Standard_EXPORT virtual void RemovePoint (const Standard_Integer theIndex) = 0;
 
-  DEFINE_STANDARD_RTTI_INLINE(IMeshData_Curve, IMeshData_ParametersList)
+  DEFINE_STANDARD_RTTIEXT(IMeshData_Curve, IMeshData_ParametersList)
 
 protected:
 
   //! Constructor.
-  Standard_EXPORT IMeshData_Curve()
+  IMeshData_Curve()
   {
   }
 };
diff --git a/src/IMeshData/IMeshData_Edge.cxx b/src/IMeshData/IMeshData_Edge.cxx
new file mode 100644
index 0000000000..200f74f265
--- /dev/null
+++ b/src/IMeshData/IMeshData_Edge.cxx
@@ -0,0 +1,18 @@
+// Created on: 2020-09-28
+// Copyright (c) 2020 OPEN CASCADE SAS
+// Created by: Maria KRYLOVA
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <IMeshData_Edge.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(IMeshData_Edge, IMeshData_TessellatedShape)
\ No newline at end of file
diff --git a/src/IMeshData/IMeshData_Edge.hxx b/src/IMeshData/IMeshData_Edge.hxx
index 162d2a20fa..5a83d34412 100644
--- a/src/IMeshData/IMeshData_Edge.hxx
+++ b/src/IMeshData/IMeshData_Edge.hxx
@@ -34,12 +34,12 @@ class IMeshData_Edge : public IMeshData_TessellatedShape, public IMeshData_Statu
 public:
 
   //! Destructor.
-  Standard_EXPORT virtual ~IMeshData_Edge()
+  virtual ~IMeshData_Edge()
   {
   }
 
   //! Returns TopoDS_Edge attached to model.
-  inline const TopoDS_Edge& GetEdge () const
+  const TopoDS_Edge& GetEdge () const
   {
     return TopoDS::Edge (GetShape ());
   }
@@ -62,7 +62,7 @@ public:
     const Standard_Integer theIndex) const = 0;
 
   //! Clears curve and all pcurves assigned to the edge from discretization.
-  inline void Clear(const Standard_Boolean isKeepEndPoints)
+  void Clear(const Standard_Boolean isKeepEndPoints)
   {
     myCurve->Clear(isKeepEndPoints);
     for (Standard_Integer aPCurveIt = 0; aPCurveIt < PCurvesNb(); ++aPCurveIt)
@@ -72,81 +72,81 @@ public:
   }
 
   //! Returns true in case if the edge is free one, i.e. it does not have pcurves.
-  inline Standard_Boolean IsFree () const
+  Standard_Boolean IsFree () const
   {
     return (PCurvesNb () == 0);
   }
 
   //! Sets 3d curve associated with current edge.
-  inline void SetCurve (const IMeshData::ICurveHandle& theCurve)
+  void SetCurve (const IMeshData::ICurveHandle& theCurve)
   {
     myCurve = theCurve;
   }
 
   //! Returns 3d curve associated with current edge.
-  inline const IMeshData::ICurveHandle& GetCurve () const
+  const IMeshData::ICurveHandle& GetCurve () const
   {
     return myCurve;
   }
 
   //! Gets value of angular deflection for the discrete model.
-  inline Standard_Real GetAngularDeflection () const
+  Standard_Real GetAngularDeflection () const
   {
     return myAngDeflection;
   }
 
   //! Sets value of angular deflection for the discrete model.
-  inline void SetAngularDeflection (const Standard_Real theValue)
+  void SetAngularDeflection (const Standard_Real theValue)
   {
     myAngDeflection = theValue;
   }
 
   //! Returns same param flag.
   //! By default equals to flag stored in topological shape.
-  inline Standard_Boolean GetSameParam () const
+  Standard_Boolean GetSameParam () const
   {
     return mySameParam;
   }
 
   //! Updates same param flag.
-  inline void SetSameParam (const Standard_Boolean theValue)
+  void SetSameParam (const Standard_Boolean theValue)
   {
     mySameParam = theValue;
   }
 
   //! Returns same range flag.
   //! By default equals to flag stored in topological shape.
-  inline Standard_Boolean GetSameRange () const
+  Standard_Boolean GetSameRange () const
   {
     return mySameRange;
   }
 
   //! Updates same range flag.
-  inline void SetSameRange (const Standard_Boolean theValue)
+  void SetSameRange (const Standard_Boolean theValue)
   {
     mySameRange = theValue;
   }
 
   //! Returns degenerative flag.
   //! By default equals to flag stored in topological shape.
-  inline Standard_Boolean GetDegenerated () const
+  Standard_Boolean GetDegenerated () const
   {
     return myDegenerated;
   }
 
   //! Updates degenerative flag.
-  inline void SetDegenerated (const Standard_Boolean theValue)
+  void SetDegenerated (const Standard_Boolean theValue)
   {
     myDegenerated = theValue;
   }
 
-  DEFINE_STANDARD_RTTI_INLINE(IMeshData_Edge, IMeshData_TessellatedShape)
+  DEFINE_STANDARD_RTTIEXT(IMeshData_Edge, IMeshData_TessellatedShape)
 
 protected:
 
   //! Constructor.
   //! Initializes empty model.
-  Standard_EXPORT IMeshData_Edge (const TopoDS_Edge& theEdge)
+  IMeshData_Edge (const TopoDS_Edge& theEdge)
     : IMeshData_TessellatedShape(theEdge),
       mySameParam  (BRep_Tool::SameParameter(theEdge)),
       mySameRange  (BRep_Tool::SameRange    (theEdge)),
diff --git a/src/IMeshData/IMeshData_Face.cxx b/src/IMeshData/IMeshData_Face.cxx
new file mode 100644
index 0000000000..7bbfba53d2
--- /dev/null
+++ b/src/IMeshData/IMeshData_Face.cxx
@@ -0,0 +1,18 @@
+// Created on: 2020-09-28
+// Copyright (c) 2020 OPEN CASCADE SAS
+// Created by: Maria KRYLOVA
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <IMeshData_Face.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(IMeshData_Face, IMeshData_TessellatedShape)
\ No newline at end of file
diff --git a/src/IMeshData/IMeshData_Face.hxx b/src/IMeshData/IMeshData_Face.hxx
index 4db215de1a..f86a9d767f 100644
--- a/src/IMeshData/IMeshData_Face.hxx
+++ b/src/IMeshData/IMeshData_Face.hxx
@@ -36,7 +36,7 @@ class IMeshData_Face : public IMeshData_TessellatedShape, public IMeshData_Statu
 public:
 
   //! Destructor.
-  Standard_EXPORT virtual ~IMeshData_Face()
+  virtual ~IMeshData_Face()
   {
   }
 
@@ -53,32 +53,32 @@ public:
     const Standard_Integer theIndex) const = 0;
 
   //! Returns face's surface.
-  inline const Handle(BRepAdaptor_HSurface)& GetSurface() const
+  const Handle(BRepAdaptor_HSurface)& GetSurface() const
   {
     return mySurface;
   }
 
   //! Returns TopoDS_Face attached to model.
-  inline const TopoDS_Face& GetFace () const
+  const TopoDS_Face& GetFace () const
   {
     return TopoDS::Face (GetShape ());
   }
 
   //! Returns whether the face discrete model is valid.
-  inline Standard_Boolean IsValid () const
+  Standard_Boolean IsValid () const
   {
     return (IsEqual(IMeshData_NoError) ||
             IsEqual(IMeshData_ReMesh)  ||
             IsEqual(IMeshData_UnorientedWire));
   }
 
-  DEFINE_STANDARD_RTTI_INLINE(IMeshData_Face, IMeshData_TessellatedShape)
+  DEFINE_STANDARD_RTTIEXT(IMeshData_Face, IMeshData_TessellatedShape)
 
 protected:
 
   //! Constructor.
   //! Initializes empty model.
-  Standard_EXPORT IMeshData_Face (const TopoDS_Face& theFace)
+  IMeshData_Face (const TopoDS_Face& theFace)
     : IMeshData_TessellatedShape(theFace)
   {
     BRepAdaptor_Surface aSurfAdaptor(GetFace(), Standard_False);
diff --git a/src/IMeshData/IMeshData_Model.cxx b/src/IMeshData/IMeshData_Model.cxx
new file mode 100644
index 0000000000..1d0ab31f5a
--- /dev/null
+++ b/src/IMeshData/IMeshData_Model.cxx
@@ -0,0 +1,18 @@
+// Created on: 2020-09-28
+// Copyright (c) 2020 OPEN CASCADE SAS
+// Created by: Maria KRYLOVA
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <IMeshData_Model.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(IMeshData_Model, IMeshData_Shape)
\ No newline at end of file
diff --git a/src/IMeshData/IMeshData_Model.hxx b/src/IMeshData/IMeshData_Model.hxx
index 773ab6e973..f87ffc6fb9 100644
--- a/src/IMeshData/IMeshData_Model.hxx
+++ b/src/IMeshData/IMeshData_Model.hxx
@@ -32,14 +32,14 @@ class IMeshData_Model : public IMeshData_Shape
 public:
 
   //! Destructor.
-  Standard_EXPORT virtual ~IMeshData_Model()
+  virtual ~IMeshData_Model()
   {
   }
 
   //! Returns maximum size of shape model.
   Standard_EXPORT virtual Standard_Real GetMaxSize () const = 0;
 
-  DEFINE_STANDARD_RTTI_INLINE(IMeshData_Model, IMeshData_Shape)
+  DEFINE_STANDARD_RTTIEXT(IMeshData_Model, IMeshData_Shape)
 
 public: //! @name discrete faces
 
@@ -67,7 +67,7 @@ protected:
 
   //! Constructor.
   //! Initializes empty model.
-  Standard_EXPORT IMeshData_Model (const TopoDS_Shape& theShape)
+  IMeshData_Model (const TopoDS_Shape& theShape)
     : IMeshData_Shape(theShape)
   {
   }
diff --git a/src/IMeshData/IMeshData_PCurve.cxx b/src/IMeshData/IMeshData_PCurve.cxx
new file mode 100644
index 0000000000..c04559ca00
--- /dev/null
+++ b/src/IMeshData/IMeshData_PCurve.cxx
@@ -0,0 +1,18 @@
+// Created on: 2020-09-28
+// Copyright (c) 2020 OPEN CASCADE SAS
+// Created by: Maria KRYLOVA
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <IMeshData_PCurve.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(IMeshData_PCurve, IMeshData_ParametersList)
\ No newline at end of file
diff --git a/src/IMeshData/IMeshData_PCurve.hxx b/src/IMeshData/IMeshData_PCurve.hxx
index 4c6530cf0e..f19634b0a0 100644
--- a/src/IMeshData/IMeshData_PCurve.hxx
+++ b/src/IMeshData/IMeshData_PCurve.hxx
@@ -29,7 +29,7 @@ class IMeshData_PCurve : public IMeshData_ParametersList
 public:
 
   //! Destructor.
-  Standard_EXPORT virtual ~IMeshData_PCurve()
+  virtual ~IMeshData_PCurve()
   {
   }
 
@@ -54,35 +54,35 @@ public:
   Standard_EXPORT virtual void RemovePoint (const Standard_Integer theIndex) = 0;
 
   //! Returns forward flag of this pcurve.
-  inline Standard_Boolean IsForward () const
+  Standard_Boolean IsForward () const
   {
     return (myOrientation != TopAbs_REVERSED);
   }
 
   //! Returns internal flag of this pcurve.
-  inline Standard_Boolean IsInternal() const
+  Standard_Boolean IsInternal() const
   {
     return (myOrientation == TopAbs_INTERNAL);
   }
 
   //! Returns orientation of the edge associated with current pcurve.
-  inline TopAbs_Orientation GetOrientation() const
+  TopAbs_Orientation GetOrientation() const
   {
     return myOrientation;
   }
 
   //! Returns discrete face pcurve is associated to.
-  inline const IMeshData::IFacePtr& GetFace () const
+  const IMeshData::IFacePtr& GetFace () const
   {
     return myDFace;
   }
 
-  DEFINE_STANDARD_RTTI_INLINE(IMeshData_PCurve, IMeshData_ParametersList)
+  DEFINE_STANDARD_RTTIEXT(IMeshData_PCurve, IMeshData_ParametersList)
 
 protected:
 
   //! Constructor.
-  Standard_EXPORT IMeshData_PCurve (
+  IMeshData_PCurve (
     const IMeshData::IFacePtr& theDFace,
     const TopAbs_Orientation   theOrientation)
     : myDFace(theDFace),
diff --git a/src/IMeshData/IMeshData_ParametersList.cxx b/src/IMeshData/IMeshData_ParametersList.cxx
new file mode 100644
index 0000000000..4cf38bf99a
--- /dev/null
+++ b/src/IMeshData/IMeshData_ParametersList.cxx
@@ -0,0 +1,18 @@
+// Created on: 2020-09-28
+// Copyright (c) 2020 OPEN CASCADE SAS
+// Created by: Maria KRYLOVA
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <IMeshData_ParametersList.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(IMeshData_ParametersList, Standard_Transient)
\ No newline at end of file
diff --git a/src/IMeshData/IMeshData_ParametersList.hxx b/src/IMeshData/IMeshData_ParametersList.hxx
index 8190fd2f32..f91706b0ae 100644
--- a/src/IMeshData/IMeshData_ParametersList.hxx
+++ b/src/IMeshData/IMeshData_ParametersList.hxx
@@ -25,7 +25,7 @@ class IMeshData_ParametersList : public Standard_Transient
 public:
 
   //! Destructor.
-  Standard_EXPORT virtual ~IMeshData_ParametersList()
+  virtual ~IMeshData_ParametersList()
   {
   }
 
@@ -38,12 +38,12 @@ public:
   //! Clears parameters list.
   Standard_EXPORT virtual void Clear(const Standard_Boolean isKeepEndPoints) = 0;
 
-  DEFINE_STANDARD_RTTI_INLINE(IMeshData_ParametersList, Standard_Transient)
+  DEFINE_STANDARD_RTTIEXT(IMeshData_ParametersList, Standard_Transient)
 
 protected:
 
   //! Constructor.
-  Standard_EXPORT IMeshData_ParametersList()
+  IMeshData_ParametersList()
   {
   }
 
diff --git a/src/IMeshData/IMeshData_ParametersListArrayAdaptor.hxx b/src/IMeshData/IMeshData_ParametersListArrayAdaptor.hxx
index 4356961163..ae8979a491 100644
--- a/src/IMeshData/IMeshData_ParametersListArrayAdaptor.hxx
+++ b/src/IMeshData/IMeshData_ParametersListArrayAdaptor.hxx
@@ -28,31 +28,31 @@ class IMeshData_ParametersListArrayAdaptor : public Standard_Transient
 public:
 
   //! Constructor. Initializes tool by the given parameters.
-  Standard_EXPORT IMeshData_ParametersListArrayAdaptor(
+  IMeshData_ParametersListArrayAdaptor(
     const ParametersListPtrType& theParameters)
     : myParameters (theParameters)
   {
   }
 
   //! Destructor.
-  Standard_EXPORT virtual ~IMeshData_ParametersListArrayAdaptor()
+  virtual ~IMeshData_ParametersListArrayAdaptor()
   {
   }
 
   //! Returns lower index in parameters array.
-  Standard_EXPORT Standard_Integer Lower() const
+  Standard_Integer Lower() const
   {
     return 0;
   }
 
   //! Returns upper index in parameters array.
-  Standard_EXPORT Standard_Integer Upper() const
+  Standard_Integer Upper() const
   {
     return myParameters->ParametersNb() - 1;
   }
 
   //! Returns value of the given index.
-  Standard_EXPORT Standard_Real Value(const Standard_Integer theIndex) const
+  Standard_Real Value(const Standard_Integer theIndex) const
   {
     return myParameters->GetParameter(theIndex);
   }
diff --git a/src/IMeshData/IMeshData_Shape.cxx b/src/IMeshData/IMeshData_Shape.cxx
new file mode 100644
index 0000000000..2bfe7cc82d
--- /dev/null
+++ b/src/IMeshData/IMeshData_Shape.cxx
@@ -0,0 +1,18 @@
+// Created on: 2020-09-28
+// Copyright (c) 2020 OPEN CASCADE SAS
+// Created by: Maria KRYLOVA
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <IMeshData_Shape.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(IMeshData_Shape, Standard_Transient)
\ No newline at end of file
diff --git a/src/IMeshData/IMeshData_Shape.hxx b/src/IMeshData/IMeshData_Shape.hxx
index eb5100a42a..6b23e6c037 100644
--- a/src/IMeshData/IMeshData_Shape.hxx
+++ b/src/IMeshData/IMeshData_Shape.hxx
@@ -27,12 +27,12 @@ class IMeshData_Shape : public Standard_Transient
 public:
 
   //! Destructor.
-  Standard_EXPORT virtual ~IMeshData_Shape()
+  virtual ~IMeshData_Shape()
   {
   }
 
   //! Assigns shape to discrete shape.
-  inline void SetShape (const TopoDS_Shape& theShape)
+  void SetShape (const TopoDS_Shape& theShape)
   {
     myShape = theShape;
   }
@@ -43,17 +43,17 @@ public:
     return myShape;
   }
 
-  DEFINE_STANDARD_RTTI_INLINE(IMeshData_Shape, Standard_Transient)
+  DEFINE_STANDARD_RTTIEXT(IMeshData_Shape, Standard_Transient)
 
 protected:
 
   //! Constructor.
-  Standard_EXPORT IMeshData_Shape()
+  IMeshData_Shape()
   {
   }
 
   //! Constructor.
-  Standard_EXPORT IMeshData_Shape (const TopoDS_Shape& theShape)
+  IMeshData_Shape (const TopoDS_Shape& theShape)
     : myShape(theShape)
   {
   }
diff --git a/src/IMeshData/IMeshData_StatusOwner.hxx b/src/IMeshData/IMeshData_StatusOwner.hxx
index d1b54b032c..abade176dd 100644
--- a/src/IMeshData/IMeshData_StatusOwner.hxx
+++ b/src/IMeshData/IMeshData_StatusOwner.hxx
@@ -26,36 +26,36 @@ class IMeshData_StatusOwner
 public:
 
   //! Destructor.
-  Standard_EXPORT virtual ~IMeshData_StatusOwner()
+  virtual ~IMeshData_StatusOwner()
   {
   }
 
   //! Returns true in case if status is strictly equal to the given value.
-  inline Standard_Boolean IsEqual(const IMeshData_Status theValue) const
+  Standard_Boolean IsEqual(const IMeshData_Status theValue) const
   {
     return (myStatus == theValue);
   }
 
   //! Returns true in case if status is set.
-  inline Standard_Boolean IsSet(const IMeshData_Status theValue) const
+  Standard_Boolean IsSet(const IMeshData_Status theValue) const
   {
     return (myStatus & theValue) != 0;
   }
 
   //! Adds status to status flags of a face.
-  inline void SetStatus(const IMeshData_Status theValue)
+  void SetStatus(const IMeshData_Status theValue)
   {
     myStatus |= theValue;
   }
 
   //! Adds status to status flags of a face.
-  inline void UnsetStatus(const IMeshData_Status theValue)
+  void UnsetStatus(const IMeshData_Status theValue)
   {
     myStatus &= ~theValue;
   }
 
   //! Returns complete status mask.
-  inline Standard_Integer GetStatusMask() const
+  Standard_Integer GetStatusMask() const
   {
     return myStatus;
   }
@@ -63,7 +63,7 @@ public:
 protected:
 
   //! Constructor. Initializes default status.
-  Standard_EXPORT IMeshData_StatusOwner()
+  IMeshData_StatusOwner()
     : myStatus(IMeshData_NoError)
   {
   }
diff --git a/src/IMeshData/IMeshData_TessellatedShape.cxx b/src/IMeshData/IMeshData_TessellatedShape.cxx
new file mode 100644
index 0000000000..af6065c4ee
--- /dev/null
+++ b/src/IMeshData/IMeshData_TessellatedShape.cxx
@@ -0,0 +1,18 @@
+// Created on: 2020-09-28
+// Copyright (c) 2020 OPEN CASCADE SAS
+// Created by: Maria KRYLOVA
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <IMeshData_TessellatedShape.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(IMeshData_TessellatedShape, IMeshData_Shape)
\ No newline at end of file
diff --git a/src/IMeshData/IMeshData_TessellatedShape.hxx b/src/IMeshData/IMeshData_TessellatedShape.hxx
index 94001b032d..02246640fb 100644
--- a/src/IMeshData/IMeshData_TessellatedShape.hxx
+++ b/src/IMeshData/IMeshData_TessellatedShape.hxx
@@ -26,34 +26,34 @@ class IMeshData_TessellatedShape : public IMeshData_Shape
 public:
 
   //! Destructor.
-  Standard_EXPORT virtual ~IMeshData_TessellatedShape()
+  virtual ~IMeshData_TessellatedShape()
   {
   }
 
   //! Gets deflection value for the discrete model.
-  inline Standard_Real GetDeflection () const
+  Standard_Real GetDeflection () const
   {
     return myDeflection;
   }
 
   //! Sets deflection value for the discrete model.
-  inline void SetDeflection (const Standard_Real theValue)
+  void SetDeflection (const Standard_Real theValue)
   {
     myDeflection = theValue;
   }
 
-  DEFINE_STANDARD_RTTI_INLINE(IMeshData_TessellatedShape, IMeshData_Shape)
+  DEFINE_STANDARD_RTTIEXT(IMeshData_TessellatedShape, IMeshData_Shape)
 
 protected:
 
   //! Constructor.
-  Standard_EXPORT IMeshData_TessellatedShape ()
+  IMeshData_TessellatedShape ()
     : myDeflection(RealLast())
   {
   }
 
   //! Constructor.
-  Standard_EXPORT IMeshData_TessellatedShape (const TopoDS_Shape& theShape)
+  IMeshData_TessellatedShape (const TopoDS_Shape& theShape)
     : IMeshData_Shape(theShape),
       myDeflection(RealLast())
   {
diff --git a/src/IMeshData/IMeshData_Wire.cxx b/src/IMeshData/IMeshData_Wire.cxx
new file mode 100644
index 0000000000..05473ae058
--- /dev/null
+++ b/src/IMeshData/IMeshData_Wire.cxx
@@ -0,0 +1,18 @@
+// Created on: 2020-09-28
+// Copyright (c) 2020 OPEN CASCADE SAS
+// Created by: Maria KRYLOVA
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <IMeshData_Wire.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(IMeshData_Wire, IMeshData_TessellatedShape)
\ No newline at end of file
diff --git a/src/IMeshData/IMeshData_Wire.hxx b/src/IMeshData/IMeshData_Wire.hxx
index e2c2634f71..6e71e24abc 100644
--- a/src/IMeshData/IMeshData_Wire.hxx
+++ b/src/IMeshData/IMeshData_Wire.hxx
@@ -32,12 +32,12 @@ class IMeshData_Wire : public IMeshData_TessellatedShape, public IMeshData_Statu
 public:
 
   //! Destructor.
-  Standard_EXPORT virtual ~IMeshData_Wire()
+  virtual ~IMeshData_Wire()
   {
   }
 
   //! Returns TopoDS_Face attached to model.
-  inline const TopoDS_Wire& GetWire () const
+  const TopoDS_Wire& GetWire () const
   {
     return TopoDS::Wire (GetShape ());
   }
@@ -59,13 +59,13 @@ public:
   Standard_EXPORT virtual TopAbs_Orientation GetEdgeOrientation (
     const Standard_Integer theIndex) const = 0;
 
-  DEFINE_STANDARD_RTTI_INLINE(IMeshData_Wire, IMeshData_TessellatedShape)
+  DEFINE_STANDARD_RTTIEXT(IMeshData_Wire, IMeshData_TessellatedShape)
 
 protected:
 
   //! Constructor.
   //! Initializes empty model.
-  Standard_EXPORT IMeshData_Wire(const TopoDS_Wire& theWire)
+  IMeshData_Wire(const TopoDS_Wire& theWire)
     : IMeshData_TessellatedShape(theWire)
   {
   }
diff --git a/src/IMeshTools/FILES b/src/IMeshTools/FILES
index 5c4537202c..7ffc2884ef 100644
--- a/src/IMeshTools/FILES
+++ b/src/IMeshTools/FILES
@@ -1,13 +1,20 @@
 IMeshTools_Context.hxx
+IMeshTools_Context.cxx
 IMeshTools_CurveTessellator.hxx
+IMeshTools_CurveTessellator.cxx
 IMeshTools_MeshAlgo.hxx
+IMeshTools_MeshAlgo.cxx
 IMeshTools_MeshAlgoFactory.hxx
+IMeshTools_MeshAlgoFactory.cxx
 IMeshTools_MeshAlgoType.hxx
 IMeshTools_MeshBuilder.hxx
 IMeshTools_MeshBuilder.cxx
 IMeshTools_ModelAlgo.hxx
+IMeshTools_ModelAlgo.cxx
 IMeshTools_ModelBuilder.hxx
+IMeshTools_ModelBuilder.cxx
 IMeshTools_Parameters.hxx
 IMeshTools_ShapeExplorer.hxx
 IMeshTools_ShapeExplorer.cxx
 IMeshTools_ShapeVisitor.hxx
+IMeshTools_ShapeVisitor.cxx
diff --git a/src/IMeshTools/IMeshTools_Context.cxx b/src/IMeshTools/IMeshTools_Context.cxx
new file mode 100644
index 0000000000..3524433e70
--- /dev/null
+++ b/src/IMeshTools/IMeshTools_Context.cxx
@@ -0,0 +1,18 @@
+// Created on: 2020-09-28
+// Copyright (c) 2020 OPEN CASCADE SAS
+// Created by: Maria KRYLOVA
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <IMeshTools_Context.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(IMeshTools_Context, IMeshData_Shape)
\ No newline at end of file
diff --git a/src/IMeshTools/IMeshTools_Context.hxx b/src/IMeshTools/IMeshTools_Context.hxx
index 804d9e272a..82cc3e3889 100644
--- a/src/IMeshTools/IMeshTools_Context.hxx
+++ b/src/IMeshTools/IMeshTools_Context.hxx
@@ -32,18 +32,18 @@ class IMeshTools_Context : public IMeshData_Shape
 public:
 
   //! Constructor.
-  Standard_EXPORT IMeshTools_Context()
+  IMeshTools_Context()
   {
   }
 
   //! Destructor.
-  Standard_EXPORT virtual ~IMeshTools_Context()
+  virtual ~IMeshTools_Context()
   {
   }
 
   //! Builds model using assined model builder.
   //! @return True on success, False elsewhere.
-  Standard_EXPORT virtual Standard_Boolean BuildModel ()
+  virtual Standard_Boolean BuildModel ()
   {
     if (myModelBuilder.IsNull())
     {
@@ -57,7 +57,7 @@ public:
 
   //! Performs discretization of model edges using assigned edge discret algorithm.
   //! @return True on success, False elsewhere.
-  Standard_EXPORT virtual Standard_Boolean DiscretizeEdges()
+  virtual Standard_Boolean DiscretizeEdges()
   {
     if (myModel.IsNull() || myEdgeDiscret.IsNull())
     {
@@ -71,7 +71,7 @@ public:
   //! Performs healing of discrete model built by DiscretizeEdges() method
   //! using assigned healing algorithm.
   //! @return True on success, False elsewhere.
-  Standard_EXPORT virtual Standard_Boolean HealModel()
+  virtual Standard_Boolean HealModel()
   {
     if (myModel.IsNull())
     {
@@ -86,7 +86,7 @@ public:
   //! Performs pre-processing of discrete model using assigned algorithm.
   //! Performs auxiliary actions such as cleaning shape from old triangulation.
   //! @return True on success, False elsewhere.
-  Standard_EXPORT virtual Standard_Boolean PreProcessModel()
+  virtual Standard_Boolean PreProcessModel()
   {
     if (myModel.IsNull())
     {
@@ -113,7 +113,7 @@ public:
 
   //! Performs post-processing of discrete model using assigned algorithm.
   //! @return True on success, False elsewhere.
-  Standard_EXPORT virtual Standard_Boolean PostProcessModel()
+  virtual Standard_Boolean PostProcessModel()
   {
     if (myModel.IsNull())
     {
@@ -126,7 +126,7 @@ public:
   }
 
   //! Cleans temporary context data.
-  Standard_EXPORT virtual void Clean()
+  virtual void Clean()
   {
     if (myParameters.CleanModel)
     {
@@ -135,96 +135,96 @@ public:
   }
 
   //! Gets instance of a tool to be used to build discrete model.
-  inline const Handle (IMeshTools_ModelBuilder)& GetModelBuilder () const
+  const Handle (IMeshTools_ModelBuilder)& GetModelBuilder () const
   {
     return myModelBuilder;
   }
 
   //! Sets instance of a tool to be used to build discrete model.
-  inline void SetModelBuilder (const Handle (IMeshTools_ModelBuilder)& theBuilder)
+  void SetModelBuilder (const Handle (IMeshTools_ModelBuilder)& theBuilder)
   {
     myModelBuilder = theBuilder;
   }
 
   //! Gets instance of a tool to be used to discretize edges of a model.
-  inline const Handle (IMeshTools_ModelAlgo)& GetEdgeDiscret () const
+  const Handle (IMeshTools_ModelAlgo)& GetEdgeDiscret () const
   {
     return myEdgeDiscret;
   }
 
   //! Sets instance of a tool to be used to discretize edges of a model.
-  inline void SetEdgeDiscret (const Handle (IMeshTools_ModelAlgo)& theEdgeDiscret)
+  void SetEdgeDiscret (const Handle (IMeshTools_ModelAlgo)& theEdgeDiscret)
   {
     myEdgeDiscret = theEdgeDiscret;
   }
 
   //! Gets instance of a tool to be used to heal discrete model.
-  inline const Handle(IMeshTools_ModelAlgo)& GetModelHealer() const
+  const Handle(IMeshTools_ModelAlgo)& GetModelHealer() const
   {
     return myModelHealer;
   }
 
   //! Sets instance of a tool to be used to heal discrete model.
-  inline void SetModelHealer(const Handle(IMeshTools_ModelAlgo)& theModelHealer)
+  void SetModelHealer(const Handle(IMeshTools_ModelAlgo)& theModelHealer)
   {
     myModelHealer = theModelHealer;
   }
 
   //! Gets instance of pre-processing algorithm.
-  inline const Handle(IMeshTools_ModelAlgo)& GetPreProcessor() const
+  const Handle(IMeshTools_ModelAlgo)& GetPreProcessor() const
   {
     return myPreProcessor;
   }
 
   //! Sets instance of pre-processing algorithm.
-  inline void SetPreProcessor(const Handle(IMeshTools_ModelAlgo)& thePreProcessor)
+  void SetPreProcessor(const Handle(IMeshTools_ModelAlgo)& thePreProcessor)
   {
     myPreProcessor = thePreProcessor;
   }
 
   //! Gets instance of meshing algorithm.
-  inline const Handle(IMeshTools_ModelAlgo)& GetFaceDiscret() const
+  const Handle(IMeshTools_ModelAlgo)& GetFaceDiscret() const
   {
     return myFaceDiscret;
   }
 
   //! Sets instance of meshing algorithm.
-  inline void SetFaceDiscret(const Handle(IMeshTools_ModelAlgo)& theFaceDiscret)
+  void SetFaceDiscret(const Handle(IMeshTools_ModelAlgo)& theFaceDiscret)
   {
     myFaceDiscret = theFaceDiscret;
   }
 
   //! Gets instance of post-processing algorithm.
-  inline const Handle(IMeshTools_ModelAlgo)& GetPostProcessor() const
+  const Handle(IMeshTools_ModelAlgo)& GetPostProcessor() const
   {
     return myPostProcessor;
   }
 
   //! Sets instance of post-processing algorithm.
-  inline void SetPostProcessor(const Handle(IMeshTools_ModelAlgo)& thePostProcessor)
+  void SetPostProcessor(const Handle(IMeshTools_ModelAlgo)& thePostProcessor)
   {
     myPostProcessor = thePostProcessor;
   }
 
   //! Gets parameters to be used for meshing.
-  inline const IMeshTools_Parameters& GetParameters () const 
+  const IMeshTools_Parameters& GetParameters () const 
   {
     return myParameters;
   }
 
   //! Gets reference to parameters to be used for meshing.
-  inline IMeshTools_Parameters& ChangeParameters ()
+  IMeshTools_Parameters& ChangeParameters ()
   {
     return myParameters;
   }
 
   //! Returns discrete model of a shape.
-  inline const Handle (IMeshData_Model)& GetModel () const
+  const Handle (IMeshData_Model)& GetModel () const
   {
     return myModel;
   }
 
-  DEFINE_STANDARD_RTTI_INLINE(IMeshTools_Context, IMeshData_Shape)
+  DEFINE_STANDARD_RTTIEXT(IMeshTools_Context, IMeshData_Shape)
 
 private:
 
diff --git a/src/IMeshTools/IMeshTools_CurveTessellator.cxx b/src/IMeshTools/IMeshTools_CurveTessellator.cxx
new file mode 100644
index 0000000000..20493cd032
--- /dev/null
+++ b/src/IMeshTools/IMeshTools_CurveTessellator.cxx
@@ -0,0 +1,18 @@
+// Created on: 2020-09-28
+// Copyright (c) 2020 OPEN CASCADE SAS
+// Created by: Maria KRYLOVA
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <IMeshTools_CurveTessellator.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(IMeshTools_CurveTessellator, Standard_Transient)
\ No newline at end of file
diff --git a/src/IMeshTools/IMeshTools_CurveTessellator.hxx b/src/IMeshTools/IMeshTools_CurveTessellator.hxx
index 2cbd66bfd6..351ce0edc3 100644
--- a/src/IMeshTools/IMeshTools_CurveTessellator.hxx
+++ b/src/IMeshTools/IMeshTools_CurveTessellator.hxx
@@ -27,7 +27,7 @@ class IMeshTools_CurveTessellator : public Standard_Transient
 public:
 
   //! Destructor.
-  Standard_EXPORT virtual ~IMeshTools_CurveTessellator()
+  virtual ~IMeshTools_CurveTessellator()
   {
   }
 
@@ -44,12 +44,12 @@ public:
     gp_Pnt&                thePoint,
     Standard_Real&         theParameter) const = 0;
 
-  DEFINE_STANDARD_RTTI_INLINE(IMeshTools_CurveTessellator, Standard_Transient)
+  DEFINE_STANDARD_RTTIEXT(IMeshTools_CurveTessellator, Standard_Transient)
 
 protected:
 
   //! Constructor.
-  Standard_EXPORT IMeshTools_CurveTessellator()
+  IMeshTools_CurveTessellator()
   {
   }
 };
diff --git a/src/IMeshTools/IMeshTools_MeshAlgo.cxx b/src/IMeshTools/IMeshTools_MeshAlgo.cxx
new file mode 100644
index 0000000000..9794c4d4f2
--- /dev/null
+++ b/src/IMeshTools/IMeshTools_MeshAlgo.cxx
@@ -0,0 +1,18 @@
+// Created on: 2020-09-28
+// Copyright (c) 2020 OPEN CASCADE SAS
+// Created by: Maria KRYLOVA
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <IMeshTools_MeshAlgo.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(IMeshTools_MeshAlgo, Standard_Transient)
\ No newline at end of file
diff --git a/src/IMeshTools/IMeshTools_MeshAlgo.hxx b/src/IMeshTools/IMeshTools_MeshAlgo.hxx
index fd47075d0f..5a1d3b80cf 100644
--- a/src/IMeshTools/IMeshTools_MeshAlgo.hxx
+++ b/src/IMeshTools/IMeshTools_MeshAlgo.hxx
@@ -29,7 +29,7 @@ class IMeshTools_MeshAlgo : public Standard_Transient
 public:
 
   //! Destructor.
-  Standard_EXPORT virtual ~IMeshTools_MeshAlgo()
+  virtual ~IMeshTools_MeshAlgo()
   {
   }
 
@@ -39,12 +39,12 @@ public:
     const IMeshTools_Parameters&  theParameters,
     const Message_ProgressRange&  theRange) = 0;
 
-  DEFINE_STANDARD_RTTI_INLINE(IMeshTools_MeshAlgo, Standard_Transient)
+  DEFINE_STANDARD_RTTIEXT(IMeshTools_MeshAlgo, Standard_Transient)
 
 protected:
 
   //! Constructor.
-  Standard_EXPORT IMeshTools_MeshAlgo()
+  IMeshTools_MeshAlgo()
   {
   }
 };
diff --git a/src/IMeshTools/IMeshTools_MeshAlgoFactory.cxx b/src/IMeshTools/IMeshTools_MeshAlgoFactory.cxx
new file mode 100644
index 0000000000..4f13ef5d86
--- /dev/null
+++ b/src/IMeshTools/IMeshTools_MeshAlgoFactory.cxx
@@ -0,0 +1,18 @@
+// Created on: 2020-09-28
+// Copyright (c) 2020 OPEN CASCADE SAS
+// Created by: Maria KRYLOVA
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <IMeshTools_MeshAlgoFactory.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(IMeshTools_MeshAlgoFactory, Standard_Transient)
\ No newline at end of file
diff --git a/src/IMeshTools/IMeshTools_MeshAlgoFactory.hxx b/src/IMeshTools/IMeshTools_MeshAlgoFactory.hxx
index 47008755bc..2e4eff6778 100644
--- a/src/IMeshTools/IMeshTools_MeshAlgoFactory.hxx
+++ b/src/IMeshTools/IMeshTools_MeshAlgoFactory.hxx
@@ -30,7 +30,7 @@ class IMeshTools_MeshAlgoFactory : public Standard_Transient
 public:
 
   //! Destructor.
-  Standard_EXPORT virtual ~IMeshTools_MeshAlgoFactory()
+  virtual ~IMeshTools_MeshAlgoFactory()
   {
   }
 
@@ -39,12 +39,12 @@ public:
     const GeomAbs_SurfaceType    theSurfaceType,
     const IMeshTools_Parameters& theParameters) const = 0;
 
-  DEFINE_STANDARD_RTTI_INLINE(IMeshTools_MeshAlgoFactory, Standard_Transient)
+  DEFINE_STANDARD_RTTIEXT(IMeshTools_MeshAlgoFactory, Standard_Transient)
 
 protected:
 
   //! Constructor.
-  Standard_EXPORT IMeshTools_MeshAlgoFactory()
+  IMeshTools_MeshAlgoFactory()
   {
   }
 };
diff --git a/src/IMeshTools/IMeshTools_MeshBuilder.cxx b/src/IMeshTools/IMeshTools_MeshBuilder.cxx
index 8eb10b9081..7e3051019d 100644
--- a/src/IMeshTools/IMeshTools_MeshBuilder.cxx
+++ b/src/IMeshTools/IMeshTools_MeshBuilder.cxx
@@ -17,6 +17,8 @@
 #include <IMeshData_Face.hxx>
 #include <OSD_Parallel.hxx>
 
+IMPLEMENT_STANDARD_RTTIEXT(IMeshTools_MeshBuilder, Message_Algorithm)
+
 //=======================================================================
 // Function: Constructor
 // Purpose : 
diff --git a/src/IMeshTools/IMeshTools_MeshBuilder.hxx b/src/IMeshTools/IMeshTools_MeshBuilder.hxx
index 83e41edc93..f2d46886b3 100644
--- a/src/IMeshTools/IMeshTools_MeshBuilder.hxx
+++ b/src/IMeshTools/IMeshTools_MeshBuilder.hxx
@@ -51,13 +51,13 @@ public:
   Standard_EXPORT virtual ~IMeshTools_MeshBuilder();
 
   //! Sets context for algorithm.
-  inline void SetContext (const Handle (IMeshTools_Context)& theContext)
+  void SetContext (const Handle (IMeshTools_Context)& theContext)
   {
     myContext = theContext;
   }
 
   //! Gets context of algorithm.
-  inline const Handle (IMeshTools_Context)& GetContext () const
+  const Handle (IMeshTools_Context)& GetContext () const
   {
     return myContext;
   }
@@ -65,7 +65,7 @@ public:
   //! Performs meshing ot the shape using current context.
   Standard_EXPORT virtual void Perform (const Message_ProgressRange& theRange);
 
-  DEFINE_STANDARD_RTTI_INLINE(IMeshTools_MeshBuilder, Message_Algorithm)
+  DEFINE_STANDARD_RTTIEXT(IMeshTools_MeshBuilder, Message_Algorithm)
 
 private:
 
diff --git a/src/IMeshTools/IMeshTools_ModelAlgo.cxx b/src/IMeshTools/IMeshTools_ModelAlgo.cxx
new file mode 100644
index 0000000000..3f8d2e737f
--- /dev/null
+++ b/src/IMeshTools/IMeshTools_ModelAlgo.cxx
@@ -0,0 +1,18 @@
+// Created on: 2020-09-28
+// Copyright (c) 2020 OPEN CASCADE SAS
+// Created by: Maria KRYLOVA
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <IMeshTools_ModelAlgo.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(IMeshTools_ModelAlgo, Standard_Transient)
\ No newline at end of file
diff --git a/src/IMeshTools/IMeshTools_ModelAlgo.hxx b/src/IMeshTools/IMeshTools_ModelAlgo.hxx
index e7e38cdd05..93b9a8d98a 100644
--- a/src/IMeshTools/IMeshTools_ModelAlgo.hxx
+++ b/src/IMeshTools/IMeshTools_ModelAlgo.hxx
@@ -31,7 +31,7 @@ class IMeshTools_ModelAlgo : public Standard_Transient
 public:
 
   //! Destructor.
-  Standard_EXPORT virtual ~IMeshTools_ModelAlgo()
+  virtual ~IMeshTools_ModelAlgo()
   {
   }
 
@@ -53,12 +53,12 @@ public:
     }
   }
 
-  DEFINE_STANDARD_RTTI_INLINE(IMeshTools_ModelAlgo, Standard_Transient)
+  DEFINE_STANDARD_RTTIEXT(IMeshTools_ModelAlgo, Standard_Transient)
 
 protected:
 
   //! Constructor.
-  Standard_EXPORT IMeshTools_ModelAlgo()
+  IMeshTools_ModelAlgo()
   {
   }
 
diff --git a/src/IMeshTools/IMeshTools_ModelBuilder.cxx b/src/IMeshTools/IMeshTools_ModelBuilder.cxx
new file mode 100644
index 0000000000..3e345183c1
--- /dev/null
+++ b/src/IMeshTools/IMeshTools_ModelBuilder.cxx
@@ -0,0 +1,18 @@
+// Created on: 2020-09-28
+// Copyright (c) 2020 OPEN CASCADE SAS
+// Created by: Maria KRYLOVA
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <IMeshTools_ModelBuilder.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(IMeshTools_ModelBuilder, Message_Algorithm)
\ No newline at end of file
diff --git a/src/IMeshTools/IMeshTools_ModelBuilder.hxx b/src/IMeshTools/IMeshTools_ModelBuilder.hxx
index 5d6d416932..9d74d99b01 100644
--- a/src/IMeshTools/IMeshTools_ModelBuilder.hxx
+++ b/src/IMeshTools/IMeshTools_ModelBuilder.hxx
@@ -21,8 +21,8 @@
 #include <Standard_Failure.hxx>
 #include <Standard_Type.hxx>
 #include <TopoDS_Shape.hxx>
+#include <IMeshData_Model.hxx>
 
-class IMeshData_Model;
 struct IMeshTools_Parameters;
 
 //! Interface class represents API for tool building discrete model.
@@ -36,7 +36,7 @@ class IMeshTools_ModelBuilder : public Message_Algorithm
 public:
 
   //! Destructor.
-  Standard_EXPORT virtual ~IMeshTools_ModelBuilder()
+  virtual ~IMeshTools_ModelBuilder()
   {
   }
 
@@ -61,12 +61,12 @@ public:
     }
   }
 
-  DEFINE_STANDARD_RTTI_INLINE(IMeshTools_ModelBuilder, Message_Algorithm)
+  DEFINE_STANDARD_RTTIEXT(IMeshTools_ModelBuilder, Message_Algorithm)
 
 protected:
 
   //! Constructor.
-  Standard_EXPORT IMeshTools_ModelBuilder()
+  IMeshTools_ModelBuilder()
   {
   }
 
diff --git a/src/IMeshTools/IMeshTools_ShapeExplorer.cxx b/src/IMeshTools/IMeshTools_ShapeExplorer.cxx
index a6214ee700..322b10beaa 100644
--- a/src/IMeshTools/IMeshTools_ShapeExplorer.cxx
+++ b/src/IMeshTools/IMeshTools_ShapeExplorer.cxx
@@ -25,6 +25,8 @@
 #include <TopTools_MapOfShape.hxx>
 #include <Geom_Surface.hxx>
 
+IMPLEMENT_STANDARD_RTTIEXT(IMeshTools_ShapeExplorer, IMeshData_Shape)
+
 namespace
 {
   //=======================================================================
diff --git a/src/IMeshTools/IMeshTools_ShapeExplorer.hxx b/src/IMeshTools/IMeshTools_ShapeExplorer.hxx
index 0e96ddc60e..e5e4e10cb7 100644
--- a/src/IMeshTools/IMeshTools_ShapeExplorer.hxx
+++ b/src/IMeshTools/IMeshTools_ShapeExplorer.hxx
@@ -35,7 +35,7 @@ public:
   //! Starts exploring of a shape.
   Standard_EXPORT virtual void Accept (const Handle (IMeshTools_ShapeVisitor)& theVisitor);
 
-  DEFINE_STANDARD_RTTI_INLINE(IMeshTools_ShapeExplorer, IMeshData_Shape)
+  DEFINE_STANDARD_RTTIEXT(IMeshTools_ShapeExplorer, IMeshData_Shape)
 };
 
 #endif
\ No newline at end of file
diff --git a/src/IMeshTools/IMeshTools_ShapeVisitor.cxx b/src/IMeshTools/IMeshTools_ShapeVisitor.cxx
new file mode 100644
index 0000000000..069e5ba46a
--- /dev/null
+++ b/src/IMeshTools/IMeshTools_ShapeVisitor.cxx
@@ -0,0 +1,18 @@
+// Created on: 2020-09-28
+// Copyright (c) 2020 OPEN CASCADE SAS
+// Created by: Maria KRYLOVA
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <IMeshTools_ShapeVisitor.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(IMeshTools_ShapeVisitor, Standard_Transient)
\ No newline at end of file
diff --git a/src/IMeshTools/IMeshTools_ShapeVisitor.hxx b/src/IMeshTools/IMeshTools_ShapeVisitor.hxx
index 50ee23dc49..517aeeef90 100644
--- a/src/IMeshTools/IMeshTools_ShapeVisitor.hxx
+++ b/src/IMeshTools/IMeshTools_ShapeVisitor.hxx
@@ -28,7 +28,7 @@ class IMeshTools_ShapeVisitor : public Standard_Transient
 public:
 
   //! Destructor.
-  Standard_EXPORT virtual ~IMeshTools_ShapeVisitor()
+  virtual ~IMeshTools_ShapeVisitor()
   {
   }
 
@@ -38,12 +38,12 @@ public:
   //! Handles TopoDS_Edge object.
   Standard_EXPORT virtual void Visit (const TopoDS_Edge& theEdge) = 0;
 
-  DEFINE_STANDARD_RTTI_INLINE(IMeshTools_ShapeVisitor, Standard_Transient)
+  DEFINE_STANDARD_RTTIEXT(IMeshTools_ShapeVisitor, Standard_Transient)
 
 protected:
 
   //! Constructor.
-  Standard_EXPORT IMeshTools_ShapeVisitor()
+  IMeshTools_ShapeVisitor()
   {
   }
 };