libUTL++
SlistNode.h
1 #pragma once
2 
4 
5 #include <libutl/MaxObject.h>
6 
8 
9 UTL_NS_BEGIN;
10 
12 
24 
26 class SlistNode
27 {
28 public:
33  {
34  init();
35  }
36 
41  SlistNode(const Object* object)
42  {
43  init(object);
44  }
45 
47  void addAfter(SlistNode* node);
48 
50  void addBefore(SlistNode* node);
51 
53  Object*
54  get() const
55  {
56  return _object;
57  }
58 
60  bool
61  isTail() const
62  {
63  return (_next == nullptr);
64  }
65 
67  bool
69  {
70  return (_object == &maxObject);
71  }
72 
74  SlistNode*
75  next() const
76  {
77  return _next;
78  }
79 
81  void
83  {
84  _next = node;
85  }
86 
92  SlistNode* remove(SlistNode* prev = nullptr);
93 
95  void
96  set(const Object* object)
97  {
98  _object = const_cast<Object*>(object);
99  }
100 
101 private:
102  void
103  init(const Object* object = nullptr)
104  {
105  _next = nullptr;
106  _object = const_cast<Object*>(object);
107  }
108 
109 private:
110  SlistNode* _next;
111  Object* _object;
112 };
113 
115 
116 UTL_NS_END;
const MaxObject maxObject
Global instance of MaxObject.
SlistNode * next() const
Get the next node (= self if self is tail node).
Definition: SlistNode.h:75
void setNext(SlistNode *node)
Set the next node.
Definition: SlistNode.h:82
bool isTail() const
Determine whether self is the tail node.
Definition: SlistNode.h:61
bool isSentinelTail() const
Determine whether self is a "sentinal" tail node.
Definition: SlistNode.h:68
SlistNode(const Object *object)
Constructor.
Definition: SlistNode.h:41
Singly-linked list node.
Definition: SlistNode.h:26
SlistNode()
Constructor.
Definition: SlistNode.h:32
Root of UTL++ class hierarchy.
Definition: Object.h:52
void init()
Initialize UTL++.