Added linked_list_t.has_more which checks if any elements follow an enumerator's...
authorTobias Brunner <tobias@strongswan.org>
Thu, 9 Jun 2011 07:53:12 +0000 (09:53 +0200)
committerTobias Brunner <tobias@strongswan.org>
Wed, 6 Jul 2011 07:43:46 +0000 (09:43 +0200)
src/libstrongswan/utils/linked_list.c
src/libstrongswan/utils/linked_list.h

index e4c1a33..59d416f 100644 (file)
@@ -164,6 +164,16 @@ METHOD(linked_list_t, reset_enumerator, void,
        enumerator->finished = FALSE;
 }
 
+METHOD(linked_list_t, has_more, bool,
+       private_linked_list_t *this, private_enumerator_t *enumerator)
+{
+       if (enumerator->current)
+       {
+               return enumerator->current->next != NULL;
+       }
+       return !enumerator->finished && this->first != NULL;
+}
+
 METHOD(linked_list_t, get_count, int,
        private_linked_list_t *this)
 {
@@ -537,6 +547,7 @@ linked_list_t *linked_list_create()
                        .get_count = _get_count,
                        .create_enumerator = _create_enumerator,
                        .reset_enumerator = (void*)_reset_enumerator,
+                       .has_more = (void*)_has_more,
                        .get_first = _get_first,
                        .get_last = _get_last,
                        .find_first = (void*)_find_first,
index cb3d53e..293ca86 100644 (file)
@@ -78,6 +78,14 @@ struct linked_list_t {
        void (*reset_enumerator)(linked_list_t *this, enumerator_t *enumerator);
 
        /**
+        * Checks if there are more elements following after the enumerator's
+        * current position.
+        *
+        * @param enumerator    enumerator to check
+        */
+       bool (*has_more)(linked_list_t *this, enumerator_t *enumerator);
+
+       /**
         * Inserts a new item at the beginning of the list.
         *
         * @param item          item value to insert in list