libUTL++
ListNode.h
1 #pragma once
2 
4 
5 #include <libutl/MaxObject.h>
6 
8 
9 UTL_NS_BEGIN;
10 
12 
26 
28 class ListNode
29 {
30 public:
35  {
36  init();
37  }
38 
43  ListNode(const Object* object)
44  {
45  init(object);
46  }
47 
49  void addAfter(ListNode* node);
50 
52  void addBefore(ListNode* node);
53 
55  Object*
56  get() const
57  {
58  return _object;
59  }
60 
62  bool
63  isHead() const
64  {
65  return (_prev == nullptr);
66  }
67 
69  bool
70  isTail() const
71  {
72  return (_next == nullptr);
73  }
74 
76  bool
78  {
79  return (_object == &maxObject);
80  }
81 
83  ListNode*
84  next() const
85  {
86  return _next;
87  }
88 
90  void
92  {
93  _next = node;
94  }
95 
97  ListNode*
98  prev() const
99  {
100  return _prev;
101  }
102 
104  void
106  {
107  _prev = prev;
108  }
109 
111  void remove();
112 
114  void
115  set(const Object* object)
116  {
117  _object = const_cast<Object*>(object);
118  }
119 
120 private:
121  void
122  init(const Object* object = nullptr)
123  {
124  _prev = _next = nullptr;
125  _object = const_cast<Object*>(object);
126  }
127 
128 private:
129  ListNode *_prev, *_next;
130  Object* _object;
131 };
132 
134 
135 UTL_NS_END;
List node.
Definition: ListNode.h:28
ListNode(const Object *object)
Constructor.
Definition: ListNode.h:43
bool isTail() const
Determine whether self is the tail node.
Definition: ListNode.h:70
ListNode()
Constructor.
Definition: ListNode.h:34
const MaxObject maxObject
Global instance of MaxObject.
void setNext(ListNode *node)
Set the next node.
Definition: ListNode.h:91
ListNode * prev() const
Get the previous node (= nullptr if self is head node).
Definition: ListNode.h:98
bool isSentinelTail() const
Determine whether self is a "sentinal" tail node.
Definition: ListNode.h:77
bool isHead() const
Determine whether self is the head node.
Definition: ListNode.h:63
ListNode * next() const
Get the next node (= self if self is tail node).
Definition: ListNode.h:84
Root of UTL++ class hierarchy.
Definition: Object.h:52
void init()
Initialize UTL++.
void setPrev(ListNode *prev)
Set the previous node.
Definition: ListNode.h:105