diff options
Diffstat (limited to 'core/self_list.h')
-rw-r--r-- | core/self_list.h | 53 |
1 files changed, 24 insertions, 29 deletions
diff --git a/core/self_list.h b/core/self_list.h index aec3c33adc..45986d77e9 100644 --- a/core/self_list.h +++ b/core/self_list.h @@ -31,78 +31,74 @@ #include "typedefs.h" -template<class T> +template <class T> class SelfList { public: - - - class List { - SelfList<T> *_first; + public: void add(SelfList<T> *p_elem) { ERR_FAIL_COND(p_elem->_root); - p_elem->_root=this; - p_elem->_next=_first; - p_elem->_prev=NULL; + p_elem->_root = this; + p_elem->_next = _first; + p_elem->_prev = NULL; if (_first) - _first->_prev=p_elem; - _first=p_elem; + _first->_prev = p_elem; + _first = p_elem; } void remove(SelfList<T> *p_elem) { - ERR_FAIL_COND(p_elem->_root!=this); + ERR_FAIL_COND(p_elem->_root != this); if (p_elem->_next) { - p_elem->_next->_prev=p_elem->_prev; + p_elem->_next->_prev = p_elem->_prev; } if (p_elem->_prev) { - p_elem->_prev->_next=p_elem->_next; + p_elem->_prev->_next = p_elem->_next; } - if (_first==p_elem) { + if (_first == p_elem) { - _first=p_elem->_next; + _first = p_elem->_next; } - p_elem->_next=NULL; - p_elem->_prev=NULL; - p_elem->_root=NULL; + p_elem->_next = NULL; + p_elem->_prev = NULL; + p_elem->_root = NULL; } _FORCE_INLINE_ SelfList<T> *first() { return _first; } _FORCE_INLINE_ const SelfList<T> *first() const { return _first; } - _FORCE_INLINE_ List() { _first=NULL; } - _FORCE_INLINE_ ~List() { ERR_FAIL_COND(_first!=NULL); } - + _FORCE_INLINE_ List() { _first = NULL; } + _FORCE_INLINE_ ~List() { ERR_FAIL_COND(_first != NULL); } }; + private: List *_root; T *_self; SelfList<T> *_next; SelfList<T> *_prev; -public: +public: _FORCE_INLINE_ bool in_list() const { return _root; } _FORCE_INLINE_ SelfList<T> *next() { return _next; } _FORCE_INLINE_ SelfList<T> *prev() { return _prev; } _FORCE_INLINE_ const SelfList<T> *next() const { return _next; } _FORCE_INLINE_ const SelfList<T> *prev() const { return _prev; } - _FORCE_INLINE_ T*self() const { return _self; } - + _FORCE_INLINE_ T *self() const { return _self; } _FORCE_INLINE_ SelfList(T *p_self) { - _self=p_self; - _next=NULL; - _prev=NULL; - _root=NULL; + _self = p_self; + _next = NULL; + _prev = NULL; + _root = NULL; } _FORCE_INLINE_ ~SelfList() { @@ -110,7 +106,6 @@ public: if (_root) _root->remove(this); } - }; #endif // SELF_LIST_H |