functions invoked on all linked list items now support up to five additional arguments
[strongswan.git] / src / libstrongswan / utils / linked_list.h
index 07d7596..214558c 100644 (file)
@@ -46,6 +46,14 @@ typedef struct linked_list_t linked_list_t;
 typedef bool (*linked_list_match_t)(void *item, ...);
 
 /**
+ * Method to be invoked on elements in a linked list (used in invoke_* functions)
+ *
+ * @param item                 current list item
+ * @param ...                  user supplied data (only pointers, at most 5)
+ */
+typedef void (*linked_list_invoke_t)(void *item, ...);
+
+/**
  * Class implementing a double linked list.
  *
  * General purpose linked list. This list is not synchronized.
@@ -210,15 +218,17 @@ struct linked_list_t {
         * macro, e.g.: list->invoke(list, offsetof(object_t, method));
         * 
         * @param offset        offset of the method to invoke on objects
+        * @param ...           user data to supply to called function (limited to 5 arguments)
         */
-       void (*invoke_offset) (linked_list_t *this, size_t offset);
+       void (*invoke_offset) (linked_list_t *this, size_t offset, ...);
        
        /**
         * Invoke a function on all of the contained objects.
         * 
-        * @param offset        offset of the method to invoke on objects
+        * @param function      offset of the method to invoke on objects
+        * @param ...           user data to supply to called function (limited to 5 arguments)
         */
-       void (*invoke_function) (linked_list_t *this, void (*)(void*));
+       void (*invoke_function) (linked_list_t *this, linked_list_invoke_t function, ...);
        
        /**
         * Clones a list and its objects using the objects' clone method.