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
|
/* A list node. The elements put in an intrusive_list either inherit
|
||||||
from this, or have a field of this type. */
|
from this, or have a field of this type. */
|
||||||
template<typename T>
|
template<typename T>
|
||||||
struct intrusive_list_node
|
class intrusive_list_node
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
bool is_linked () const
|
bool is_linked () const
|
||||||
{
|
{
|
||||||
return next != INTRUSIVE_LIST_UNLINKED_VALUE;
|
return next != INTRUSIVE_LIST_UNLINKED_VALUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
T *next = INTRUSIVE_LIST_UNLINKED_VALUE;
|
T *next = INTRUSIVE_LIST_UNLINKED_VALUE;
|
||||||
T *prev = 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
|
/* Follows a couple types used by intrusive_list as template parameter to find
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue