From cfc622c92c98cdc3663e9bd31a38a5d3f1d57893 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Wed, 30 Nov 2016 10:42:08 +0100 Subject: [PATCH] Math: explicitly instantiate commonly used Range debug operators. Might save some executable bloat. Not sure why this wasn't done already. --- src/Magnum/Math/Range.h | 13 +++++++++++++ src/Magnum/Math/instantiation.cpp | 10 ++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/Magnum/Math/Range.h b/src/Magnum/Math/Range.h index b071249b4..b69a68715 100644 --- a/src/Magnum/Math/Range.h +++ b/src/Magnum/Math/Range.h @@ -555,6 +555,19 @@ template Corrade::Utility::Debug& operator<<(Co return debug << Corrade::Utility::Debug::nospace << "})"; } +/* Explicit instantiation for commonly used types */ +#ifndef DOXYGEN_GENERATING_OUTPUT +extern template MAGNUM_EXPORT Corrade::Utility::Debug& operator<<(Corrade::Utility::Debug&, const Range<1, Float>&); +extern template MAGNUM_EXPORT Corrade::Utility::Debug& operator<<(Corrade::Utility::Debug&, const Range<2, Float>&); +extern template MAGNUM_EXPORT Corrade::Utility::Debug& operator<<(Corrade::Utility::Debug&, const Range<3, Float>&); +extern template MAGNUM_EXPORT Corrade::Utility::Debug& operator<<(Corrade::Utility::Debug&, const Range<1, Int>&); +extern template MAGNUM_EXPORT Corrade::Utility::Debug& operator<<(Corrade::Utility::Debug&, const Range<2, Int>&); +extern template MAGNUM_EXPORT Corrade::Utility::Debug& operator<<(Corrade::Utility::Debug&, const Range<3, Int>&); +extern template MAGNUM_EXPORT Corrade::Utility::Debug& operator<<(Corrade::Utility::Debug&, const Range<1, Double>&); +extern template MAGNUM_EXPORT Corrade::Utility::Debug& operator<<(Corrade::Utility::Debug&, const Range<2, Double>&); +extern template MAGNUM_EXPORT Corrade::Utility::Debug& operator<<(Corrade::Utility::Debug&, const Range<3, Double>&); +#endif + template Range Range::translated(const VectorType& vector) const { return {_min + vector, _max + vector}; } diff --git a/src/Magnum/Math/instantiation.cpp b/src/Magnum/Math/instantiation.cpp index 483f138fa..2516b8bcb 100644 --- a/src/Magnum/Math/instantiation.cpp +++ b/src/Magnum/Math/instantiation.cpp @@ -178,6 +178,16 @@ template Corrade::Utility::Debug& operator<<(Corrade::Utility::Debug&, const Vec template Corrade::Utility::Debug& operator<<(Corrade::Utility::Debug&, const Vector<2, Double>&); template Corrade::Utility::Debug& operator<<(Corrade::Utility::Debug&, const Vector<3, Double>&); template Corrade::Utility::Debug& operator<<(Corrade::Utility::Debug&, const Vector<4, Double>&); + +template Corrade::Utility::Debug& operator<<(Corrade::Utility::Debug&, const Range<1, Float>&); +template Corrade::Utility::Debug& operator<<(Corrade::Utility::Debug&, const Range<2, Float>&); +template Corrade::Utility::Debug& operator<<(Corrade::Utility::Debug&, const Range<3, Float>&); +template Corrade::Utility::Debug& operator<<(Corrade::Utility::Debug&, const Range<1, Int>&); +template Corrade::Utility::Debug& operator<<(Corrade::Utility::Debug&, const Range<2, Int>&); +template Corrade::Utility::Debug& operator<<(Corrade::Utility::Debug&, const Range<3, Int>&); +template Corrade::Utility::Debug& operator<<(Corrade::Utility::Debug&, const Range<1, Double>&); +template Corrade::Utility::Debug& operator<<(Corrade::Utility::Debug&, const Range<2, Double>&); +template Corrade::Utility::Debug& operator<<(Corrade::Utility::Debug&, const Range<3, Double>&); #endif }}