Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Avoid memcpy while retrieving data from dynars (speed up)
[simgrid.git] / src / xbt / dict_cursor.c
index 5e9269e..a4308fb 100644 (file)
@@ -206,8 +206,8 @@ gras_dict_cursor_get_or_free(gras_dict_cursor_t **cursor,
     return FALSE;
   }
     
-  gras_dynar_get((*cursor)->keys,     (*cursor)->pos,     key    );
-  gras_dynar_get((*cursor)->key_lens, (*cursor)->pos_len, &key_len);
+  *key    = gras_dynar_get_as((*cursor)->keys,     (*cursor)->pos,     char*);
+  key_len = gras_dynar_get_as((*cursor)->key_lens, (*cursor)->pos_len, int);
 
   errcode = gras_dictelm_get_ext((*cursor)->head, *key, key_len, data);
   if (errcode == mismatch_error) {
@@ -238,7 +238,7 @@ gras_dict_cursor_get_key(gras_dict_cursor_t  *p_cursor,
 
   TRY(__cursor_not_null(p_cursor));
 
-  gras_dynar_get(p_cursor->keys, p_cursor->pos - 1, key);
+  *key = gras_dynar_get_as(p_cursor->keys, p_cursor->pos - 1, char*);
 
   return errcode;
 }
@@ -258,8 +258,8 @@ gras_dict_cursor_get_data(gras_dict_cursor_t  *p_cursor,
 
   TRY(__cursor_not_null(p_cursor));
 
-  gras_dynar_get(p_cursor->keys,     p_cursor->pos-1,     &key    );
-  gras_dynar_get(p_cursor->key_lens, p_cursor->pos_len-1, &key_len);
+  key     = gras_dynar_get_as(p_cursor->keys,     p_cursor->pos-1,  char *);
+  key_len = gras_dynar_get_as(p_cursor->key_lens, p_cursor->pos_len-1, int);
 
   TRY(gras_dictelm_get_ext(p_cursor->head, key, key_len, data));