Add a linked list constructor initializing from an enumerator
authorMartin Willi <martin@revosec.ch>
Tue, 11 Sep 2012 08:40:10 +0000 (10:40 +0200)
committerMartin Willi <martin@revosec.ch>
Tue, 11 Sep 2012 14:18:28 +0000 (16:18 +0200)
src/libstrongswan/utils/linked_list.c
src/libstrongswan/utils/linked_list.h

index 59d416f..6b5f5f8 100644 (file)
@@ -572,3 +572,22 @@ linked_list_t *linked_list_create()
 
        return &this->public;
 }
+
+/*
+ * See header.
+ */
+linked_list_t *linked_list_create_from_enumerator(enumerator_t *enumerator)
+{
+       linked_list_t *list;
+       void *item;
+
+       list = linked_list_create();
+
+       while (enumerator->enumerate(enumerator, &item))
+       {
+               list->insert_last(list, item);
+       }
+       enumerator->destroy(enumerator);
+
+       return list;
+}
index 293ca86..b5b29e4 100644 (file)
@@ -299,4 +299,12 @@ struct linked_list_t {
  */
 linked_list_t *linked_list_create(void);
 
+/**
+ * Creates a linked list from an enumerator.
+ *
+ * @enumerator enumerator over void*, gets destroyed
+ * @return             linked_list_t object, containing enumerated values
+ */
+linked_list_t *linked_list_create_from_enumerator(enumerator_t *enumerator);
+
 #endif /** LINKED_LIST_H_ @}*/