diff options
author | Ruslan Mustakov <r.mustakov@gmail.com> | 2017-08-13 15:37:56 +0700 |
---|---|---|
committer | Ruslan Mustakov <r.mustakov@gmail.com> | 2017-09-05 12:45:23 +0700 |
commit | 269203a02261d53eb87817c8692bc56f0cf4e3dd (patch) | |
tree | ba40669b6dffdefba0d37323e1b5f6118233f1ae /core/list.h | |
parent | e611ff5f0110210221a6f90250bdd65f5fb3ff2d (diff) | |
download | redot-engine-269203a02261d53eb87817c8692bc56f0cf4e3dd.tar.gz |
Provide NativeScript properties in definition order
Diffstat (limited to 'core/list.h')
-rw-r--r-- | core/list.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/core/list.h b/core/list.h index a67287a9ab..da201e9868 100644 --- a/core/list.h +++ b/core/list.h @@ -291,6 +291,54 @@ public: erase(_data->first); } + Element *insert_after(Element *p_element, const T &p_value) { + CRASH_COND(p_element && (!_data || p_element->data != _data)); + + if (!p_element) { + return push_back(p_value); + } + + Element *n = memnew_allocator(Element, A); + n->value = (T &)p_value; + n->prev_ptr = p_element; + n->next_ptr = p_element->next_ptr; + n->data = _data; + + if (!p_element->next_ptr) { + _data->last = n; + } + + p_element->next_ptr = n; + + _data->size_cache++; + + return n; + } + + Element *insert_before(Element *p_element, const T &p_value) { + CRASH_COND(p_element && (!_data || p_element->data != _data)); + + if (!p_element) { + return push_back(p_value); + } + + Element *n = memnew_allocator(Element, A); + n->value = (T &)p_value; + n->prev_ptr = p_element->prev_ptr; + n->next_ptr = p_element; + n->data = _data; + + if (!p_element->prev_ptr) { + _data->first = n; + } + + p_element->prev_ptr = n; + + _data->size_cache++; + + return n; + } + /** * find an element in the list, */ |