diff options
author | Pedro Alves <pedro@palves.net> | 2022-04-08 20:03:46 +0100 |
---|---|---|
committer | Pedro Alves <pedro@palves.net> | 2022-04-13 10:24:38 +0100 |
commit | 50b032ebc0519a2b2585c499b9901fde9a0eccee (patch) | |
tree | 746b62d1507d5057380757dfdab6dedfe79604fd /gdbsupport | |
parent | d095eb4e877edb901e56546e29ac24da0bec346b (diff) | |
download | binutils-50b032ebc0519a2b2585c499b9901fde9a0eccee.zip binutils-50b032ebc0519a2b2585c499b9901fde9a0eccee.tar.gz binutils-50b032ebc0519a2b2585c499b9901fde9a0eccee.tar.bz2 |
Make intrusive_list_node's next/prev private
Tromey noticed that intrusive_list_node leaves its data members
public, which seems sub-optimal.
This commit makes intrusive_list_node's data fields private.
intrusive_list_iterator, intrusive_list_reverse_iterator, and
intrusive_list do need to access the fields, so they are made friends.
Change-Id: Ia8b306b40344cc218d423c8dfb8355207a612ac5
Diffstat (limited to 'gdbsupport')
-rw-r--r-- | gdbsupport/intrusive_list.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/gdbsupport/intrusive_list.h b/gdbsupport/intrusive_list.h index 77eeeee..6812266 100644 --- a/gdbsupport/intrusive_list.h +++ b/gdbsupport/intrusive_list.h @@ -24,15 +24,26 @@ /* A list node. The elements put in an intrusive_list either inherit from this, or have a field of this type. */ template<typename T> -struct intrusive_list_node +class intrusive_list_node { +public: bool is_linked () const { return next != INTRUSIVE_LIST_UNLINKED_VALUE; } +private: T *next = INTRUSIVE_LIST_UNLINKED_VALUE; T *prev = INTRUSIVE_LIST_UNLINKED_VALUE; + + template<typename T2, typename AsNode> + friend struct intrusive_list_iterator; + + template<typename T2, typename AsNode> + friend struct intrusive_list_reverse_iterator; + + template<typename T2, typename AsNode> + friend struct intrusive_list; }; /* Follows a couple types used by intrusive_list as template parameter to find |