From 3a1475b0754ddfbcaadc82bdec63fca68bf3a42a Mon Sep 17 00:00:00 2001 From: Dmitri Naumov <dmitri.naumov@ufz.de> Date: Thu, 2 Jul 2015 20:01:53 +0200 Subject: [PATCH] [MeL] Explicit TemplateElement<Rule> instantiation --- MeshLib/Elements/Hex.h | 3 +++ MeshLib/Elements/Line.h | 3 +++ MeshLib/Elements/Prism.h | 3 +++ MeshLib/Elements/Pyramid.h | 3 +++ MeshLib/Elements/Quad.h | 4 ++++ MeshLib/Elements/TemplateElement.cpp | 34 ++++++++++++++++++++++++++++ MeshLib/Elements/Tet.h | 3 +++ MeshLib/Elements/Tri.h | 4 ++++ 8 files changed, 57 insertions(+) create mode 100644 MeshLib/Elements/TemplateElement.cpp diff --git a/MeshLib/Elements/Hex.h b/MeshLib/Elements/Hex.h index dab38b43091..f691bad8cc1 100644 --- a/MeshLib/Elements/Hex.h +++ b/MeshLib/Elements/Hex.h @@ -19,6 +19,9 @@ #include "HexRule8.h" #include "HexRule20.h" +extern template class MeshLib::TemplateElement<MeshLib::HexRule20>; +extern template class MeshLib::TemplateElement<MeshLib::HexRule8>; + namespace MeshLib { typedef TemplateElement<HexRule8> Hex; typedef TemplateElement<HexRule20> Hex20; diff --git a/MeshLib/Elements/Line.h b/MeshLib/Elements/Line.h index 5616c32120a..392e3061be1 100644 --- a/MeshLib/Elements/Line.h +++ b/MeshLib/Elements/Line.h @@ -19,6 +19,9 @@ #include "LineRule2.h" #include "LineRule3.h" +extern template class MeshLib::TemplateElement<MeshLib::LineRule2>; +extern template class MeshLib::TemplateElement<MeshLib::LineRule3>; + namespace MeshLib { typedef TemplateElement<LineRule2> Line; diff --git a/MeshLib/Elements/Prism.h b/MeshLib/Elements/Prism.h index 037f75200b0..82f8b23e001 100644 --- a/MeshLib/Elements/Prism.h +++ b/MeshLib/Elements/Prism.h @@ -19,6 +19,9 @@ #include "PrismRule6.h" #include "PrismRule15.h" +extern template class MeshLib::TemplateElement<MeshLib::PrismRule15>; +extern template class MeshLib::TemplateElement<MeshLib::PrismRule6>; + namespace MeshLib { typedef TemplateElement<PrismRule6> Prism; diff --git a/MeshLib/Elements/Pyramid.h b/MeshLib/Elements/Pyramid.h index d4e1628bc6a..a2653d6eb87 100644 --- a/MeshLib/Elements/Pyramid.h +++ b/MeshLib/Elements/Pyramid.h @@ -19,6 +19,9 @@ #include "PyramidRule5.h" #include "PyramidRule13.h" +extern template class MeshLib::TemplateElement<MeshLib::PyramidRule13>; +extern template class MeshLib::TemplateElement<MeshLib::PyramidRule5>; + namespace MeshLib { typedef TemplateElement<PyramidRule5> Pyramid; diff --git a/MeshLib/Elements/Quad.h b/MeshLib/Elements/Quad.h index c8bdb1d05da..750a436c3f6 100644 --- a/MeshLib/Elements/Quad.h +++ b/MeshLib/Elements/Quad.h @@ -20,6 +20,10 @@ #include "QuadRule8.h" #include "QuadRule9.h" +extern template class MeshLib::TemplateElement<MeshLib::QuadRule4>; +extern template class MeshLib::TemplateElement<MeshLib::QuadRule8>; +extern template class MeshLib::TemplateElement<MeshLib::QuadRule9>; + namespace MeshLib { diff --git a/MeshLib/Elements/TemplateElement.cpp b/MeshLib/Elements/TemplateElement.cpp new file mode 100644 index 00000000000..134775fb3c5 --- /dev/null +++ b/MeshLib/Elements/TemplateElement.cpp @@ -0,0 +1,34 @@ +/** + * \copyright + * Copyright (c) 2012-2015, OpenGeoSys Community (http://www.opengeosys.org) + * Distributed under a Modified BSD License. + * See accompanying file LICENSE.txt or + * http://www.opengeosys.org/project/license + * + */ + +#include "TemplateElement.h" + +#include "MeshLib/Elements/Hex.h" +#include "MeshLib/Elements/Line.h" +#include "MeshLib/Elements/Prism.h" +#include "MeshLib/Elements/Pyramid.h" +#include "MeshLib/Elements/Quad.h" +#include "MeshLib/Elements/Tet.h" +#include "MeshLib/Elements/Tri.h" + +template class MeshLib::TemplateElement<MeshLib::HexRule20 >; +template class MeshLib::TemplateElement<MeshLib::HexRule8 >; +template class MeshLib::TemplateElement<MeshLib::LineRule2 >; +template class MeshLib::TemplateElement<MeshLib::LineRule3 >; +template class MeshLib::TemplateElement<MeshLib::PrismRule15 >; +template class MeshLib::TemplateElement<MeshLib::PrismRule6 >; +template class MeshLib::TemplateElement<MeshLib::PyramidRule13>; +template class MeshLib::TemplateElement<MeshLib::PyramidRule5 >; +template class MeshLib::TemplateElement<MeshLib::QuadRule4 >; +template class MeshLib::TemplateElement<MeshLib::QuadRule8 >; +template class MeshLib::TemplateElement<MeshLib::QuadRule9 >; +template class MeshLib::TemplateElement<MeshLib::TetRule10 >; +template class MeshLib::TemplateElement<MeshLib::TetRule4 >; +template class MeshLib::TemplateElement<MeshLib::TriRule3 >; +template class MeshLib::TemplateElement<MeshLib::TriRule6 >; diff --git a/MeshLib/Elements/Tet.h b/MeshLib/Elements/Tet.h index f8fd7b598d2..ad55b78c707 100644 --- a/MeshLib/Elements/Tet.h +++ b/MeshLib/Elements/Tet.h @@ -19,6 +19,9 @@ #include "TetRule4.h" #include "TetRule10.h" +extern template class MeshLib::TemplateElement<MeshLib::TetRule10>; +extern template class MeshLib::TemplateElement<MeshLib::TetRule4>; + namespace MeshLib { typedef TemplateElement<TetRule4> Tet; diff --git a/MeshLib/Elements/Tri.h b/MeshLib/Elements/Tri.h index 80ea9c6e449..7bfc72ba7b6 100644 --- a/MeshLib/Elements/Tri.h +++ b/MeshLib/Elements/Tri.h @@ -19,6 +19,10 @@ #include "TriRule3.h" #include "TriRule6.h" + +extern template class MeshLib::TemplateElement<MeshLib::TriRule3>; +extern template class MeshLib::TemplateElement<MeshLib::TriRule6>; + namespace MeshLib { typedef TemplateElement<TriRule3> Tri; -- GitLab