From f2268fadbc549c20c41163d495119765f3cf04a7 Mon Sep 17 00:00:00 2001 From: Yakun Xu Date: Sat, 14 Jul 2018 01:23:41 +0800 Subject: [PATCH] [core] inline instance getters (#2889) --- src/core/common/instance.cpp | 219 ---------------------------------- src/core/common/instance.hpp | 223 ++++++++++++++++++++++++++++++++++- 2 files changed, 222 insertions(+), 220 deletions(-) diff --git a/src/core/common/instance.cpp b/src/core/common/instance.cpp index 7adc21f99..47a4142ab 100644 --- a/src/core/common/instance.cpp +++ b/src/core/common/instance.cpp @@ -232,225 +232,6 @@ void Instance::InvokeEnergyScanCallback(otEnergyScanResult *aResult) const mEnergyScanCallback(aResult, mEnergyScanCallbackContext); } } - -// Specializations of the `Get()` method. - -template <> Notifier &Instance::Get(void) -{ - return GetNotifier(); -} - -template <> MeshForwarder &Instance::Get(void) -{ - return GetThreadNetif().GetMeshForwarder(); -} - -template <> Mle::Mle &Instance::Get(void) -{ - return GetThreadNetif().GetMle(); -} - -template <> Mle::MleRouter &Instance::Get(void) -{ - return GetThreadNetif().GetMle(); -} - -template <> ChildTable &Instance::Get(void) -{ - return GetThreadNetif().GetMle().GetChildTable(); -} - -template <> RouterTable &Instance::Get(void) -{ - return GetThreadNetif().GetMle().GetRouterTable(); -} - -template <> Ip6::Netif &Instance::Get(void) -{ - return GetThreadNetif(); -} - -template <> Ip6::Ip6 &Instance::Get(void) -{ - return GetIp6(); -} - -template <> Mac::Mac &Instance::Get(void) -{ - return GetThreadNetif().GetMac(); -} - -template <> KeyManager &Instance::Get(void) -{ - return GetThreadNetif().GetKeyManager(); -} - -#if OPENTHREAD_FTD -template <> AddressResolver &Instance::Get(void) -{ - return GetThreadNetif().GetAddressResolver(); -} - -template <> MeshCoP::Leader &Instance::Get(void) -{ - return GetThreadNetif().GetLeader(); -} - -template <> MeshCoP::JoinerRouter &Instance::Get(void) -{ - return GetThreadNetif().GetJoinerRouter(); -} -#endif // OPENTHREAD_FTD - -template <> AnnounceBeginServer &Instance::Get(void) -{ - return GetThreadNetif().GetAnnounceBeginServer(); -} - -template <> DataPollManager &Instance::Get(void) -{ - return GetThreadNetif().GetMeshForwarder().GetDataPollManager(); -} - -template <> EnergyScanServer &Instance::Get(void) -{ - return GetThreadNetif().GetEnergyScanServer(); -} - -template <> PanIdQueryServer &Instance::Get(void) -{ - return GetThreadNetif().GetPanIdQueryServer(); -} - -template <> NetworkData::Leader &Instance::Get(void) -{ - return GetThreadNetif().GetNetworkDataLeader(); -} - -template <> Ip6::Mpl &Instance::Get(void) -{ - return GetIp6().GetMpl(); -} - -template <> Coap::Coap &Instance::Get(void) -{ - return GetThreadNetif().GetCoap(); -} - -template <> MeshCoP::ActiveDataset &Instance::Get(void) -{ - return GetThreadNetif().GetActiveDataset(); -} - -template <> MeshCoP::PendingDataset &Instance::Get(void) -{ - return GetThreadNetif().GetPendingDataset(); -} - -#if OPENTHREAD_ENABLE_APPLICATION_COAP -template <> Coap::ApplicationCoap &Instance::Get(void) -{ - return GetApplicationCoap(); -} -#endif - -#if OPENTHREAD_ENABLE_COMMISSIONER && OPENTHREAD_FTD -template <> MeshCoP::Commissioner &Instance::Get(void) -{ - return GetThreadNetif().GetCommissioner(); -} -#endif - -#if OPENTHREAD_ENABLE_JOINER -template <> MeshCoP::Joiner &Instance::Get(void) -{ - return GetThreadNetif().GetJoiner(); -} -#endif - -#if OPENTHREAD_ENABLE_DNS_CLIENT -template <> Dns::Client &Instance::Get(void) -{ - return GetThreadNetif().GetDnsClient(); -} -#endif - -#if OPENTHREAD_ENABLE_DTLS -template <> MeshCoP::Dtls &Instance::Get(void) -{ - return GetThreadNetif().GetDtls(); -} - -template <> Coap::CoapSecure &Instance::Get(void) -{ - return GetThreadNetif().GetCoapSecure(); -} -#endif - -#if OPENTHREAD_ENABLE_DHCP6_CLIENT -template <> Dhcp6::Dhcp6Client &Instance::Get(void) -{ - return GetThreadNetif().GetDhcp6Client(); -} -#endif - -#if OPENTHREAD_ENABLE_JAM_DETECTION -template <> Utils::JamDetector &Instance::Get(void) -{ - return GetThreadNetif().GetJamDetector(); -} -#endif - -template <> Utils::ChildSupervisor &Instance::Get(void) -{ - return GetThreadNetif().GetChildSupervisor(); -} - -template <> Utils::SupervisionListener &Instance::Get(void) -{ - return GetThreadNetif().GetSupervisionListener(); -} - -#if OPENTHREAD_ENABLE_CHANNEL_MONITOR -template <> Utils::ChannelMonitor &Instance::Get(void) -{ - return GetChannelMonitor(); -} -#endif - -#if OPENTHREAD_ENABLE_CHANNEL_MANAGER -template <> Utils::ChannelManager &Instance::Get(void) -{ - return GetChannelManager(); -} -#endif - -#if OPENTHREAD_ENABLE_BORDER_AGENT -template <> MeshCoP::BorderAgent &Instance::Get(void) -{ - return mBorderAgent; -} -#endif - -#if OPENTHREAD_CONFIG_ENABLE_ANNOUNCE_SENDER -template <> AnnounceSender &Instance::Get(void) -{ - return GetAnnounceSender(); -} -#endif - #endif // OPENTHREAD_MTD || OPENTHREAD_FTD -#if OPENTHREAD_RADIO || OPENTHREAD_ENABLE_RAW_LINK_API -template <> LinkRaw &Instance::Get(void) -{ - return GetLinkRaw(); -} -#endif // OPENTHREAD_RADIO || OPENTHREAD_ENABLE_RAW_LINK_API - -template <> TaskletScheduler &Instance::Get(void) -{ - return GetTaskletScheduler(); -} - } // namespace ot diff --git a/src/core/common/instance.hpp b/src/core/common/instance.hpp index 76c92fc10..ef3c222f2 100644 --- a/src/core/common/instance.hpp +++ b/src/core/common/instance.hpp @@ -386,7 +386,7 @@ public: * @returns A reference to the `Type` object of the instance. * */ - template Type &Get(void); + template inline Type &Get(void); #if OPENTHREAD_RADIO || OPENTHREAD_ENABLE_RAW_LINK_API /** @@ -455,6 +455,227 @@ private: bool mIsInitialized; }; +// Specializations of the `Get()` method. + +#if OPENTHREAD_MTD || OPENTHREAD_FTD +template <> inline Notifier &Instance::Get(void) +{ + return GetNotifier(); +} + +template <> inline MeshForwarder &Instance::Get(void) +{ + return GetThreadNetif().GetMeshForwarder(); +} + +template <> inline Mle::Mle &Instance::Get(void) +{ + return GetThreadNetif().GetMle(); +} + +template <> inline Mle::MleRouter &Instance::Get(void) +{ + return GetThreadNetif().GetMle(); +} + +template <> inline ChildTable &Instance::Get(void) +{ + return GetThreadNetif().GetMle().GetChildTable(); +} + +template <> inline RouterTable &Instance::Get(void) +{ + return GetThreadNetif().GetMle().GetRouterTable(); +} + +template <> inline Ip6::Netif &Instance::Get(void) +{ + return GetThreadNetif(); +} + +template <> inline Ip6::Ip6 &Instance::Get(void) +{ + return GetIp6(); +} + +template <> inline Mac::Mac &Instance::Get(void) +{ + return GetThreadNetif().GetMac(); +} + +template <> inline KeyManager &Instance::Get(void) +{ + return GetThreadNetif().GetKeyManager(); +} + +#if OPENTHREAD_FTD +template <> inline AddressResolver &Instance::Get(void) +{ + return GetThreadNetif().GetAddressResolver(); +} + +template <> inline MeshCoP::Leader &Instance::Get(void) +{ + return GetThreadNetif().GetLeader(); +} + +template <> inline MeshCoP::JoinerRouter &Instance::Get(void) +{ + return GetThreadNetif().GetJoinerRouter(); +} +#endif // OPENTHREAD_FTD + +template <> inline AnnounceBeginServer &Instance::Get(void) +{ + return GetThreadNetif().GetAnnounceBeginServer(); +} + +template <> inline DataPollManager &Instance::Get(void) +{ + return GetThreadNetif().GetMeshForwarder().GetDataPollManager(); +} + +template <> inline EnergyScanServer &Instance::Get(void) +{ + return GetThreadNetif().GetEnergyScanServer(); +} + +template <> inline PanIdQueryServer &Instance::Get(void) +{ + return GetThreadNetif().GetPanIdQueryServer(); +} + +template <> inline NetworkData::Leader &Instance::Get(void) +{ + return GetThreadNetif().GetNetworkDataLeader(); +} + +template <> inline Ip6::Mpl &Instance::Get(void) +{ + return GetIp6().GetMpl(); +} + +template <> inline Coap::Coap &Instance::Get(void) +{ + return GetThreadNetif().GetCoap(); +} + +template <> inline MeshCoP::ActiveDataset &Instance::Get(void) +{ + return GetThreadNetif().GetActiveDataset(); +} + +template <> inline MeshCoP::PendingDataset &Instance::Get(void) +{ + return GetThreadNetif().GetPendingDataset(); +} + +#if OPENTHREAD_ENABLE_APPLICATION_COAP +template <> inline Coap::ApplicationCoap &Instance::Get(void) +{ + return GetApplicationCoap(); +} +#endif + +#if OPENTHREAD_ENABLE_COMMISSIONER && OPENTHREAD_FTD +template <> inline MeshCoP::Commissioner &Instance::Get(void) +{ + return GetThreadNetif().GetCommissioner(); +} +#endif + +#if OPENTHREAD_ENABLE_JOINER +template <> inline MeshCoP::Joiner &Instance::Get(void) +{ + return GetThreadNetif().GetJoiner(); +} +#endif + +#if OPENTHREAD_ENABLE_DNS_CLIENT +template <> inline Dns::Client &Instance::Get(void) +{ + return GetThreadNetif().GetDnsClient(); +} +#endif + +#if OPENTHREAD_ENABLE_DTLS +template <> inline MeshCoP::Dtls &Instance::Get(void) +{ + return GetThreadNetif().GetDtls(); +} + +template <> inline Coap::CoapSecure &Instance::Get(void) +{ + return GetThreadNetif().GetCoapSecure(); +} +#endif + +#if OPENTHREAD_ENABLE_DHCP6_CLIENT +template <> inline Dhcp6::Dhcp6Client &Instance::Get(void) +{ + return GetThreadNetif().GetDhcp6Client(); +} +#endif + +#if OPENTHREAD_ENABLE_JAM_DETECTION +template <> inline Utils::JamDetector &Instance::Get(void) +{ + return GetThreadNetif().GetJamDetector(); +} +#endif + +template <> inline Utils::ChildSupervisor &Instance::Get(void) +{ + return GetThreadNetif().GetChildSupervisor(); +} + +template <> inline Utils::SupervisionListener &Instance::Get(void) +{ + return GetThreadNetif().GetSupervisionListener(); +} + +#if OPENTHREAD_ENABLE_CHANNEL_MONITOR +template <> inline Utils::ChannelMonitor &Instance::Get(void) +{ + return GetChannelMonitor(); +} +#endif + +#if OPENTHREAD_ENABLE_CHANNEL_MANAGER +template <> inline Utils::ChannelManager &Instance::Get(void) +{ + return GetChannelManager(); +} +#endif + +#if OPENTHREAD_ENABLE_BORDER_AGENT +template <> inline MeshCoP::BorderAgent &Instance::Get(void) +{ + return mBorderAgent; +} +#endif + +#if OPENTHREAD_CONFIG_ENABLE_ANNOUNCE_SENDER +template <> inline AnnounceSender &Instance::Get(void) +{ + return GetAnnounceSender(); +} +#endif + +#endif // OPENTHREAD_MTD || OPENTHREAD_FTD + +#if OPENTHREAD_RADIO || OPENTHREAD_ENABLE_RAW_LINK_API +template <> inline LinkRaw &Instance::Get(void) +{ + return GetLinkRaw(); +} +#endif // OPENTHREAD_RADIO || OPENTHREAD_ENABLE_RAW_LINK_API + +template <> inline TaskletScheduler &Instance::Get(void) +{ + return GetTaskletScheduler(); +} + /** * @} *