From 49611b7f4481ebebdbfad18419c911c4faf2cb49 Mon Sep 17 00:00:00 2001 From: Mat Sutcliffe Date: Fri, 6 Nov 2020 18:26:17 +0000 Subject: [PATCH] Issue #77 Explicit template instantiations needed by Clang on Windows --- src/blackmisc/audio/registermetadataaudio.cpp | 9 ++++++ .../aviation/registermetadataaviation.cpp | 27 +++++++++++++++++ src/blackmisc/db/registermetadatadb.cpp | 13 +++++++++ src/blackmisc/geo/registermetadatageo.cpp | 9 ++++++ src/blackmisc/input/registermetadatainput.cpp | 13 +++++++++ .../network/registermetadatanetwork.cpp | 29 ++++++++++++++++++- src/blackmisc/registermetadata.cpp | 23 +++++++++++++++ .../simulation/registermetadatasimulation.cpp | 23 +++++++++++++++ .../weather/registermetadataweather.cpp | 21 ++++++++++++++ 9 files changed, 166 insertions(+), 1 deletion(-) diff --git a/src/blackmisc/audio/registermetadataaudio.cpp b/src/blackmisc/audio/registermetadataaudio.cpp index 6eb49df90..9947d22cc 100644 --- a/src/blackmisc/audio/registermetadataaudio.cpp +++ b/src/blackmisc/audio/registermetadataaudio.cpp @@ -32,5 +32,14 @@ namespace BlackMisc qRegisterMetaTypeStreamOperators(); qRegisterMetaTypeStreamOperators(); } + } + +#if defined(Q_OS_WIN) && defined(Q_CC_CLANG) + namespace Private + { + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert>(int); } // ns +#endif + } // ns diff --git a/src/blackmisc/aviation/registermetadataaviation.cpp b/src/blackmisc/aviation/registermetadataaviation.cpp index 0345f35c2..988ada487 100644 --- a/src/blackmisc/aviation/registermetadataaviation.cpp +++ b/src/blackmisc/aviation/registermetadataaviation.cpp @@ -53,5 +53,32 @@ namespace BlackMisc CTrack::registerMetadata(); CTransponder::registerMetadata(); } + } + +#if defined(Q_OS_WIN) && defined(Q_CC_CLANG) + namespace Private + { + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); } // ns +#endif + } // ns diff --git a/src/blackmisc/db/registermetadatadb.cpp b/src/blackmisc/db/registermetadatadb.cpp index 61ae23260..99f12d2e4 100644 --- a/src/blackmisc/db/registermetadatadb.cpp +++ b/src/blackmisc/db/registermetadatadb.cpp @@ -25,5 +25,18 @@ namespace BlackMisc CDistributionList::registerMetadata(); CUpdateInfo::registerMetadata(); } + } + +#if defined(Q_OS_WIN) && defined(Q_CC_CLANG) + namespace Private + { + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); } // ns +#endif + } // ns diff --git a/src/blackmisc/geo/registermetadatageo.cpp b/src/blackmisc/geo/registermetadatageo.cpp index 38b7201b6..fd5794f9a 100644 --- a/src/blackmisc/geo/registermetadatageo.cpp +++ b/src/blackmisc/geo/registermetadatageo.cpp @@ -22,5 +22,14 @@ namespace BlackMisc CLongitude::registerMetadata(); CElevationPlane::registerMetadata(); } + } + +#if defined(Q_OS_WIN) && defined(Q_CC_CLANG) + namespace Private + { + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert>(int); } // ns +#endif + } // ns diff --git a/src/blackmisc/input/registermetadatainput.cpp b/src/blackmisc/input/registermetadatainput.cpp index e5355508c..95e39caac 100644 --- a/src/blackmisc/input/registermetadatainput.cpp +++ b/src/blackmisc/input/registermetadatainput.cpp @@ -28,5 +28,18 @@ namespace BlackMisc qDBusRegisterMetaType(); qRegisterMetaTypeStreamOperators(); } + } + +#if defined(Q_OS_WIN) && defined(Q_CC_CLANG) + namespace Private + { + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); } // ns +#endif + } // ns diff --git a/src/blackmisc/network/registermetadatanetwork.cpp b/src/blackmisc/network/registermetadatanetwork.cpp index 8b73c6e9b..8dc714a15 100644 --- a/src/blackmisc/network/registermetadatanetwork.cpp +++ b/src/blackmisc/network/registermetadatanetwork.cpp @@ -49,7 +49,34 @@ namespace BlackMisc CUserList::registerMetadata(); CVoiceCapabilities::registerMetadata(); Settings::CNetworkSettings::registerMetadata(); - } + } + +#if defined(Q_OS_WIN) && defined(Q_CC_CLANG) + namespace Private + { + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); } // ns +#endif + } // ns diff --git a/src/blackmisc/registermetadata.cpp b/src/blackmisc/registermetadata.cpp index bcede8f6d..d30fc47fb 100644 --- a/src/blackmisc/registermetadata.cpp +++ b/src/blackmisc/registermetadata.cpp @@ -107,4 +107,27 @@ namespace BlackMisc qDBusRegisterMetaType>(); qRegisterMetaTypeStreamOperators>(); } + +#if defined(Q_OS_WIN) && defined(Q_CC_CLANG) + namespace Private + { + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + } +#endif + } // ns diff --git a/src/blackmisc/simulation/registermetadatasimulation.cpp b/src/blackmisc/simulation/registermetadatasimulation.cpp index 50af1f3b3..48ce75443 100644 --- a/src/blackmisc/simulation/registermetadatasimulation.cpp +++ b/src/blackmisc/simulation/registermetadatasimulation.cpp @@ -83,5 +83,28 @@ namespace BlackMisc qRegisterMetaTypeStreamOperators(); qRegisterMetaTypeStreamOperators(); } + } + +#if defined(Q_OS_WIN) && defined(Q_CC_CLANG) + namespace Private + { + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); } // ns +#endif + } // ns diff --git a/src/blackmisc/weather/registermetadataweather.cpp b/src/blackmisc/weather/registermetadataweather.cpp index 9a26a4c56..f1fbbe225 100644 --- a/src/blackmisc/weather/registermetadataweather.cpp +++ b/src/blackmisc/weather/registermetadataweather.cpp @@ -35,5 +35,26 @@ namespace BlackMisc CWindLayer::registerMetadata(); CWindLayerList::registerMetadata(); } + } + +#if defined(Q_OS_WIN) && defined(Q_CC_CLANG) + namespace Private + { + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); + template void maybeRegisterMetaListConvert>(int); } // ns +#endif + } // ns