Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
New function: xbt_dict_cursor_set_data()
authormquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 5 May 2010 16:12:23 +0000 (16:12 +0000)
committermquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 5 May 2010 16:12:23 +0000 (16:12 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@7689 48e7efb5-ca39-0410-a469-dd3cf9ba447f

ChangeLog
include/xbt/dict.h
src/xbt/dict_cursor.c

index ac5eb25..f4a8bc0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,7 @@
-SimGrid (3.4.2) unstable; urgency=low
+SimGrid (3.5) unstable; urgency=low
+
+ XBT
+ * New function: xbt_dict_cursor_set_data()
 
  -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr> 
 
index 3cd77d2..ffd2174 100644 (file)
@@ -127,6 +127,8 @@ XBT_INLINE XBT_PUBLIC(void) xbt_dict_cursor_rewind(xbt_dict_cursor_t cursor);
 
 XBT_PUBLIC(char *) xbt_dict_cursor_get_key(xbt_dict_cursor_t cursor);
 XBT_PUBLIC(void *) xbt_dict_cursor_get_data(xbt_dict_cursor_t cursor);
+XBT_PUBLIC(void) xbt_dict_cursor_set_data(xbt_dict_cursor_t cursor,
+                                          void *data, void_f_pvoid_t free_ctn);
 
 XBT_PUBLIC(void) xbt_dict_cursor_first(const xbt_dict_t dict,
                                        xbt_dict_cursor_t * cursor);
index 5aad0a5..807e591 100644 (file)
@@ -186,3 +186,24 @@ XBT_INLINE void *xbt_dict_cursor_get_data(xbt_dict_cursor_t cursor)
 
   return cursor->current->content;
 }
+
+/**
+ * @brief Set current data
+ * @param cursor the cursor
+ * @param data the new data
+ * @param free_ctn the function to free the new data
+ */
+XBT_INLINE void xbt_dict_cursor_set_data(xbt_dict_cursor_t cursor,
+                                         void *data, void_f_pvoid_t free_ctn)
+{
+  __cursor_not_null(cursor);
+  if(cursor->current->free_f)
+    cursor->current->free_f(cursor->current->content);
+  
+  cursor->current->content = data;
+  cursor->current->free_f = free_ctn;
+  return;
+}
+
+
+