24 template <typename ThisValue>
38 inline void Type_::Clear() {
39 this->thisNodeArray[theFrontNodeIndex] = 0;
40 this->thisNodeArray[theBackNodeIndex] = 0;
44 inline typename Type_::Node * Type_::GetNode(NodeIndex
const theNodeIndex) {
45 return this->thisNodeArray[theNodeIndex];
49 inline typename Type_::Node
const * Type_::GetNode(NodeIndex
const theNodeIndex)
const {
50 return this->thisNodeArray[theNodeIndex];
54 inline bool Type_::IsEmpty()
const {
56 !this->thisNodeArray[theFrontNodeIndex] == !this->thisNodeArray[theBackNodeIndex]
58 return !this->thisNodeArray[theFrontNodeIndex];
62 inline void Type_::LinkNode(
63 NodeIndex
const theNodeIndex,
66 Node *
const theLinkedNode = this->thisNodeArray[theNodeIndex];
67 theNode.thisNodeArray[theNodeIndex] = 0;
68 theNode.thisNodeArray[!theNodeIndex] = theLinkedNode;
70 theLinkedNode->thisNodeArray[theNodeIndex] = &theNode;
73 !this->thisNodeArray[!theNodeIndex]
75 this->thisNodeArray[!theNodeIndex] = &theNode;
77 this->thisNodeArray[theNodeIndex] = &theNode;
81 inline void Type_::RelinkNode(
82 NodeIndex
const theNodeIndex,
86 Node *
const theNearNode = theNode.thisNodeArray[theNodeIndex]
88 Node *
const theFarNode = theNode.thisNodeArray[!theNodeIndex];
89 theNearNode->thisNodeArray[!theNodeIndex] = theFarNode;
91 theFarNode->thisNodeArray[theNodeIndex] = theNearNode;
94 this->thisNodeArray[!theNodeIndex] == &theNode
96 this->thisNodeArray[!theNodeIndex] = theNearNode;
107 inline void Type_::Swap(List & theList) {
109 this->thisNodeArray[theFrontNodeIndex],
110 theList.thisNodeArray[theFrontNodeIndex]
113 this->thisNodeArray[theBackNodeIndex],
114 theList.thisNodeArray[theBackNodeIndex]
119 inline typename Type_::Node * Type_::UnlinkNode(NodeIndex
const theNodeIndex) {
121 Node *
const theNode = this->thisNodeArray[theNodeIndex]
124 this->thisNodeArray[!theNodeIndex] &&
125 !theNode->thisNodeArray[theNodeIndex]
128 Node *
const theFarNode = theNode->thisNodeArray[!theNodeIndex];
130 theFarNode->thisNodeArray[theNodeIndex] = 0;
133 this->thisNodeArray[!theNodeIndex] == theNode
135 this->thisNodeArray[!theNodeIndex] = 0;
137 this->thisNodeArray[theNodeIndex] = theFarNode;
150 template <typename ThisValue>
153 Om::List<ThisValue>::Node
158 inline Type_::Node():
161 this->thisNodeArray[theFrontNodeIndex] = 0;
162 this->thisNodeArray[theBackNodeIndex] = 0;
166 inline typename Type_ * Type_::GetNode(NodeIndex
const theNodeIndex) {
167 return this->thisNodeArray[theNodeIndex];
171 inline typename Type_
const * Type_::GetNode(NodeIndex
const theNodeIndex)
const {
172 return this->thisNodeArray[theNodeIndex];
176 inline ThisValue & Type_::GetValue() {
177 return this->thisValue;
181 inline ThisValue
const & Type_::GetValue()
const {
182 return this->thisValue;
void swap(Om::Language::Expression &, Om::Language::Expression &)