diff --git a/src/core/backbone_router/ndproxy_table.hpp b/src/core/backbone_router/ndproxy_table.hpp index 097a6d3a3..f13712b92 100644 --- a/src/core/backbone_router/ndproxy_table.hpp +++ b/src/core/backbone_router/ndproxy_table.hpp @@ -65,6 +65,7 @@ public: class NdProxy : private Clearable { friend class NdProxyTable; + friend class Clearable; public: /** diff --git a/src/core/border_router/routing_manager.hpp b/src/core/border_router/routing_manager.hpp index 880032065..1524deac3 100644 --- a/src/core/border_router/routing_manager.hpp +++ b/src/core/border_router/routing_manager.hpp @@ -433,6 +433,7 @@ private: class Entry : public LinkedListEntry, public Unequatable, private Clearable { friend class LinkedListEntry; + friend class Clearable; public: enum Type : uint8_t diff --git a/src/core/common/clearable.hpp b/src/core/common/clearable.hpp index 2cef0918e..b47bb1960 100644 --- a/src/core/common/clearable.hpp +++ b/src/core/common/clearable.hpp @@ -41,7 +41,7 @@ namespace ot { /** - * This template class defines a Clearable object which provides `Clear()` method. + * This template class defines a `Clearable` object which provides `Clear()` method. * * The `Clear` implementation simply sets all the bytes of a `Type` instance to zero. * @@ -52,7 +52,7 @@ namespace ot { template class Clearable { public: - void Clear(void) { memset(reinterpret_cast(this), 0, sizeof(Type)); } + void Clear(void) { memset(reinterpret_cast(static_cast(this)), 0, sizeof(Type)); } }; } // namespace ot diff --git a/src/core/common/message.hpp b/src/core/common/message.hpp index bb789a449..09c2fff80 100644 --- a/src/core/common/message.hpp +++ b/src/core/common/message.hpp @@ -1506,6 +1506,7 @@ class PriorityQueue : private Clearable friend class Message; friend class MessageQueue; friend class MessagePool; + friend class Clearable; public: typedef otMessageQueueInfo Info; ///< This struct represents info (number of messages/buffers) about a queue. diff --git a/src/core/common/settings.hpp b/src/core/common/settings.hpp index 1ed18c1a5..7f57fed5e 100644 --- a/src/core/common/settings.hpp +++ b/src/core/common/settings.hpp @@ -133,6 +133,7 @@ public: class NetworkInfo : private Clearable { friend class Settings; + friend class Clearable; public: static constexpr Key kKey = kKeyNetworkInfo; ///< The associated key. @@ -339,6 +340,7 @@ public: class ParentInfo : private Clearable { friend class Settings; + friend class Clearable; public: static constexpr Key kKey = kKeyParentInfo; ///< The associated key. @@ -532,6 +534,7 @@ public: class DadInfo : private Clearable { friend class Settings; + friend class Clearable; public: static constexpr Key kKey = kKeyDadInfo; ///< The associated key. @@ -607,6 +610,7 @@ public: class SrpClientInfo : private Clearable { friend class Settings; + friend class Clearable; public: static constexpr Key kKey = kKeySrpClientInfo; ///< The associated key. @@ -667,6 +671,7 @@ public: class SrpServerInfo : private Clearable { friend class Settings; + friend class Clearable; public: static constexpr Key kKey = kKeySrpServerInfo; ///< The associated key. diff --git a/src/core/net/ip6.hpp b/src/core/net/ip6.hpp index 34e63c37f..860b267c2 100644 --- a/src/core/net/ip6.hpp +++ b/src/core/net/ip6.hpp @@ -416,6 +416,8 @@ private: */ class Headers : private Clearable { + friend class Clearable; + public: /** * This method parses the IPv6 and UDP/TCP/ICMP6 headers from a given message. diff --git a/src/core/net/nd6.hpp b/src/core/net/nd6.hpp index 0ec6146da..21b29c2a8 100644 --- a/src/core/net/nd6.hpp +++ b/src/core/net/nd6.hpp @@ -175,6 +175,8 @@ private: OT_TOOL_PACKED_BEGIN class PrefixInfoOption : public Option, private Clearable { + friend class Clearable; + public: static constexpr Type kType = kTypePrefixInfo; ///< Prefix Information Option Type. @@ -330,6 +332,8 @@ static_assert(sizeof(PrefixInfoOption) == 32, "invalid PrefixInfoOption structur OT_TOOL_PACKED_BEGIN class RouteInfoOption : public Option, private Clearable { + friend class Clearable; + public: static constexpr uint16_t kMinSize = kLengthUnit; ///< Minimum size (in bytes) of a Route Info Option static constexpr Type kType = kTypeRouteInfo; ///< Route Information Option Type. @@ -470,6 +474,8 @@ public: OT_TOOL_PACKED_BEGIN class Header : public Equatable
, private Clearable
{ + friend class Clearable
; + public: /** * This constructor initializes the Router Advertisement message with diff --git a/src/core/net/srp_client.hpp b/src/core/net/srp_client.hpp index bb9149051..2fa2df25a 100644 --- a/src/core/net/srp_client.hpp +++ b/src/core/net/srp_client.hpp @@ -106,6 +106,7 @@ public: class HostInfo : public otSrpClientHostInfo, private Clearable { friend class Client; + friend class Clearable; public: /** @@ -890,7 +891,7 @@ private: }; #if OPENTHREAD_CONFIG_SRP_CLIENT_AUTO_START_API_ENABLE - class AutoStart : Clearable + class AutoStart : public Clearable { public: enum State : uint8_t{