Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
cleanup around the free-like functions used as dealloc callbacks in dynar and dicts...
authormquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Tue, 20 May 2008 13:05:11 +0000 (13:05 +0000)
committermquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Tue, 20 May 2008 13:05:11 +0000 (13:05 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@5448 48e7efb5-ca39-0410-a469-dd3cf9ba447f

include/xbt/sysdep.h
src/xbt/xbt_main.c
src/xbt/xbt_os_time.c
src/xbt/xbt_str.c

index fd1ecf0..a0421e4 100644 (file)
@@ -105,9 +105,10 @@ static XBT_INLINE void *xbt_realloc(void*p,unsigned int s){
 #define xbt_free free /*nothing specific to do here. A poor valgrind replacement?*/
 /*#define xbt_free_fct free * replacement with the guareenty of being a function  FIXME:KILLME*/
 
-/** @brief like free 
-    @hideinitializer */
+/** @brief like free, but you can be sure that it is a function  */
 XBT_PUBLIC(void) xbt_free_f(void* p);
+/** @brief should be given a pointer to pointer, and frees the second one */
+XBT_PUBLIC(void) xbt_free_ref(void *d);
 
 /** @brief like calloc, but xbt_die() on error and don't memset to 0
     @hideinitializer */
index 4d3c1d6..1238139 100644 (file)
@@ -105,3 +105,15 @@ xbt_exit(){
     free(xbt_binary_name);
 }
 
+
+/* these two functions belong to xbt/sysdep.h, which have no corresponding .c file */
+/** @brief like free, but you can be sure that it is a function  */
+XBT_PUBLIC(void) xbt_free_f(void* p) {
+   free(p);
+}
+
+/** @brief should be given a pointer to pointer, and frees the second one */
+XBT_PUBLIC(void) xbt_free_ref(void *d){
+   free(*(void**)d);
+}
+
index de79d93..6e63660 100644 (file)
@@ -72,13 +72,6 @@ void xbt_os_sleep(double sec) {
 #endif
 }
 
-/** @brief like free 
-    @hideinitializer */
-XBT_PUBLIC(void) xbt_free_f(void* p) {
-   free(p);
-}
-
-
 /* TSC (tick-level) timers are said to be unreliable on SMP hosts and thus 
    disabled in SDL source code */ 
 
index 7d5cf08..221f7f4 100644 (file)
 #include "portable.h"
 #include "xbt/matrix.h" /* for the diff */
 
-static void free_string(void *d){
-  free(*(void**)d);
-}
-
 /**  @brief Strip whitespace (or other characters) from the end of a string.
  *
  * Strips the whitespaces from the end of s. 
@@ -191,7 +187,7 @@ xbt_str_strip_spaces(char *s) {
  */
 
 xbt_dynar_t xbt_str_split(const char *s, const char *sep) {
-  xbt_dynar_t res = xbt_dynar_new(sizeof(char*), free_string);
+  xbt_dynar_t res = xbt_dynar_new(sizeof(char*), xbt_free_ref);
   const char *p, *q;
   int done;
   const char* sep_dflt = " \t\n\r\x0B";
@@ -239,7 +235,7 @@ xbt_dynar_t xbt_str_split(const char *s, const char *sep) {
  * \return An array of dynars containing the string tokens
 */
 xbt_dynar_t xbt_str_split_str(const char *s, const char *sep) {
-  xbt_dynar_t res = xbt_dynar_new(sizeof(char*), free_string);
+  xbt_dynar_t res = xbt_dynar_new(sizeof(char*), xbt_free_ref);
   int done;
   const char *p, *q;
  
@@ -291,7 +287,7 @@ xbt_dynar_t xbt_str_split_str(const char *s, const char *sep) {
  */
 
 xbt_dynar_t xbt_str_split_quoted(const char *s) {
-  xbt_dynar_t res = xbt_dynar_new(sizeof(char*), free_string);
+  xbt_dynar_t res = xbt_dynar_new(sizeof(char*), xbt_free_ref);
   char *str; /* we have to copy the string before, to handle backslashes */
   char *beg, *end; /* pointers around the parsed chunk */
   int in_simple_quote=0, in_double_quote=0;
@@ -612,7 +608,7 @@ char *xbt_str_diff(char *a, char *b) {
   xbt_dynar_t db = xbt_str_split(b, "\n");
 
   xbt_matrix_t C = diff_build_LCS(da,db);
-  xbt_dynar_t diff = xbt_dynar_new(sizeof(char*),free_string);
+  xbt_dynar_t diff = xbt_dynar_new(sizeof(char*),xbt_free_ref);
   char *res=NULL;
   
   diff_build_diff(diff, C, da,db, xbt_dynar_length(da)-1, xbt_dynar_length(db)-1);