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
This commit is contained in:
parent
d095eb4e87
commit
50b032ebc0
1 changed files with 12 additions and 1 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue