#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 */
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);
+}
+
#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.
*/
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";
* \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;
*/
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;
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);