You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@etch.apache.org by fi...@apache.org on 2012/08/02 16:49:31 UTC
svn commit: r1368496 -
/incubator/etch/trunk/binding-cpp/runtime/lib/capu/modules/capu/include/capu/container/List.h
Author: fitzner
Date: Thu Aug 2 14:49:30 2012
New Revision: 1368496
URL: http://svn.apache.org/viewvc?rev=1368496&view=rev
Log:
ETCH-132 Capu: List Performance Optimization
Change-Id: I035eaad4162c6f98a7384eeba33068c0f017d064
Modified:
incubator/etch/trunk/binding-cpp/runtime/lib/capu/modules/capu/include/capu/container/List.h
Modified: incubator/etch/trunk/binding-cpp/runtime/lib/capu/modules/capu/include/capu/container/List.h
URL: http://svn.apache.org/viewvc/incubator/etch/trunk/binding-cpp/runtime/lib/capu/modules/capu/include/capu/container/List.h?rev=1368496&r1=1368495&r2=1368496&view=diff
==============================================================================
--- incubator/etch/trunk/binding-cpp/runtime/lib/capu/modules/capu/include/capu/container/List.h (original)
+++ incubator/etch/trunk/binding-cpp/runtime/lib/capu/modules/capu/include/capu/container/List.h Thu Aug 2 14:49:30 2012
@@ -26,7 +26,7 @@ namespace capu {
template <class T, class C = Comparator >
class List {
-
+
class ListNode {
public:
@@ -286,8 +286,7 @@ namespace capu {
template <class T, class C>
status_t List<T, C>::add(const T &element) {
- ListNode *listElem = NULL;
- listElem = new ListNode(element);
+ ListNode *listElem = new ListNode(element);
//NOT ALLOCATED
if (listElem == NULL) {
return CAPU_ENO_MEMORY;
@@ -313,8 +312,7 @@ namespace capu {
return CAPU_EINVAL;
}
- ListNode *listElem = NULL;
- listElem = new ListNode(element);
+ ListNode *listElem = new ListNode(element);
//NOT ALLOCATED
if (listElem == NULL) {
return CAPU_ENO_MEMORY;
@@ -338,23 +336,22 @@ namespace capu {
mTail->mNext = NULL;
++mSize;
return CAPU_OK;
+ } else if (index == 0) {
+ //add it to beginning of the list
+ listElem->mNext = mHead;
+ mHead->mPrev = listElem;
+ listElem->mPrev = NULL;
+ mHead = listElem;
+ ++mSize;
+ return CAPU_OK;
}
while (cursor != NULL) {
if (index == counter) {
-
- if (cursor == mHead) // add to the front of list
- {
- listElem->mNext = mHead;
- mHead->mPrev = listElem;
- listElem->mPrev = NULL;
- mHead = listElem;
- } else {
- listElem->mNext = cursor;
- listElem->mPrev = cursor->mPrev;
- if (cursor->mPrev != NULL)
- cursor->mPrev->mNext = listElem;
- cursor->mPrev = listElem;
- }
+ listElem->mNext = cursor;
+ listElem->mPrev = cursor->mPrev;
+ if (cursor->mPrev != NULL)
+ cursor->mPrev->mNext = listElem;
+ cursor->mPrev = listElem;
++mSize;
return CAPU_OK;
}
@@ -376,7 +373,7 @@ namespace capu {
if (mHead == NULL && mTail == NULL) {
mHead = listElem;
mTail = mHead;
- } else if (iter.mNextPosition == NULL){
+ } else if (iter.mNextPosition == NULL) {
listElem->mNext = NULL;
listElem->mPrev = mTail;
mTail->mNext = listElem;
@@ -394,7 +391,7 @@ namespace capu {
listElem->mPrev = iter.mNextPosition->mPrev;
listElem->mNext = iter.mNextPosition;
iter.mNextPosition->mPrev->mNext = listElem;
- }
+ }
iter.mNextPosition = listElem;
++mSize;
@@ -403,6 +400,7 @@ namespace capu {
}
//remove the specific element indicated by the index in the list
+
template <class T, class C>
status_t List<T, C>::removeAt(int_t index, T* elementOld) {
if ((index < 0) || (index >= mSize)) {