summaryrefslogtreecommitdiffstats
path: root/core/list.h
diff options
context:
space:
mode:
authorRuslan Mustakov <r.mustakov@gmail.com>2017-08-13 15:37:56 +0700
committerRuslan Mustakov <r.mustakov@gmail.com>2017-09-05 12:45:23 +0700
commit269203a02261d53eb87817c8692bc56f0cf4e3dd (patch)
treeba40669b6dffdefba0d37323e1b5f6118233f1ae /core/list.h
parente611ff5f0110210221a6f90250bdd65f5fb3ff2d (diff)
downloadredot-engine-269203a02261d53eb87817c8692bc56f0cf4e3dd.tar.gz
Provide NativeScript properties in definition order
Diffstat (limited to 'core/list.h')
-rw-r--r--core/list.h48
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,
*/