X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/6760cb07d6b57be16928d95339d71e57c4e24f36..749aa9b0446802ea8db0fb604154c37993ac7cf2:/src/include/surf/surf_resource.h diff --git a/src/include/surf/surf_resource.h b/src/include/surf/surf_resource.h index 78afcd72f4..963fdffd89 100644 --- a/src/include/surf/surf_resource.h +++ b/src/include/surf/surf_resource.h @@ -1,5 +1,5 @@ -/* Copyright (c) 2009, 2010. The SimGrid Team. +/* Copyright (c) 2009-2013. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -10,30 +10,36 @@ #define SURF_RESOURCE_H static XBT_INLINE -surf_resource_t surf_resource_new(size_t childsize, - surf_model_t model, char *name, xbt_dict_t props) { + surf_resource_t surf_resource_new(size_t childsize, + surf_model_t model, const char *name, + xbt_dict_t props, void_f_pvoid_t free_f) +{ surf_resource_t res = xbt_malloc0(childsize); res->model = model; - res->name = name; + res->name = xbt_strdup(name); res->properties = props; + res->free_f=free_f; return res; } -static XBT_INLINE void surf_resource_free(void* r) { +static XBT_INLINE void surf_resource_free(void *r) +{ surf_resource_t resource = r; - if (resource->name) - free(resource->name); - if (resource->properties) - xbt_dict_free(&resource->properties); + if(resource->free_f) + resource->free_f(r); + free(resource->name); + xbt_dict_free(&resource->properties); free(resource); } -static XBT_INLINE const char *surf_resource_name(const void *resource) { - return ((surf_resource_t)resource)->name; +static XBT_INLINE const char *surf_resource_name(const void *resource) +{ + return ((surf_resource_t) resource)->name; } -static XBT_INLINE xbt_dict_t surf_resource_properties(const void *resource) { - return ((surf_resource_t)resource)->properties; +static XBT_INLINE xbt_dict_t surf_resource_properties(const void *resource) +{ + return ((surf_resource_t) resource)->properties; } -#endif /* SURF_RESOURCE_H */ +#endif /* SURF_RESOURCE_H */