Author: pnoltes
Date: Wed Jun  4 09:45:37 2014
New Revision: 1600068

URL: http://svn.apache.org/r1600068
Log:
CELIX-119: renamed linkedlist to linked_list

Added:
    incubator/celix/trunk/utils/private/src/linked_list.c
    incubator/celix/trunk/utils/public/include/linked_list.h
Removed:
    incubator/celix/trunk/utils/private/src/linkedlist.c
    incubator/celix/trunk/utils/public/include/linkedlist.h
Modified:
    incubator/celix/trunk/framework/private/src/bundle_archive.c

Modified: incubator/celix/trunk/framework/private/src/bundle_archive.c
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/src/bundle_archive.c?rev=1600068&r1=1600067&r2=1600068&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/src/bundle_archive.c (original)
+++ incubator/celix/trunk/framework/private/src/bundle_archive.c Wed Jun  4 
09:45:37 2014
@@ -122,8 +122,7 @@ celix_status_t bundleArchive_create(fram
                    status = CELIX_ENOMEM;
                } else {
                        apr_pool_pre_cleanup_register(mp, archive, 
bundleArchive_destroy);
-                       status = CELIX_DO_IF(status, 
apr_pool_create(&revisions_pool, mp));
-                       status = CELIX_DO_IF(status, 
linkedList_create(revisions_pool, &archive->revisions));
+                       status = linkedList_create(&archive->revisions));
                        if (status == CELIX_SUCCESS) {
                 archive->id = id;
                 archive->location = location;
@@ -140,9 +139,7 @@ celix_status_t bundleArchive_create(fram
                 bundleArchive_revise(archive, location, inputFile);
 
                 *bundle_archive = archive;
-            } else {
-                apr_pool_destroy(revisions_pool);
-                       }
+            }
                }
     }
 
@@ -155,6 +152,9 @@ static apr_status_t bundleArchive_destro
     apr_status_t status = APR_SUCCESS;
        bundle_archive_pt archive = archiveP;
        archive = NULL;
+       if (archive->revisions != NULL) {
+               free(archive->revisions)
+       }
 
        framework_logIfError(archive->logger, status, NULL, "Could not create 
archive");
 

Added: incubator/celix/trunk/utils/private/src/linked_list.c
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/utils/private/src/linked_list.c?rev=1600068&view=auto
==============================================================================
--- incubator/celix/trunk/utils/private/src/linked_list.c (added)
+++ incubator/celix/trunk/utils/private/src/linked_list.c Wed Jun  4 09:45:37 
2014
@@ -0,0 +1,248 @@
+/**
+ *Licensed to the Apache Software Foundation (ASF) under one
+ *or more contributor license agreements.  See the NOTICE file
+ *distributed with this work for additional information
+ *regarding copyright ownership.  The ASF licenses this file
+ *to you under the Apache License, Version 2.0 (the
+ *"License"); you may not use this file except in compliance
+ *with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *Unless required by applicable law or agreed to in writing,
+ *software distributed under the License is distributed on an
+ *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ *specific language governing permissions and limitations
+ *under the License.
+ */
+/*
+ * linkedlist.c
+ *
+ *  \date       Jul 16, 2010
+ *  \author            <a href="mailto:[email protected]";>Apache 
Celix Project Team</a>
+ *  \copyright Apache License, Version 2.0
+ */
+#include "celixbool.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "linked_list.h"
+#include "linked_list_private.h"
+
+celix_status_t linkedList_create(linked_list_pt *list) {
+       linked_list_pt linked_list = malloc(sizeof(*linked_list));
+       if (linked_list) {
+        linked_list->header = (linked_list_entry_pt) 
malloc(sizeof(*(linked_list->header)));
+        if (linked_list->header) {
+            linked_list->header->element = NULL;
+            linked_list->header->next = linked_list->header;
+            linked_list->header->previous = linked_list->header;
+            linked_list->size = 0;
+            linked_list->modificationCount = 0;
+
+            *list = linked_list;
+
+            return CELIX_SUCCESS;
+        }
+       }
+
+       return CELIX_ENOMEM;
+}
+
+celix_status_t linkedList_clone(linked_list_pt list, linked_list_pt *clone) {
+       celix_status_t status = CELIX_SUCCESS;
+
+       status = linkedList_create(clone);
+       if (status == CELIX_SUCCESS) {
+               struct linked_list_entry *e;
+        for (e = list->header->next; e != list->header; e = e->next) {
+            linkedList_addElement(*clone, e->element);
+        }
+       }
+
+       return status;
+}
+
+void * linkedList_getFirst(linked_list_pt list) {
+       if (list->size == 0) {
+               return NULL;
+       }
+       return list->header->next->element;
+}
+
+void * linkedList_getLast(linked_list_pt list) {
+       if (list->size == 0) {
+               return NULL;
+       }
+       return list->header->previous->element;
+}
+
+void * linkedList_removeFirst(linked_list_pt list) {
+       return linkedList_removeEntry(list, list->header->next);
+}
+
+void * linkedList_removeLast(linked_list_pt list) {
+       return linkedList_removeEntry(list, list->header->previous);
+}
+
+void linkedList_addFirst(linked_list_pt list, void * element) {
+       linkedList_addBefore(list, element, list->header->next);
+}
+
+void linkedList_addLast(linked_list_pt list, void * element) {
+       linkedList_addBefore(list, element, list->header);
+}
+
+bool linkedList_contains(linked_list_pt list, void * element) {
+       return linkedList_indexOf(list, element) != 0;
+}
+
+int linkedList_size(linked_list_pt list) {
+       return list->size;
+}
+
+bool linkedList_isEmpty(linked_list_pt list) {
+       return linkedList_size(list) == 0;
+}
+
+bool linkedList_addElement(linked_list_pt list, void * element) {
+       linkedList_addBefore(list, element, list->header);
+       return true;
+}
+
+bool linkedList_removeElement(linked_list_pt list, void * element) {
+       if (element == NULL) {
+               linked_list_entry_pt entry;
+               for (entry = list->header->next; entry != list->header; entry = 
entry->next) {
+                       if (entry->element == NULL) {
+                               linkedList_removeEntry(list, entry);
+                               return true;
+                       }
+               }
+       } else {
+               linked_list_entry_pt entry;
+               for (entry = list->header->next; entry != list->header; entry = 
entry->next) {
+                       if (element == entry->element) {
+                               linkedList_removeEntry(list, entry);
+                               return true;
+                       }
+               }
+       }
+       return false;
+}
+
+void linkedList_clear(linked_list_pt list) {
+       linked_list_entry_pt entry = list->header->next;
+       while (entry != list->header) {
+               linked_list_entry_pt next = entry->next;
+               entry->next = entry->previous = NULL;
+               // free(entry->element);
+               entry->element = NULL;
+               free(entry);
+               entry = next;
+       }
+       list->header->next = list->header->previous = list->header;
+       list->size = 0;
+       list->modificationCount++;
+}
+
+void * linkedList_get(linked_list_pt list, int index) {
+       return linkedList_entry(list, index)->element;
+}
+void * linkedList_set(linked_list_pt list, int index, void * element) {
+       linked_list_entry_pt entry = linkedList_entry(list, index);
+       void * old = entry->element;
+       entry->element = element;
+       return old;
+}
+
+void linkedList_addIndex(linked_list_pt list, int index, void * element) {
+       linkedList_addBefore(list, element, (index == list->size ? list->header 
: linkedList_entry(list, index)));
+}
+
+void * linkedList_removeIndex(linked_list_pt list, int index) {
+       return linkedList_removeEntry(list, linkedList_entry(list, index));
+}
+
+linked_list_entry_pt linkedList_entry(linked_list_pt list, int index) {
+       linked_list_entry_pt entry;
+       int i;
+       if (index < 0 || index >= list->size) {
+               return NULL;
+       }
+
+       entry = list->header;
+       if (index < (list->size >> 1)) {
+               for (i = 0; i <= index; i++) {
+                       entry = entry->next;
+               }
+       } else {
+               for (i = list->size; i > index; i--) {
+                       entry = entry->previous;
+               }
+       }
+       return entry;
+}
+
+int linkedList_indexOf(linked_list_pt list, void * element) {
+       int index = 0;
+       if (element == NULL) {
+               linked_list_entry_pt entry;
+               for (entry = list->header->next; entry != list->header; entry = 
entry->next) {
+                       if (entry->element == NULL) {
+                               return index;
+                       }
+                       index++;
+               }
+       } else {
+               linked_list_entry_pt entry;
+               for (entry = list->header->next; entry != list->header; entry = 
entry->next) {
+                       if (element == entry->element) {
+                               return index;
+                       }
+                       index++;
+               }
+       }
+       return -1;
+}
+
+linked_list_entry_pt linkedList_addBefore(linked_list_pt list, void * element, 
linked_list_entry_pt entry) {
+    linked_list_entry_pt new = NULL;
+
+    new = malloc(sizeof(*new));
+    if (new != NULL) {
+
+        new->element = element;
+        new->next = entry;
+        new->previous = entry->previous;
+
+        new->previous->next = new;
+        new->next->previous = new;
+
+        list->size++;
+        list->modificationCount++;
+    }
+
+       return new;
+}
+
+void * linkedList_removeEntry(linked_list_pt list, linked_list_entry_pt entry) 
{
+    void * result;
+       if (entry == list->header) {
+               return NULL;
+       }
+
+       result = entry->element;
+
+       entry->previous->next = entry->next;
+       entry->next->previous = entry->previous;
+
+       entry->next = entry->previous = NULL;
+       free(entry);
+
+       list->size--;
+       list->modificationCount++;
+
+       return result;
+}

Added: incubator/celix/trunk/utils/public/include/linked_list.h
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/utils/public/include/linked_list.h?rev=1600068&view=auto
==============================================================================
--- incubator/celix/trunk/utils/public/include/linked_list.h (added)
+++ incubator/celix/trunk/utils/public/include/linked_list.h Wed Jun  4 
09:45:37 2014
@@ -0,0 +1,63 @@
+/**
+ *Licensed to the Apache Software Foundation (ASF) under one
+ *or more contributor license agreements.  See the NOTICE file
+ *distributed with this work for additional information
+ *regarding copyright ownership.  The ASF licenses this file
+ *to you under the Apache License, Version 2.0 (the
+ *"License"); you may not use this file except in compliance
+ *with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *Unless required by applicable law or agreed to in writing,
+ *software distributed under the License is distributed on an
+ *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ *specific language governing permissions and limitations
+ *under the License.
+ */
+/*
+ * linked_list.h
+ *
+ *  \date       Jul 16, 2010
+ *  \author            <a href="mailto:[email protected]";>Apache 
Celix Project Team</a>
+ *  \copyright Apache License, Version 2.0
+ */
+
+#ifndef LINKED_LIST_H_
+#define LINKED_LIST_H_
+
+
+#include "celixbool.h"
+#include "celix_errno.h"
+#include "exports.h"
+
+typedef struct linked_list_entry * linked_list_entry_pt;
+typedef struct linked_list * linked_list_pt;
+
+UTILS_EXPORT celix_status_t linkedList_create(linked_list_pt *list);
+UTILS_EXPORT celix_status_t linkedList_destroy(linked_list_pt list);
+UTILS_EXPORT celix_status_t linkedList_clone(linked_list_pt list, 
linked_list_pt *clone);
+UTILS_EXPORT void * linkedList_getFirst(linked_list_pt list);
+UTILS_EXPORT void * linkedList_getLast(linked_list_pt list);
+UTILS_EXPORT void * linkedList_removeFirst(linked_list_pt list);
+UTILS_EXPORT void * linkedList_removeLast(linked_list_pt list);
+UTILS_EXPORT void linkedList_addFirst(linked_list_pt list, void * element);
+UTILS_EXPORT void linkedList_addLast(linked_list_pt list, void * element);
+UTILS_EXPORT bool linkedList_contains(linked_list_pt list, void * element);
+UTILS_EXPORT int linkedList_size(linked_list_pt list);
+UTILS_EXPORT bool linkedList_isEmpty(linked_list_pt list);
+UTILS_EXPORT bool linkedList_addElement(linked_list_pt list, void * element);
+UTILS_EXPORT bool linkedList_removeElement(linked_list_pt list, void * 
element);
+UTILS_EXPORT void linkedlist_clear(linked_list_pt list);
+UTILS_EXPORT void * linkedList_get(linked_list_pt list, int index);
+UTILS_EXPORT void * linkedList_set(linked_list_pt list, int index, void * 
element);
+UTILS_EXPORT void linkedList_addIndex(linked_list_pt list, int index, void * 
element);
+UTILS_EXPORT void * linkedList_removeIndex(linked_list_pt list, int index);
+UTILS_EXPORT linked_list_entry_pt linkedList_entry(linked_list_pt list, int 
index);
+UTILS_EXPORT int linkedList_indexOf(linked_list_pt list, void * element);
+UTILS_EXPORT linked_list_entry_pt linkedList_addBefore(linked_list_pt list, 
void * element, linked_list_entry_pt entry);
+UTILS_EXPORT void * linkedList_removeEntry(linked_list_pt list, 
linked_list_entry_pt entry);
+
+
+#endif /* LINKED_LIST_H_ */


Reply via email to