00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 INLINE LinkedListNode::
00022 LinkedListNode() {
00023 #ifndef NDEBUG
00024 _next = NULL;
00025 _prev = NULL;
00026 #endif
00027 }
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 INLINE LinkedListNode::
00038 LinkedListNode(bool) {
00039 _next = this;
00040 _prev = this;
00041 }
00042
00043
00044
00045
00046
00047
00048 INLINE LinkedListNode::
00049 ~LinkedListNode() {
00050 nassertv((_next == NULL && _prev == NULL) || (_next == this && _prev == this));
00051 }
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061 INLINE bool LinkedListNode::
00062 is_on_list() const {
00063 return (_next != NULL);
00064 }
00065
00066
00067
00068
00069
00070
00071
00072 INLINE void LinkedListNode::
00073 remove_from_list() {
00074 nassertv(_prev != NULL && _next != NULL);
00075 nassertv(_prev->_next == this && _next->_prev == this);
00076 _prev->_next = _next;
00077 _next->_prev = _prev;
00078 #ifndef NDEBUG
00079 _next = NULL;
00080 _prev = NULL;
00081 #endif
00082 }
00083
00084
00085
00086
00087
00088
00089
00090 INLINE void LinkedListNode::
00091 insert_before(LinkedListNode *node) {
00092 nassertv(node->_prev != NULL && node->_prev->_next == node && node->_next->_prev == node);
00093 nassertv(_prev == (LinkedListNode *)NULL &&
00094 _next == (LinkedListNode *)NULL);
00095 _prev = node->_prev;
00096 _next = node;
00097 _prev->_next = this;
00098 node->_prev = this;
00099 }
00100
00101
00102
00103
00104
00105
00106
00107 INLINE void LinkedListNode::
00108 insert_after(LinkedListNode *node) {
00109 nassertv(node->_prev != NULL && node->_prev->_next == node && node->_next->_prev == node);
00110 nassertv(_prev == (LinkedListNode *)NULL &&
00111 _next == (LinkedListNode *)NULL);
00112 _next = node->_next;
00113 _prev = node;
00114 _next->_prev = this;
00115 node->_next = this;
00116 }
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126 INLINE void LinkedListNode::
00127 take_list_from(LinkedListNode *other_root) {
00128 other_root->_next->_prev = _prev;
00129 _prev->_next = other_root->_next;
00130 other_root->_prev->_next = this;
00131 _prev = other_root->_prev;
00132
00133 other_root->_next = other_root;
00134 other_root->_prev = other_root;
00135 }