From 759f161182258bd731dd633e58e060f8953f2d87 Mon Sep 17 00:00:00 2001 From: Mirko Bonadei Date: Wed, 13 Nov 2019 11:18:31 +0100 Subject: [PATCH] Use explicit template decl/def for RTCNonStandardStatsMember. This should fix the error raised by lld-link while testing the WebRTC component build (see [1]). [1] - https://ci.chromium.org/p/chromium/builders/try/win_chromium_compile_dbg_ng/436729 Bug: webrtc:9419 Change-Id: Ia239f544432c55ae69e2da474b8284143c94a003 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159697 Reviewed-by: Karl Wiberg Commit-Queue: Mirko Bonadei Cr-Commit-Position: refs/heads/master@{#29786} --- api/stats/rtc_stats.h | 36 +++++++++++++++++++++++++++++++++--- stats/rtc_stats.cc | 29 +++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 3 deletions(-) diff --git a/api/stats/rtc_stats.h b/api/stats/rtc_stats.h index 044fadab51..5f5bb41658 100644 --- a/api/stats/rtc_stats.h +++ b/api/stats/rtc_stats.h @@ -387,7 +387,7 @@ WEBRTC_DECLARE_RTCSTATSMEMBER(std::vector); // Using inheritance just so that it's obvious from the member's declaration // whether it's standardized or not. template -class RTC_EXPORT RTCNonStandardStatsMember : public RTCStatsMember { +class RTCNonStandardStatsMember : public RTCStatsMember { public: explicit RTCNonStandardStatsMember(const char* name) : RTCStatsMember(name) {} @@ -401,8 +401,8 @@ class RTC_EXPORT RTCNonStandardStatsMember : public RTCStatsMember { explicit RTCNonStandardStatsMember(const RTCNonStandardStatsMember& other) : RTCStatsMember(other), group_ids_(other.group_ids_) {} explicit RTCNonStandardStatsMember(RTCNonStandardStatsMember&& other) - : group_ids_(std::move(other.group_ids_)), - RTCStatsMember(std::move(other)) {} + : RTCStatsMember(std::move(other)), + group_ids_(std::move(other.group_ids_)) {} bool is_standardized() const override { return false; } @@ -418,6 +418,36 @@ class RTC_EXPORT RTCNonStandardStatsMember : public RTCStatsMember { private: std::vector group_ids_; }; + +extern template class RTC_EXPORT_TEMPLATE_DECLARE(RTC_EXPORT) + RTCNonStandardStatsMember; +extern template class RTC_EXPORT_TEMPLATE_DECLARE(RTC_EXPORT) + RTCNonStandardStatsMember; +extern template class RTC_EXPORT_TEMPLATE_DECLARE(RTC_EXPORT) + RTCNonStandardStatsMember; +extern template class RTC_EXPORT_TEMPLATE_DECLARE(RTC_EXPORT) + RTCNonStandardStatsMember; +extern template class RTC_EXPORT_TEMPLATE_DECLARE(RTC_EXPORT) + RTCNonStandardStatsMember; +extern template class RTC_EXPORT_TEMPLATE_DECLARE(RTC_EXPORT) + RTCNonStandardStatsMember; +extern template class RTC_EXPORT_TEMPLATE_DECLARE(RTC_EXPORT) + RTCNonStandardStatsMember; +extern template class RTC_EXPORT_TEMPLATE_DECLARE(RTC_EXPORT) + RTCNonStandardStatsMember>; +extern template class RTC_EXPORT_TEMPLATE_DECLARE(RTC_EXPORT) + RTCNonStandardStatsMember>; +extern template class RTC_EXPORT_TEMPLATE_DECLARE(RTC_EXPORT) + RTCNonStandardStatsMember>; +extern template class RTC_EXPORT_TEMPLATE_DECLARE(RTC_EXPORT) + RTCNonStandardStatsMember>; +extern template class RTC_EXPORT_TEMPLATE_DECLARE(RTC_EXPORT) + RTCNonStandardStatsMember>; +extern template class RTC_EXPORT_TEMPLATE_DECLARE(RTC_EXPORT) + RTCNonStandardStatsMember>; +extern template class RTC_EXPORT_TEMPLATE_DECLARE(RTC_EXPORT) + RTCNonStandardStatsMember>; + } // namespace webrtc #endif // API_STATS_RTC_STATS_H_ diff --git a/stats/rtc_stats.cc b/stats/rtc_stats.cc index 92f64e4654..d0a86531ed 100644 --- a/stats/rtc_stats.cc +++ b/stats/rtc_stats.cc @@ -231,4 +231,33 @@ WEBRTC_DEFINE_RTCSTATSMEMBER(std::vector, VectorOfStringsToString(value_), VectorOfStringsToString(value_)); +template class RTC_EXPORT_TEMPLATE_DEFINE(RTC_EXPORT) + RTCNonStandardStatsMember; +template class RTC_EXPORT_TEMPLATE_DEFINE(RTC_EXPORT) + RTCNonStandardStatsMember; +template class RTC_EXPORT_TEMPLATE_DEFINE(RTC_EXPORT) + RTCNonStandardStatsMember; +template class RTC_EXPORT_TEMPLATE_DEFINE(RTC_EXPORT) + RTCNonStandardStatsMember; +template class RTC_EXPORT_TEMPLATE_DEFINE(RTC_EXPORT) + RTCNonStandardStatsMember; +template class RTC_EXPORT_TEMPLATE_DEFINE(RTC_EXPORT) + RTCNonStandardStatsMember; +template class RTC_EXPORT_TEMPLATE_DEFINE(RTC_EXPORT) + RTCNonStandardStatsMember; +template class RTC_EXPORT_TEMPLATE_DEFINE(RTC_EXPORT) + RTCNonStandardStatsMember>; +template class RTC_EXPORT_TEMPLATE_DEFINE(RTC_EXPORT) + RTCNonStandardStatsMember>; +template class RTC_EXPORT_TEMPLATE_DEFINE(RTC_EXPORT) + RTCNonStandardStatsMember>; +template class RTC_EXPORT_TEMPLATE_DEFINE(RTC_EXPORT) + RTCNonStandardStatsMember>; +template class RTC_EXPORT_TEMPLATE_DEFINE(RTC_EXPORT) + RTCNonStandardStatsMember>; +template class RTC_EXPORT_TEMPLATE_DEFINE(RTC_EXPORT) + RTCNonStandardStatsMember>; +template class RTC_EXPORT_TEMPLATE_DEFINE(RTC_EXPORT) + RTCNonStandardStatsMember>; + } // namespace webrtc